我有一个时间序列的股票价格,并希望在十分钟的窗口内计算移动平均线(见下图)。由于价格滴答偶尔发生(即它们不是周期性的),计算时间加权移动平均线似乎是最公平的。
在图中有四个价格变化:A,B,C和D,后三个发生在窗口内。请注意,因为B只在窗口中出现一段时间(例如3分钟),所以A的值仍然有助于计算。
事实上,据我所知,计算应该完全基于A,B和C(不 D)的值以及它们与下一个点之间的持续时间(或者A的情况:时间窗口开始和B)之间的持续时间。最初D不会有任何影响,因为它的时间加权将为零。 这是正确的吗?
假设这是正确的,我担心的是移动平均线将比非加权计算“滞后”更多(这将直接解释D的值),但是,非加权计算有其自身的缺点:
任何人都可以就哪种方法看起来最好,或者是否有值得考虑的替代(或混合)方法提出任何建议?
答案 0 :(得分:9)
这两个建议来自离散的世界,但你可能会从你的特定情况中找到灵感。
看看exponential smoothing。在这种方法中,您引入了平滑因子(α∈[0; 1]),允许您改变最近元素对“预测”值的影响(旧元素被指定为指数递减权重):
取值<子>吨子> =αX<子> T 1 子> +(1 +α)类<子> T 1 子>;小号<子> 1 子> = X <子> 0 子>
我创建了一个简单的动画,指出指数平滑将如何跟踪具有三个不同α= {0.3,0.6,0.9}的统一时间序列x=[1 1 1 1 3 3 2 2 2 1]
:
还要看一些强化学习技巧(查看不同的折扣方法),例如TD-learning和Q-Learning。
答案 1 :(得分:4)
你的推理是正确的。你想用什么平均值呢?不知道提供任何建议很难。
也许另一种方法是考虑你的跑动平均值A,当一个新值V进来时,计算新的平均值A'为(1-c)* A + c * V,其中c在0和0之间这样,最近的蜱虫具有更强的影响力,并且旧蜱虫的效果随着时间的推移而消散。您甚至可以依赖于自上次滴答之后的时间(随着滴答越来越近,c越小)。
在第一个模型(加权)中,平均值每秒都不同(因为旧读数的重量较轻,新读数较高)所以它总是在变化,这可能是不可取的。采用第二种方法,随着新价格的推出以及旧价格从窗口消失,价格突然上涨。
答案 2 :(得分:3)
是的,移动平均线当然会滞后。这是因为它的价值是历史信息:它总结了过去10分钟内的价格样本。这种平均本质上是“滞后”。它有一个内置的五分钟偏移(因为没有偏移的盒子平均值将基于+/- 5分钟,以样本为中心)。如果价格长时间处于A,然后一次改为B,则平均值需要5分钟才能到达(A + B)/ 2。
如果要平滑/平滑函数而不在域中进行任何移位,则权重必须均匀分布在采样点周围。但这对于实时发生的价格是不可能的,因为未来的数据不可用。
如果您希望最近的更改(如D)产生更大的影响,请使用平均值,这会对最近的数据或更短的时间段或两者都给予更大的权重。
平滑数据的一种方法是使用单个累加器(“平滑估计器”)E
并定期采样数据S
。 E
更新如下:
E = E + K(S - E)
即。当前价格样本S和估计量E之间的差值的分数K(在0和1之间)被添加到E.假设价格已经长时间处于A,因此E处于A,然后突然变化估计器将以指数方式开始向B方向移动(如加热/冷却,电容器的充电/放电等)。首先它会产生一个大的跳跃,然后是越来越小的增量。它移动的速度取决于K.如果K为0,则估计器根本不移动,如果K为1,则它立即移动。使用K,您可以调整估算器与新样本的重量。隐含地给予更近期样本更多权重,并且样本窗口基本上扩展到无穷大:E基于曾经发生的每个值样本。虽然当然很老的几乎没有影响当前的价值。一种非常简单,美观的方法。
答案 3 :(得分:3)
在扩展汤姆的答案时,考虑到蜱之间间距的公式可以正式化(关闭蜱的比例相应较低):
ema n = u * ema n-1 +(v - u)* x n-1 +(1 - v) * x n
其中:
a =(t n - t n-1 )/ T
也就是说,a是到达时间的Δ与平均间隔的比率
和
u = e -a
和
v = 1(使用前一点)或
v =(1-u)/ a(线性插值&gt;或
v = u(下一点)
更多信息请参阅“高频金融概论”一书的第59页。