移动平均(,縮寫:MA ),又稱滾動平均值、滑動平均,在統計學中是一種通過創建整個數據集中不同子集的一系列平均數來分析數據點的計算方法。它也是有限脈衝響應濾波器的一種。變化包括: 簡單移動平均、指數移動平均、加權移動平均,以及累積移動平均(描述如下)。
给定一个数列和一个固定子集大小,移动平均数的第一个元素是由数列的初始固定子集的平均值得到的。然后通过“向前移位”修改子集,即排除序列的第一个数,并在子集中包含下一个值。
移动平均通常与時間序列数据一起使用,以消除短期波动,突出长期趋势或周期。短期和长期之间的阈值取决于应用,移动平均的参数将相应地设置。例如,它通常用于对财务数据进行技术分析,如股票价格、收益率或交易量。它也用于经济学中研究国内生产总值、就业或其他宏观经济时间序列。数学上,移动平均是卷积的一种类型,因此它可以被看作是用于信号处理的低通滤波器的一个例子。当与非时间序列数据一起使用时,移动平均滤波器的频率分量更高,但与时间没有任何特定的联系,尽管通常暗含某种排序。简单地看,它可以看作是把数据变得更平滑。
數位訊號處理觀點下的移動平均
在數位訊號處理(DSP)領域中,移動平均可視為一種用來平滑離散時間訊號的低通濾波器。不同類型的移動平均在系統特性上,對應著不同的濾波器架構與頻率響應:
- 有限脈衝響應(FIR)與簡單移動平均(SMA):
簡單移動平均在數學上等同於一個有限脈衝響應(FIR)濾波器。若將時間序列視為離散時間訊號 x[n],一個長度為 N 的 SMA 其差分方程式為:
: y[n] = \frac{1}{N}\sum_{k=0}^{N-1} x[n-k]
在時域中,這相當於對訊號施加一個長度為 N 的矩形窗(Rectangular window)。其頻率響應呈現Sinc函數 \frac{\sin(\omega N/2)}{\sin(\omega/2)} 的特徵。由於 Sinc 函數具有顯著的旁波瓣(Side lobes),這意味著 SMA 雖然能濾除大部分高頻雜訊,但對於某些特定頻率的週期性波動無法完全抑制,甚至可能產生相位反轉(Phase reversal),這在資料分析上會導致偽影或偽訊號的產生。
- 無限脈衝響應(IIR)與指數移動平均(EMA):
相較之下,指數移動平均(EMA)由於在計算時引入了前一次的輸出結果,在數位訊號處理中對應於一階無限脈衝響應(IIR)濾波器。其差分方程式具備回饋(Feedback)特徵:
: y[n] = \alpha x[n] + (1-\alpha) y[n-1]
由於具備指數遞減的脈衝響應,EMA 在系統運算上不需儲存大量的歷史資料,且其頻率響應的滾降(Roll-off)特性通常能比同長度的 SMA 更平滑地衰減高頻訊號。
- 群延遲(Group Delay)與滯後性:
在金融技術分析中常提及移動平均具有「滯後性(Lag)」,此現象在訊號處理中稱為群延遲或相位延遲。任何處理即時訊號的因果濾波器(Causal filter)皆會產生時間差。對於長度為 N 的 SMA,其線性相位特性會產生精確的 \frac{N-1}{2} 個取樣點的群延遲。這解釋了為何數據趨勢發生反轉時,SMA 的轉折點會落後於實際數據。而 EMA 作為一階 IIR 濾波器,其非線性相位特性使其在低頻區域的群延遲較小,因此對最新數據的反應速度在數學結構上會比 SMA 更為迅速。
在美國線(OHLC)與價格特徵的進階應用
在金融市場的技術分析中,移動平均最常被應用於平滑美國線(OHLC chart)所記錄的價格波動。傳統上,移動平均的輸入訊號 x[n] 多半僅採用美國線四項資訊中的「收盤價(Close)」。然而,單一收盤價容易受到市場尾盤的極端交易或人為高頻雜訊影響。
結合訊號預處理的觀念,進階的應用會提取美國線中的多維度資訊來重建輸入訊號。例如,將最高價(High)、最低價(Low)與收盤價(Close)取算術平均,計算出「典型價格(Typical Price)」:
: Typical\ Price = \frac{High + Low + Close}{3}
將典型價格或其他加權價格(如包含開盤價的 \frac{Open+High+Low+Close}{4})作為離散訊號再輸入至 SMA 或 EMA 濾波器中,相當於在進行時間軸的低通濾波前,先進行了振幅軸的降噪處理。這種做法能更客觀地反映該取樣區間的真實價格重心,有效降低單一數據點極端波動對移動平均線造成的誤導。
简单移动平均
在金融应用中,一个简单移动平均(SMA)是以前 n 个数据的未加权平均数。然而,在科学和工程中,平均值通常取自中心值两边相等数量的数据。这样可以确保平均值的变化与数据的变化一致,而不是随时间变化。
例如,对于 n 天的收盘价样本,简单等权重移动平均是前 n 天收盘价的平均值。如果收盘价为 p_M, p_{M-1}, \dots, p_{M-(n-1)},则公式为
: \begin{align}
\overline{p}_\text{SM} &= \frac{p_M + p_{M-1} + \cdots + p_{M-(n-1)}}{n} \\
&= \frac{1}{n} \sum_{i=0}^{n-1} p_{M-i}.
\end{align}
当计算下一天的移动平均的时候,就会在求和中加入一个新值,剔除一个旧值,无需把所有数值重新加一遍:
: \overline{p}_\text{SM} = \overline{p}_{\text{SM},\text{prev}} + \frac{1}{n} (p_M - p_{M-n}).
所选择的时间段取决于利率变动的类型,如短期、中期或长期。从金融角度来看,移动平均线水平可以解释为市场下跌时的支撑,或者市场上涨时的阻力。
如果使用的数据不以平均值为中心,那么简单移动平均就会落后于最新的数据点一半的采样宽度。旧数据点的丢掉和新数据点的加入也会对SMA造成较大影响。SMA的一个特点是,如果数据存在周期性波动,那么应用该周期的SMA将消除这种波动(平均值总是包含一个完整的周期)。但是完全规律的循环是几乎不会遇到的。
对于许多应用来说,这有利于避免仅使用“过去”数据而引起的移位。因此,可以使用在计算平均值的系列中点的任一侧等距分布的数据来计算中心移动平均。这需要在样本窗口中使用奇数个数据点。
SMA的主要缺点是,它使比窗口长度短的大量信号通过。更糟糕的是,它实际上将其反转。这可能会导致意外的伪影,例如,平滑结果中的峰值出现在数据中出现波谷的位置。由于某些较高的频率未正确消除,这也导致结果不如预期的平滑。
在技術分析中,不同的市場對常用天數(n值)有不同的需求,例如:某些市場普遍的n值為10日、40日、200日;有些則是5日、10日、20日、60日、120日、240日,視乎分析時期長短而定。投資者冀從移動平均線的圖表中分辨出支持位或阻力位。
指數移動平均
指數移動平均(,EMA或EWMA)是以指數式遞減加權的移動平均。
各數值的加權影響力隨時間而指數式遞減,越近期的數據加權影響力越重,但較舊的數據也給予一定的加權值。右圖是一例子。
加權的程度以常數 α 決定,α 數值介乎 0 至 1。α 也可用天數N來代表:\alpha={2\over{N+1}},所以,N=19天,代表 α=0.1。
設時間 t 的實際數值為 Yt,而時間t的EMA則為St;時間 t-1 的EMA則為 St-1,計算時間 t≥2 是方程式為:
: S_{t} = \alpha \times Y_{t} +(1-\alpha) \times S_{t-1}
設今日(t)價格為p_{t},則今日(t)的EMA_{t}方程式為:
:EMA_{t} = \alpha \times p_{t} + (1-\alpha) \times EMA_{t-1} = EMA_{t-1} + \alpha \times (p_{t} - EMA_{t-1})
將EMA_{t-1}遞迴代入:
:EMA_{t} = \alpha \times ( p_{t} +(1-\alpha)p_{t-1} +(1-\alpha)^2 p_{t-2} +(1-\alpha)^3 p_{t-3} + \cdots )
理論上這是一個无穷级数,由於(1 - \alpha)小於 1,後面的數值會越來越小,可以被忽略只計算前 (N+1) 項。
對於近似均勻無變的數據少算的部份約為(1-\alpha)^{N+1}
: \text{EMA權 重}\;= \alpha \times \Big[1+(1-\alpha)+(1-\alpha)^2+(1-\alpha)^3+ \cdots +(1-\alpha)^N \Big]
:\qquad\qquad\;=\Big[ 1 - (1 - \alpha)^{N+1} \Big]
假設MA和EMA有相同質心, MA質心= {(1+N) \over 2} ,
EMA 質心= \alpha \times \Big[1+2(1-\alpha)+3(1-\alpha)^2 + \cdots \Big]= {1 \over \alpha} ,
即 {{(1+N)} \over 2} = {1 \over \alpha} , \quad \alpha= {2 \over{ (N+1)}}
根據1697年 Johann Bernoulli: \lim_{n \to \infty} {(1 + {x \over n})^n} = \mbox{e}^x , 則
:1 - (1 - \alpha)^{N+1} = 1- \left(1 - {2 \over (N+1)}\right)^{N+1} \approx 1 - \mbox{e}^{-2} \approx 86% ;
即當 \alpha = {2 \over (N+1)}時, 只計算前 N+1 項已涵蓋了 86% 完整權重;
若要計算函蓋 99.9% 的完整加權,計算前 k-1 項( k-1 天) 忽略第k項之後, 則約略漏算了\;(1 - \alpha)^{k} = 0.1%=0.001 , 則
: k = {\log_{e}(0.001) \over {\log_{e}(1-\alpha)}} \approx {\log_{e}(0.001) \over {- \alpha} } \approx 3.45(N+1) ,
由於當 N 值很大時 α 很小接近零, \; \log_{e}(1-\alpha) = - \alpha + {\alpha^2 \over 2} + \cdots 將趨近- \alpha (泰勒展開)。
若只要函蓋 99% 的加權則 k \approx {\log_{e}(0.01) \over {- \alpha} } \approx 2.30(N+1) ;
要包含 95% 的加權則 k \approx {\log_{e}(0.05) \over {- \alpha} } \approx 1.50(N+1) ;
:例如: 當 N=9, α = 0.200 , k ∼15 函蓋95% , k ∼23 能函蓋99% ; k ∼35 函蓋達99.9% ;
:當 N=26, α ≈ 0.074 , k ∼40 函蓋95%.
加權移動平均
加權移動平均(,WMA)指計算平均值時將個別數據乘以不同數值,在技術分析中,n日WMA的最近期一個數值乘以n、次近的乘以n-1,如此類推,一直到0:
:WMA_{M} = { n p_{M} +(n-1) p_{M-1} + \cdots + 2 p_{M-n+2} + p_{M-n+1} \over n +(n-1) + \cdots + 2 + 1}
由於WMA_{M+1}與WMA_{M}的分子相差n p_{M+1} - p_{M} - \cdots - p_{M-n+1},假設p_{M} + p_{M-1} + \cdots + p_{M-n+1}為總和M:
:總和M+1 =總和M + p_{M+1} - p_{M-n+1}
:分子M+1 = N_{M+1} =分子M + n p_{M+1} - 總和M
:WMA_{M+1} = { N_{M+1} \over n +(n-1) + \cdots + 2 + 1}
留意分母為三角形數,方程式為n(n+1)\over2
右圖顯示出加權是隨日子遠離而遞減,直至遞減至零。
累积移动平均
在累积移动平均(CMA)中,数据以有序数据流的形式到达,用户希望获得直到当前数据点为止的所有数据的平均值。例如,投资者可能想要特定股票直到当前时间的所有股票交易的平均价格。随着每笔新交易的发生,可以使用累计平均值(通常是直到当前时间的 n 个值序列 x_1, \ldots, x_n 的均等加权平均值)计算该点之前所有交易的平均交易价格:
:\text{CMA}_n = {{x_1 + \cdots + x_n} \over n}\,.
计算此问题的暴力方法是存储所有数据,并计算总和,并在每次新数据点到来时除以数据点数。但其实,可以使用下面地公式,在拿到新值 x_{n+1} 时,简单地更新累计平均值:
:\text{CMA}_{n+1} = {{x_{n+1} + n \cdot \text{CMA}_n} \over {n+1}}.
因此,新数据点的当前累积平均值等于先前的累积平均值乘以 n,再加上最新的数据点,所有这些均除以到目前为止已接收的点数 n+1。 当所有数据点都到达()时,累积平均值将等于最终平均值。还可以存储数据点的当前总和以及点的数目,并将总数除以数据点的数目,以便在每次有新的基准点到达时得到CMA。
累积平均公式的推导很直接。使用
:x_1 + \cdots + x_n = n \cdot \text{CMA}_n
对于 ,我们有
:
\begin{align}
x_{n+1} & = (x_1 + \cdots + x_{n+1}) - (x_1 + \cdots + x_n) \\[6pt]
\end{align}
求解 \text{CMA}_{n+1} 就可以得到
:
\begin{align}
\text{CMA}_{n+1} & = {x_{n+1} + n \cdot \text{CMA}_n \over {n+1}} \\[6pt]
& = {x_{n+1} + (n + 1 - 1) \cdot \text{CMA}_n \over {n+1}} \\[6pt]
& = {(n + 1) \cdot \text{CMA}_n + x_{n+1} - \text{CMA}_n \over {n+1}} \\[6pt]
& = {\text{CMA}_n} + {{x_{n+1} - \text{CMA}_n} \over {n+1}}
\end{align}
其他加權
有時計算移動平均時會加入其他變數,例如,「交易量加權」會加入交易量的因素。
內部連結
*技術分析
*K線
*布林帶(BBands)
*隨機指標(KD)
*相對強弱指數(RSI)
*指數平滑異同移動平均線(MACD)
*乖離率(BIAS)
參考文献
外部連結
*[http://www.investopedia.com/terms/m/movingaverage.asp Investopedia的介紹]
评论 (0)