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等效。