指数移动平均EWMA的alpha,halflife,com和span

pandas.DataFrame.emw是计算指数移动平均的函数。其中,衰减速度有alpha,halflife,com和span四种,本文对以上四种衰减速度的含义进行说明。 

3.5 Exponentially Weighted Windows — Pandas Doc

pandas.DataFrame.ewm — pandas 2.2.1 documentationicon-default.png?t=N7T8https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.ewm.html#pandas.DataFrame.ewm

计算基础:等比数列(首项a_1,比例q,项数n)求和: 

S = \frac{a_1(1-q^n)}{1-q}

目录

指数移动平均基本计算公式和 alpha

迭代式

加权平均式

Halflife 半衰期

COM 质心

Span

指数移动平均基本计算公式和 alpha

「EMA系列之I」如何理解EMA指数移动平均值以及Python实现 - 知乎

Exponentially Weighted Moving Average (EWMA) - Formula, Applications

指数移动平均有迭代式和加权平均式两种。据pandas文档,emw函数的adjust设为True时,计算方法为加权平均式,否则为迭代式,默认为加权平均式。我们假设有个时间序列\{x_t\},\ t=0,1,2,\dots。与之对应,指数移动平均为 \{y_t\},\ t=0,1,2,\dots

迭代式

y_{t} = \alpha x_t+(1-\alpha)y_{t-1},\ \alpha\in[0,1]

\alpha的含义即为:在平均值中最近的数据占的权重。\alpha越大,则衰减越快,反之亦然

令 \beta = 1-\alpha,把y_{t-1}拆开,可以将迭代式推导到无穷:

\begin{aligned} y_t &= \alpha x_t+\beta y_{t-1}\\ &= \alpha x_t + \beta (\alpha x_{t-1}+\beta y_{t-2})\\ &= \alpha x_t + \beta\alpha x_{t-1}+\beta^2 y_{t-2}\\ &= \alpha x_t + \beta\alpha x_{t-1}+\beta^2\alpha x_{t-2}+\beta^3 y_{t-3}\\ &= \sum^{\infty}_{i=0} \alpha (1-\alpha)^i x_{t-i} \end{aligned}

类比加权平均公式,权值为 w_i = \alpha(1-\alpha)^i,i=0,1,\dots

经过计算,这些权值加起来等于1:

S = \lim_{n\rightarrow\infty}\frac{\alpha(1-(1-\alpha)^n)}{1-(1-\alpha)}=1

加权平均式

加权平均式应用于确定的估计窗口上,例如最近的n个值:

令权重序列为:\{w_i\}=\{(1-\alpha)^i\},i=0,1,\dots,n,而权重之和并非1,故还需进行归一。

则指数平均为:

\begin{aligned} y_t&=\frac{x_t+(1-\alpha)^1x_{t-1}+(1-\alpha)^2x_{t-2}+\dots+(1-\alpha)^{n}x_{t-n}}{1+(1-\alpha)^1+(1-\alpha)^2+\dots+(1-\alpha)^{n}} \\&=\sum^n_{i=0}\frac{(1-\alpha)^i}{\frac{1-(1-\alpha)^n}{\alpha}}x_{t-i} \end{aligned}

 如果估计窗口趋向于无限长,则会收敛到迭代式:

\lim_{n\rightarrow\infty}\frac{(1-\alpha)^i}{\frac{1-(1-\alpha)^n}{\alpha}}=\alpha(1-\alpha)^i

固定n的话,可以称其为N天指数加权平均(N-day Exponential Weighted Moving Average)。关于迭代式的初始化与加权平均式之间的关系以及调整方法,可见

「EMA系列之II」如何初始化EMA指数移动平均值以及Python实现 - 知乎

Halflife 半衰期

 考虑迭代式,项数无穷,权重为w_i = \alpha(1-\alpha)^i,i=0,1,\dots

 随着 i 的增加,权重越来越小,考虑以 i 为分界点,分界点前的总权重会越来越大,分界点后的总权重会越来越小。那么,i 等于多少的时候,分界点前的总权重占所有权重的一半呢?这个分界点被称为半衰期,可以知道过了半衰期,分界点后的权重量小于1/2,且越来越不重要。

以下推导\alpha和半衰期h之间的转换关系,方程左边为分界点前的总权重,右边为1/2

