移动平均 (英语:moving average ,缩写:MA ),又称滚动平均值 、滑动平均 ,在统计学 中是一种通过创建整个数据集中不同子集的一系列平均数来分析数据点的计算方法。它也是有限脉冲响应滤波器的一种。变化包括: 简单移动平均、指数移动平均、加权移动平均,以及累积移动平均(描述如下)。
两条移动平均线的例子
给定一个数列和一个固定子集大小,移动平均数的第一个元素是由数列的初始固定子集的平均值得到的。然后通过“向前移位”修改子集,即排除序列的第一个数,并在子集中包含下一个值。
移动平均通常与时间序列 数据一起使用,以消除短期波动,突出长期趋势或周期。短期和长期之间的阈值取决于应用,移动平均的参数将相应地设置。例如,它通常用于对财务数据进行技术分析 ,如股票价格 、收益率或交易量。它也用于经济学 中研究国内生产总值、就业或其他宏观经济时间序列。数学上,移动平均是卷积 的一种类型,因此它可以被看作是用于信号处理 的低通滤波器 的一个例子。当与非时间序列数据一起使用时,移动平均滤波器的频率分量更高,但与时间没有任何特定的联系,尽管通常暗含某种排序。简单地看,它可以看作是把数据变得更平滑。
台股加权指数技术线图: 上图为K线 和其简单移动平均线(SMA,周期:5,10,20,60,120,240); 下图为成交量和其均量(周期:5,20)。
在金融应用中,一个简单移动平均 (SMA )是以前 n 个数据的未加权平均数 。然而,在科学和工程中,平均值通常取自中心值两边相等数量的数据。这样可以确保平均值的变化与数据的变化一致,而不是随时间变化。
例如,对于 n 天的收盘价样本,简单等权重移动平均是前 n 天收盘价的平均值。如果收盘价为
p
M
,
p
M
−
1
,
…
,
p
M
−
(
n
−
1
)
{\displaystyle p_{M},p_{M-1},\dots ,p_{M-(n-1)}}
,则公式为
p
¯
SM
=
p
M
+
p
M
−
1
+
⋯
+
p
M
−
(
n
−
1
)
n
=
1
n
∑
i
=
0
n
−
1
p
M
−
i
.
{\displaystyle {\begin{aligned}{\overline {p}}_{\text{SM}}&={\frac {p_{M}+p_{M-1}+\cdots +p_{M-(n-1)}}{n}}\\&={\frac {1}{n}}\sum _{i=0}^{n-1}p_{M-i}.\end{aligned}}}
当计算下一天的移动平均的时候,就会在求和中加入一个新值,剔除一个旧值,无需把所有数值重新加一遍:
p
¯
SM
=
p
¯
SM
,
prev
+
1
n
(
p
M
−
p
M
−
n
)
.
{\displaystyle {\overline {p}}_{\text{SM}}={\overline {p}}_{{\text{SM}},{\text{prev}}}+{\frac {1}{n}}(p_{M}-p_{M-n}).}
所选择的时间段取决于利率变动的类型,如短期、中期或长期。从金融角度来看,移动平均线水平可以解释为市场下跌时的支撑,或者市场上涨时的阻力。
如果使用的数据不以平均值为中心,那么简单移动平均就会落后于最新的数据点一半的采样宽度。旧数据点的丢掉和新数据点的加入也会对SMA造成较大影响。SMA的一个特点是,如果数据存在周期性波动,那么应用该周期的SMA将消除这种波动(平均值总是包含一个完整的周期)。但是完全规律的循环是几乎不会遇到的。[ 1]
对于许多应用来说,这有利于避免仅使用“过去”数据而引起的移位。因此,可以使用在计算平均值的系列中点的任一侧等距分布的数据来计算中心移动平均 。[ 2] 这需要在样本窗口中使用奇数个数据点。
SMA的主要缺点是,它使比窗口长度短的大量信号通过。更糟糕的是,它实际上将其反转。这可能会导致意外的伪影,例如,平滑结果中的峰值出现在数据中出现波谷的位置。由于某些较高的频率未正确消除,这也导致结果不如预期的平滑。
在技术分析中,不同的市场对常用天数(n值 )有不同的需求,例如:某些市场普遍的n值 为10日、40日、200日;有些则是5日、10日、20日、60日、120日、240日,视乎分析时期长短而定。投资者冀从移动平均线的图表中分辨出支持位或阻力位。
比较:图中同时呈现20日的三种移动平均线-SMA、EMA和WMA。
EMA,N=15
指数移动平均 (英语:exponential moving average ,EMA 或EWMA )是以指数式 递减加权的移动平均。
各数值的加权影响力随时间而指数式递减,越近期的数据加权影响力越重,但较旧的数据也给予一定的加权值。右图是一例子。
加权的程度以常数 α 决定,α 数值介乎 0 至 1。α 也可用天数N 来代表:
α
=
2
N
+
1
{\displaystyle \alpha ={2 \over {N+1}}}
,所以,N=19天,代表 α=0.1。
设时间 t 的实际数值为 Y t ,而时间t 的EMA则为S t ;时间 t-1 的EMA则为 S t-1 ,计算时间 t≥2 是方程式为:[ 3]
S
t
=
α
×
Y
t
+
(
1
−
α
)
×
S
t
−
1
{\displaystyle S_{t}=\alpha \times Y_{t}+(1-\alpha )\times S_{t-1}}
设今日(t )价格为
p
t
{\displaystyle p_{t}}
,则今日(t )的
E
M
A
t
{\displaystyle EMA_{t}}
方程式为:
E
M
A
t
=
α
×
p
t
+
(
1
−
α
)
×
E
M
A
t
−
1
=
E
M
A
t
−
1
+
α
×
(
p
t
−
E
M
A
t
−
1
)
{\displaystyle EMA_{t}=\alpha \times p_{t}+(1-\alpha )\times EMA_{t-1}=EMA_{t-1}+\alpha \times (p_{t}-EMA_{t-1})}
将
E
M
A
t
−
1
{\displaystyle EMA_{t-1}}
递回代入:
E
M
A
t
=
α
×
(
p
t
+
(
1
−
α
)
p
t
−
1
+
(
1
−
α
)
2
p
t
−
2
+
(
1
−
α
)
3
p
t
−
3
+
⋯
)
{\displaystyle EMA_{t}=\alpha \times (p_{t}+(1-\alpha )p_{t-1}+(1-\alpha )^{2}p_{t-2}+(1-\alpha )^{3}p_{t-3}+\cdots )}
理论上这是一个无穷级数 ,由于
(
1
−
α
)
{\displaystyle (1-\alpha )}
小于 1,后面的数值会越来越小,可以被忽略只计算前 (N+1) 项。
对于近似均匀无变的数据少算的部份约为
(
1
−
α
)
N
+
1
{\displaystyle (1-\alpha )^{N+1}}
EMA權 重
=
α
×
[
1
+
(
1
−
α
)
+
(
1
−
α
)
2
+
(
1
−
α
)
3
+
⋯
+
(
1
−
α
)
N
]
{\displaystyle {\text{EMA權 重}}\;=\alpha \times {\Big [}1+(1-\alpha )+(1-\alpha )^{2}+(1-\alpha )^{3}+\cdots +(1-\alpha )^{N}{\Big ]}}
=
[
1
−
(
1
−
α
)
N
+
1
]
{\displaystyle \qquad \qquad \;={\Big [}1-(1-\alpha )^{N+1}{\Big ]}}
假设MA和EMA有相同质心, MA质心=
(
1
+
N
)
2
{\displaystyle {(1+N) \over 2}}
,
EMA 质心=
α
×
[
1
+
2
(
1
−
α
)
+
3
(
1
−
α
)
2
+
⋯
]
=
1
α
{\displaystyle \alpha \times {\Big [}1+2(1-\alpha )+3(1-\alpha )^{2}+\cdots {\Big ]}={1 \over \alpha }}
,
即
(
1
+
N
)
2
=
1
α
,
α
=
2
(
N
+
1
)
{\displaystyle {{(1+N)} \over 2}={1 \over \alpha },\quad \alpha ={2 \over {(N+1)}}}
根据1697年 Johann Bernoulli:
lim
n
→
∞
(
1
+
x
n
)
n
=
e
x
{\displaystyle \lim _{n\to \infty }{(1+{x \over n})^{n}}={\mbox{e}}^{x}}
, 则
1
−
(
1
−
α
)
N
+
1
=
1
−
(
1
−
2
(
N
+
1
)
)
N
+
1
≈
1
−
e
−
2
≈
86
%
{\displaystyle 1-(1-\alpha )^{N+1}=1-\left(1-{2 \over (N+1)}\right)^{N+1}\approx 1-{\mbox{e}}^{-2}\approx 86\%}
;
即当
α
=
2
(
N
+
1
)
{\displaystyle \alpha ={2 \over (N+1)}}
时, 只计算前 N+1 项已涵盖了 86% 完整权重;
若要计算函盖 99.9% 的完整加权,计算前 k-1 项( k-1 天) 忽略第k项之后, 则约略漏算了
(
1
−
α
)
k
=
0.1
%
=
0.001
{\displaystyle \;(1-\alpha )^{k}=0.1\%=0.001}
, 则
k
=
log
e
(
0.001
)
log
e
(
1
−
α
)
≈
log
e
(
0.001
)
−
α
≈
3.45
(
N
+
1
)
{\displaystyle k={\log _{e}(0.001) \over {\log _{e}(1-\alpha )}}\approx {\log _{e}(0.001) \over {-\alpha }}\approx 3.45(N+1)}
,
由于当 N 值很大时 α 很小接近零,
log
e
(
1
−
α
)
{\displaystyle \;\log _{e}(1-\alpha )}
=
−
α
+
α
2
2
+
⋯
{\displaystyle -\alpha +{\alpha ^{2} \over 2}+\cdots }
将趋近
−
α
{\displaystyle -\alpha }
(泰勒展开)。
若只要函盖 99% 的加权则
k
≈
log
e
(
0.01
)
−
α
≈
2.30
(
N
+
1
)
{\displaystyle k\approx {\log _{e}(0.01) \over {-\alpha }}\approx 2.30(N+1)}
;
要包含 95% 的加权则
k
≈
log
e
(
0.05
)
−
α
≈
1.50
(
N
+
1
)
{\displaystyle k\approx {\log _{e}(0.05) \over {-\alpha }}\approx 1.50(N+1)}
;
例如: 当 N=9, α = 0.200 , k ∼15 函盖95% , k ∼23 能函盖99% ; k ∼35 函盖达99.9% ;
当 N=26, α ≈ 0.074 , k ∼40 函盖95%.
在累积移动平均 (CMA )中,数据以有序数据流的形式到达,用户希望获得直到当前数据点为止的所有数据的平均值。例如,投资者可能想要特定股票直到当前时间的所有股票交易的平均价格。随着每笔新交易的发生,可以使用累计平均值(通常是直到当前时间的 n 个值序列
x
1
,
…
,
x
n
{\displaystyle x_{1},\ldots ,x_{n}}
的均等加权平均值)计算该点之前所有交易的平均交易价格:
CMA
n
=
x
1
+
⋯
+
x
n
n
.
{\displaystyle {\text{CMA}}_{n}={{x_{1}+\cdots +x_{n}} \over n}\,.}
计算此问题的暴力方法是存储所有数据,并计算总和,并在每次新数据点到来时除以数据点数。但其实,可以使用下面地公式,在拿到新值
x
n
+
1
{\displaystyle x_{n+1}}
时,简单地更新累计平均值:
CMA
n
+
1
=
x
n
+
1
+
n
⋅
CMA
n
n
+
1
.
{\displaystyle {\text{CMA}}_{n+1}={{x_{n+1}+n\cdot {\text{CMA}}_{n}} \over {n+1}}.}
因此,新数据点的当前累积平均值等于先前的累积平均值乘以 n ,再加上最新的数据点,所有这些均除以到目前为止已接收的点数 n +1。 当所有数据点都到达(n = N )时,累积平均值将等于最终平均值。还可以存储数据点的当前总和以及点的数目,并将总数除以数据点的数目,以便在每次有新的基准点到达时得到CMA。
累积平均公式的推导很直接。使用
x
1
+
⋯
+
x
n
=
n
⋅
CMA
n
{\displaystyle x_{1}+\cdots +x_{n}=n\cdot {\text{CMA}}_{n}}
对于 n + 1 ,我们有
x
n
+
1
=
(
x
1
+
⋯
+
x
n
+
1
)
−
(
x
1
+
⋯
+
x
n
)
{\displaystyle {\begin{aligned}x_{n+1}&=(x_{1}+\cdots +x_{n+1})-(x_{1}+\cdots +x_{n})\\[6pt]\end{aligned}}}
求解
CMA
n
+
1
{\displaystyle {\text{CMA}}_{n+1}}
就可以得到
CMA
n
+
1
=
x
n
+
1
+
n
⋅
CMA
n
n
+
1
=
x
n
+
1
+
(
n
+
1
−
1
)
⋅
CMA
n
n
+
1
=
(
n
+
1
)
⋅
CMA
n
+
x
n
+
1
−
CMA
n
n
+
1
=
CMA
n
+
x
n
+
1
−
CMA
n
n
+
1
{\displaystyle {\begin{aligned}{\text{CMA}}_{n+1}&={x_{n+1}+n\cdot {\text{CMA}}_{n} \over {n+1}}\\[6pt]&={x_{n+1}+(n+1-1)\cdot {\text{CMA}}_{n} \over {n+1}}\\[6pt]&={(n+1)\cdot {\text{CMA}}_{n}+x_{n+1}-{\text{CMA}}_{n} \over {n+1}}\\[6pt]&={{\text{CMA}}_{n}}+{{x_{n+1}-{\text{CMA}}_{n}} \over {n+1}}\end{aligned}}}
有时计算移动平均时会加入其他变数,例如,“交易量加权 ”会加入交易量的因素。