移動平均

**移動平均**（英語：moving average，縮寫：**MA** ），又稱**滾動平均值**、**滑動平均**，在統計學中是一種通過創建整個數據集中不同子集的一系列平均數來分析數據點的計算方法。它也是有限脈衝響應濾波器的一種。變化包括：簡單移動平均、指數移動平均、加權移動平均，以及累積移動平均（描述如下）。

給定一個數列和一個固定子集大小，移動平均數的第一個元素是由數列的初始固定子集的平均值得到的。然後通過「向前移位」修改子集，即排除序列的第一個數，並在子集中包含下一個值。

移動平均通常與時間序列數據一起使用，以消除短期波動，突出長期趨勢或周期。短期和長期之間的閾值取決於應用，移動平均的參數將相應地設置。例如，它通常用於對財務數據進行技術分析，如股票價格、收益率或交易量。它也用於經濟學中研究國內生產總值、就業或其他宏觀經濟時間序列。數學上，移動平均是卷積的一種類型，因此它可以被看作是用於信號處理的低通濾波器的一個例子。當與非時間序列數據一起使用時，移動平均濾波器的頻率分量更高，但與時間沒有任何特定的聯繫，儘管通常暗含某種排序。簡單地看，它可以看作是把數據變得更平滑。

## 簡單移動平均

在金融應用中，一個**簡單移動平均**（**SMA**）是以前 _n_ 個數據的未加權平均數。然而，在科學和工程中，平均值通常取自中心值兩邊相等數量的數據。這樣可以確保平均值的變化與數據的變化一致，而不是隨時間變化。例如，對於 _n_ 天的收盤價樣本，簡單等權重移動平均是前 _n_ 天收盤價的平均值。如果收盤價為 $p_{M},p_{M-1},\dots ,p_{M-(n-1)}$ ，則公式為

　
: ${\begin{aligned}{\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{aligned}}$

當計算下一天的移動平均的時候，就會在求和中加入一個新值，剔除一個舊值，無需把所有數值重新加一遍：

　
: ${\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 日，視乎分析時期長短而定。投資者冀從移動平均線的圖表中分辨出支持位或阻力位。

## 指數移動平均

**指數移動平均**（英語：exponential moving average，**EMA** 或 **EWMA**）是以指數式遞減加權的移動平均。
各數值的加權影響力隨時間而指數式遞減，越近期的數據加權影響力越重，但較舊的數據也給予一定的加權值。右圖是一例子。

加權的程度以常數 α 決定，α 數值介乎 0 至 1。α 也可用天數 **N** 來代表： $\alpha ={2 \over {N+1}}$ ，所以，N=19 天，代表 α=0.1。

設時間 _t_ 的實際數值為 _Y_t，而時間 _t_ 的 EMA 則為 _S_t；時間 _t-1_ 的 EMA 則為 _S_t-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%.

## 加權移動平均

**加權移動平均**（英語：weighted moving average，**WMA**）指計算平均值時將個別數據乘以不同數值，在技術分析中，_n_ 日 WMA 的最近期一個數值乘以 _n_、次近的乘以 _n-1_，如此類推，一直到 0：

　
: $WMA_{M}={np_{M}+(n-1)p_{M-1}+\cdots +2p_{M-n+2}+p_{M-n+1} \over n+(n-1)+\cdots +2+1}$

由於 $WMA_{M+1}$ 與 $WMA_{M}$ 的分子相差 $np_{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 $+np_{M+1}-$ 總和 M

　
: $WMA_{M+1}={N_{M+1} \over n+(n-1)+\cdots +2+1}$

留意分母為三角形數，方程式為 $n(n+1) \over 2$

右圖顯示出加權是隨日子遠離而遞減，直至遞減至零。

## 累積移動平均

在**累積移動平均**（**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。 當所有數據點都到達（_n_ = _N_）時，累積平均值將等於最終平均值。還可以存儲數據點的當前總和以及點的數目，並將總數除以數據點的數目，以便在每次有新的基準點到達時得到 CMA。

累積平均公式的推導很直接。使用

　
: $x_{1}+\cdots +x_{n}=n\cdot {\text{CMA}}_{n}$

對於 _n_ + 1，我們有

　
: ${\begin{aligned}x_{n+1}&=(x_{1}+\cdots +x_{n+1})-(x_{1}+\cdots +x_{n})\\[6pt]\end{aligned}}$

求解 ${\text{CMA}}_{n+1}$ 就可以得到

　
: ${\begin{aligned}{\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{aligned}}$

## 其他加權

有時計算移動平均時會加入其他變數，例如，「**交易量加權**」會加入交易量的因素。

## 內部連結

* 技術分析
* K 線
* 布林帶（BBands）
* 隨機指標（KD）
* 相對強弱指數（RSI）
* 指數平滑異同移動平均線（MACD）
* 乖離率（BIAS）

## 參考文獻

## 外部連結

* Investopedia 的介紹 （頁面存檔備份，存於網際網路檔案館）