计算时间加权移动平均线

Ada*_*ski 5 algorithm time-series mean moving-average

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

时间序列

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

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

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

  • 尽管超出时间窗口,"A"对结果的影响与其他价格一样多.
  • 突如其来的快速价格嘀嗒声将严重偏向移动平均线(虽然这可能是可取的?)

任何人都可以提供关于哪种方法看起来最好的建议,或者是否有值得考虑的替代(或混合)方法?

Ano*_*ous 9

这两个建议来自离散的世界,但您可能会发现您的特定案例的灵感.

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

s t =αxt -1 +(1 +α)s t-1 ; s 1 = x 0

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

在此输入图像描述

还要看一些强化学习技术(看看不同的折扣方法),例如TD学习Q-Learning.


Ray*_*der 6

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

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(线性插值>,或
v = u(下一个点)

更多信息请参见《高频金融简介》一书的第 59 页。


Tom*_*den 4

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

也许另一种选择是考虑您的运行平均值 A,当出现新值 V 时,将新平均值 A' 计算为 (1-c)*A+c*V,其中 c 介于 0 和 1 之间。最近的蜱虫的影响力更强,而旧的蜱虫的影响随着时间的推移而消失。您甚至可以让 c 取决于自上一个刻度以来的时间(随着刻度越来越近,c 会变小)。

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