指数滑动平均EMA拾遗
2012-09-22 21:43
197 查看
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.
相关文章推荐
- 指数滑动平均(ExponentialMovingAverage)EMA
- (Tensorflow之六)滑动平均模型ExponentialMovingAverage
- Tensorflow 实战google深度学习框架 07 滑动平均模型
- 滑动平均线的notebook画法
- 滑动返回的幸福指数
- Tensorflow中提供tf.train.ExponentialMovingAverage函数实现(滑动平均模型)
- 可以滑动取消的消息指数
- 神经网络的滑动平均模型
- 模式识别之概率分布---平均分布,正态分布,一阶滑动和,一阶线性回归 C语言编程
- 平均指数一般编制方法
- 78、tensorflow滑动平均模型,用来更新迭代的衰减系数
- 滑动平均滤波法和中位值平均滤波法分析
- Tensorflow深度学习之九:滑动平均模型
- 平均指数概念与种类
- 滑动平均模型
- Excel在统计分析中的应用—第五章—统计指数-Part7-平均指数(算术平均指数)
- 中国人财商指数刚过及格线 平均得分仅60.1分
- Excel在统计分析中的应用—第五章—统计指数-Part8-平均指数(几何平均指数)
- TensorFlow中滑动平均模型介绍
- Coursera | Andrew Ng (02-week-2-2.4)—理解指数加权平均