\begin{aligned} &1-(1-\alpha)^{h}=\frac{1}{2}\\ \Rightarrow&(1-\alpha)^{h}=\frac{1}{2}\\ \Rightarrow&h\ln(1-\alpha)=-\ln2\\ \Rightarrow&\ln(1-\alpha)=\frac{-\ln2}{h}\\ \Rightarrow&\alpha=1-\exp(\frac{-\ln2}{h}) \end{aligned}

半衰期可以调整权重的衰减速度,半衰期越长,则衰减速度越慢。这一点可以通过半衰期-\alpha的转换公式验证:半衰期越长,\alpha 越小,则衰减速度越小。

COM 质心

考虑迭代式,项数无穷,权重为w_i = \alpha(1-\alpha)^i,i=0,1,\dots

w_1是第一个点的权重,w_2是第二个点的权重,以此类推。那么指数平均值平均在第几个点上呢?用物理的概念类比,假设一维空间中有无穷个质点,分别分布在自然数点上,在自然数 i 上的质点的质量为 w_i,即以上问题转化为:求整个系统的质心C。因为质心称为Center of Mass,故衰减参数也被称为com。从时间序列的角度看,下标 i 为该数据点的历史,也称age,故质心也可以理解为平均历史,weighted age。

以下为质心的计算公式:

C = \sum^{\infty}_{i=0} i\times w_i=\sum^{\infty}_{i=1} i\alpha(1-\alpha)^i\ (1)

另外说一句,这个式子的形式有点像债券久期公式。高中学过这个类等比数列怎么求和。首先(1)式乘以公比 (1-\alpha)

(1-\alpha)C =\sum^{\infty}_{i=0} i\alpha(1-\alpha)^{(i+1)}=\sum^{\infty}_{i=1} (i-1)\alpha(1-\alpha)^i\ (2)

 (1)式减去(2)式,化成普通等比数列:

C-(1-\alpha)C = \sum^{\infty}_{i=1} \alpha(1-\alpha)^i=\alpha(1-\alpha)/\alpha\\ \\ \Rightarrow C=(1-\alpha)/\alpha,\ \alpha =1/(C+1)

\alpha定义域,C\geq0。直观理解下,质心越小,意味着指数平均值平均在越近的点,则说明质心后面剩下非常多的点,而这些点的权重量却仅仅与质心前非常少的点的权重量相当,衰减速度很快。反过来,指数平均值平均在越远的点,说明质心后剩下较少(尽管是无穷个)的点的权重量与质心前较多的点的权重量相当,衰减速度较慢。简而言之,质心越小,衰减速度越快。通过转换式可以验证:C越小,\alpha越大,则衰减速度越快。

Span

Brown, Robert Goodell. Smoothing, forecasting and prediction of discrete time series. Courier Corporation, 2004.

上书的107-108页介绍了Span-\alpha的算法。

span的含义是范围、区间,对应于加权平均式中的n。然而确定了要计算多少个历史值的平均值后,我们却不知道\alpha应该是多少。

对于一个长度为n的区间,编号分别为0,1,2,...,n-1。我们先计算普通移动平均的质心是多少:

C_{\text{MA}}=\sum^{n-1}_{i=0}\frac{1}{n}\times i=\frac{(n-1)n}{2}\times\frac{1}{n}=\frac{n-1}{2}

 上文我们知道迭代式的质心为:C_{\text{EMWA}}=\frac{1-\alpha}{\alpha}

两者质心重合时,可以求得\alpha和n之间的关系:

\begin{aligned} &C_{\text{EWMA}}=C_{\text{MA}}\\ \Rightarrow &\frac{1-\alpha}{\alpha}=\frac{n-1}{2}\\ \Rightarrow & \alpha=\frac{2}{1+n} \end{aligned}

因此,我们认为对于N天指数移动平均数而言,合理的\alpha为:

\alpha=\frac{2}{\text{span}+1},\ \text{span}\geq1

带入质心的公式,可看到,上述\alpha的公式使得加权平均区间的中间大致是质心的位置:

C=(\text{span}-1)/2

与COM的关系可以发现,span越大,衰减速度越快。 直观理解,加权平均式是迭代式的截断+断点后尾部权重的重新分配,尾部权重量越小两者越接近。因此计算范围越小,越需要提高衰减速度,不然在最后一个值之后,还剩下很多的权重需要重新分配到前面去,导致计算结果与迭代式的差别变大。

  • 23
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值