1 基本公式
EMA(Exponential Moving Average)是常用的技术指标之一,也称为指数平滑(Exponential Smoothing),计算公式为
$$S(n) = ux(n)+(1-u)S(n-1)$$
其中$S(n)$表示$x(n)$在时刻$n$的EMA值,而$x(n)$使用如下的信号模型
$$x(n) = a(n)+e(n)$$
其中$a(n)$和$e(n)$分别表示信号项和噪声项。
现在EMA的这一常用形式由Robert Goodell Brown提出。
2 EMA的前提
注意,Brown在分析EMA的时候,使用如下的前提
$$a(n) = \mathrm{Constant}$$
也就是说,$x(n)$中的信号分量是常数。实际信号通常不满足此条件,处理方法是局部近似为常数。
3 EMA与SMA的等效
3.1 Average Age
我们知道,EMA的平滑常数
$$ u = \frac{2}{N+1} $$
这时EMA和一个时间长度为$N$的SMA(Simple Moving Average)“等效”。Brown在给出这一结论时使用了Average Age的概念
$$ \mathrm{Age}\{x(n-k)\} = k $$
其中$x(k)$的Age即为$x(k)$的观察时刻$k$到当前时刻$n$的时间,$\mathrm{Age}\{x(n)\}=0$, $\mathrm{Age}\{x(n-1)\}=1$, ...。$w(k)$为数据加权时的权重。对于SMA:当$0 \leq k \leq N-1$时,$w(k)=1/N$;其余$w(k)=0$。对于EMA,$w(k)=u(1-u)^k$ 。故有
$$\mathrm{AverageAge}\{\mathrm{SMA}\} = \frac{0+1+...+N-1}{N} = \frac{N-1}{2} \\ \mathrm{AverageAge}\{\mathrm{EMA}\} = \sum_{k=0}^{n} u(1-u)^k k = \frac{1-u}{u}$$
令SMA和EMA的Average Age相等,得$u=2/(N+1)$ 。
3.2 方差
此外,从估计方差的角度也能得出这一结论。对于$y(n)=\mathrm{Conv}(w(n),x(n))$,Conv表示卷积,$y$和$x$间的方差有如下关系
$$\sigma_y^2 = \sigma_x^2 \sum w(k)^2$$
而$\sigma_x^2=\sigma_e^2$,故
$$\mathrm{var}\{\mathrm{SMA}\{x\}\} = \sigma_e^2 \sum_{k=0}^{N-1} \frac{1}{N^2}=\frac{\sigma_e^2}{N} \\ \mathrm{var}\{\mathrm{EMA}\{x\}\} = \sigma_e^2 \sum_{k=0}^\infty (u(1-u)^k)^2 = \sigma_e^2 \frac{u}{2-u}$$
令以上两式相等,得$u=2/(N+1)$。
3.3 直观
从直观上看,等效的EMA和SMA拐点的个数、出现的时间、趋势的长度基本一致。
4 从AR模型的角度看EMA
EMA是一个一阶AR模型,有一个极点$1-u$,这样的系统只能跟踪阶跃信号$x(n)=\mathrm{step}(n)$,而不能跟踪线性斜变信号 $x(n)=n \mathrm{step}(n)$。其中
$$\mathrm{step}(n)=\left\{ \begin{array}{ll} 1 & n \ge 0 \\ 0 & n \lt 0 \end{array} \right. $$
实际上,该系统的阶跃响应为
$$g(n) = 1-(1-u)^{n+1} \\ \lim_{n \to \infty} \{g(n)-x(n)\} = 0 $$
也就是说,EMA跟踪阶跃信号的稳态误差为0。而对于斜变信号,系统响应为
$$ y(n) = n-\frac{1-u}{u} (1-(1-u)^n) \\ \lim_{n \to \infty} \{y(n)-x(n)\} = \frac{1-u}{u} $$
稳态误差不为0,这也就说明了,有趋势的时候,MA通常持续位于价格的下方(上升趋势)或上方(下降趋势)。
5 从SMA到EMA
另外,Brown使用如下的方法从SMA自然导出了EMA。设$x(n)$的时间长度为$N$的SMA为$M(n)$,当新数据到来时,需要剔除前面第$N$个数据,并将新数据计入,得
$$M(n) = M(n-1)+\frac{x(n)-x(n-N)}{N}$$
当我们不知道$x(n-N)$时,自然想到用估计值$M(n-1)$来代替,则有
$$M(n) = M(n-1)+\frac{x(n)-M(n-1)}{N}$$
即
$$M(n) = u x(n)+(1-u) M(n-1), u=\frac{1}{N}$$
注意,尽管这样导出的$u=1/N$,但是它并不和长度为$N$的SMA等效。
参考文献
[1] http://en.wikipedia.org/wiki/Exponential_smoothing#cite_ref-3
[2] Brown, Robert Goodell (1963). Smoothing Forecasting and Prediction of Discrete Time Series. Englewood Cliffs, NJ: Prentice-Hall.