5

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

时间序列

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

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

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

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

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

4

4 回答 4

9

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

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

s t =αx t-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-learningQ-Learning

于 2012-04-14T21:57:36.567 回答
4

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

也许另一种选择是考虑您的运行平均值 A,当出现新值 V 时,计算新平均值 A' 为 (1-c)*A+c*V,其中 c 介于 0 和 1 之间。这方式较新的蜱具有更强的影响力,而旧蜱的影响会随着时间的推移而消散。您甚至可以使 c 取决于自上一个滴答声以来的时间(随着滴答声越来越近,c 变得更小)。

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

于 2012-04-14T21:50:38.270 回答
4

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

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 页。

于 2013-12-22T23:25:09.387 回答
3

是的,移动平均线当然会滞后。这是因为它的价值是历史信息:它总结了过去 10 分钟的价格样本。这种平均值本质上是“滞后的”。它有一个内置的五分钟偏移量(因为没有偏移量的框平均值将基于 +/- 5 分钟,以样本为中心)。如果价格长期处于 A 位置,然后再变化一次到 B,则平均需要 5 分钟才能达到 (A + B) / 2。

如果要在域中不发生任何变化的情况下对函数进行平均/平滑,则权重必须均匀分布在样本点周围。但这对于实时发生的价格是不可能的,因为未来的数据不可用。

如果您希望最近的更改(如 D)产生更大的影响,请使用对最近数据或更短时间段赋予更大权重的平均值,或两者兼而有之。

平滑数据的一种方法是简单地使用单个累加器(“平滑估计器”)E并定期对数据进行采样SE更新如下:

E = E + K(S - E)

即当前价格样本S与估计量E之差的一小部分K(0到1之间)加到E中。假设价格已经在A很长时间了,所以E在A,然后突然变为 B。估计器将开始以指数方式向 B 移动(如加热/冷却、电容器的充电/放电等)。一开始它会跳得很大,然后增量越来越小。它移动的速度取决于 K。如果 K 为 0,则估计器根本不会移动,如果 K 为 1,它会立即移动。使用 K,您可以调整对估计器与新样本的权重。更多的权重被隐式地赋予最近的样本,并且样本窗口基本上延伸到无穷大:E 基于曾经出现的每个值样本。当然,非常旧的那些对当前值几乎没有影响。一个非常简单,漂亮的方法。

于 2012-04-14T21:50:50.843 回答