Algorithm 计算时间加权移动平均

Algorithm 计算时间加权移动平均,algorithm,time-series,mean,moving-average,Algorithm,Time Series,Mean,Moving Average,我有一个股票价格的时间序列,并希望计算10分钟窗口内的移动平均值(见下图)。由于价格波动是偶尔发生的(即它们不是周期性的),计算时间加权移动平均值似乎是最公平的 图中有四种价格变化:A、B、C和D,后三种价格变化发生在窗口内。请注意,由于B只出现在窗口中的一段时间内(例如3分钟),因此A的值仍然有助于计算 事实上,据我所知,计算应该完全基于A、B和C(而不是D)的值以及它们与下一点之间的持续时间(或者在A的情况下:时间窗口开始与B之间的持续时间)。最初,D不会产生任何影响,因为其时间权重为零这

我有一个股票价格的时间序列,并希望计算10分钟窗口内的移动平均值(见下图)。由于价格波动是偶尔发生的(即它们不是周期性的),计算时间加权移动平均值似乎是最公平的

图中有四种价格变化:A、B、C和D,后三种价格变化发生在窗口内。请注意,由于B只出现在窗口中的一段时间内(例如3分钟),因此A的值仍然有助于计算

事实上,据我所知,计算应该完全基于A、B和C(而不是D)的值以及它们与下一点之间的持续时间(或者在A的情况下:时间窗口开始与B之间的持续时间)。最初,D不会产生任何影响,因为其时间权重为零这是否正确?

假设这是正确的,我担心的是移动平均线将比非加权计算“滞后”更多(这将立即解释D的值),但是,非加权计算有其自身的缺点:

  • 尽管不在时间窗口内,“A”对结果的影响与其他价格一样大
  • 突然出现的快速价格波动将严重影响移动平均线(尽管这可能是可取的?)

有人能就哪种方法看起来最好,或者是否有值得考虑的替代(或混合)方法提供建议吗?

您的推理是正确的。你想用平均值做什么?不知道很难给出任何建议

也许另一种选择是考虑你的运行平均值A,当一个新的值V进来时,计算新的平均值a’be(1-c)*a+c*v,其中c介于0和1之间。这样,较新的蜱虫影响更大,而旧蜱虫的影响会随着时间的推移而消失。你甚至可以让c取决于从上一个滴答声开始的时间(随着滴答声越来越近,c变得越来越小)


在第一个模型(加权)中,平均值每秒都不同(因为旧读数的权重较低,而新读数的权重较高),因此它总是在变化,这可能是不可取的。在第二种方法中,随着新价格的引入和旧价格从窗口消失,价格会突然上涨。

是的,移动平均线当然会滞后。这是因为它的价值是历史信息:它总结了过去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。估计量将开始以指数方式向B移动(如电容器的加热/冷却、充电/放电等)。首先,它会有一个大的跳跃,然后是越来越小的增量。它移动的速度取决于K。如果K为0,估计量根本不会移动,如果K为1,它会立即移动。通过K,你可以调整你给估计量相对于新样本的权重。隐式地给最近的样本更多的权重,样本window基本上可以扩展到无穷远:E基于曾经发生过的每个值样本。当然,非常古老的样本对当前值几乎没有影响。这是一个非常简单、漂亮的方法。

这两个建议来自离散世界,但您可能会从您的特定案例中找到灵感

在这种方法中,你引入了平滑因子(α)∈ [0;1]),允许您更改最近元素对“预测”值的影响(较旧元素的权重按指数递减):

st=αxt-1+(1+α)st-1;s1=x0

我创建了一个简单的动画,演示了指数平滑如何跟踪具有三个不同α={0.3,0.6,0.9}的统一时间序列
x=[1 1 1 3 2 2 1]


还可以查看一些强化学习技巧(查看不同的折扣方法),例如。

在扩展Tom的答案时,可以将考虑刻度之间间距的公式形式化(接近刻度的权重相对较低):

eman=u*eman-1+(v-u)*xn-1+(1-v)*xn

其中:

a=(tn-tn-1)/T
也就是说,a是到达时间的增量与平均间隔的比率

u=e-a

v=1(使用上一点),或
v=(1-u)/a(线性插值>,或
v=u(下一点)


更多信息见《高频金融导论》一书第59页。

这与Tom的答案相同。他计算估计器新值的公式是
(1-K)E+KS
,这在代数上与
E+K(s-E)
:这是一个“线性混合函数”在当前估计器
E
和新样本
S
之间,其中