• 指数滑动平均EMA拾遗


    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.



     

  • 相关阅读:
    硬件开源为什么如此之难?
    传智播客C++
    为什么我们要在指针前面加一个数据类型来限定那?
    天津大学仁爱学院教务网、图书馆以及数字化平台网址
    关于小米手机USB传输稍大点的文件老中断的问题解决方法!
    关于接地:数字地、模拟地、信号地、交流地、直流地、屏蔽地、浮地
    关于
    Android-APK签名
    Android-Activity跳转时动画
    Android-GridView 滑动条设置一直显示状态
  • 原文地址:https://www.cnblogs.com/aquastone/p/EMATips1.html
Copyright © 2020-2023  润新知