移動平均:你知道的與你不知道的
發(fā)布時間:2016-10-11 | 來源: 川總寫量化
作者:石川
摘要:本文分析了移動平均技術(shù)的本質(zhì),并比較了 5 種不同的算法。
1 引言
移動平均(Moving Average,MA),又稱移動平均線,簡稱均線。作為技術(shù)分析中一種分析時間序列的常用工具,常被應(yīng)用于股票價格序列。移動平均可過濾高頻噪聲,反映出中長期低頻趨勢,輔助投資者做出投資判斷。
根據(jù)計算方法的不同,流行的移動平均包括簡單移動平均、加權(quán)移動平均、指數(shù)移動平均,更高階的移動平均算法則有分形自適應(yīng)移動平均、赫爾移動平均等。這其中,簡單移動平均又最為常見。下圖為上證指數(shù)日線的 5 個不同計算窗口(20 日,50 日,120 日,200 日,300 日)的簡單移動平均線。
簡單移動平均(Simple Moving Average, SMA)就是對時間序列直接求等權(quán)重均值,因此使用簡單。但其最令人詬病的就是它的滯后性。從上圖不難看出,隨著計算窗口 T 的增大,移動平均線越來越平滑,但同時也越來越滯后。以 120 日均線為例,在 2015 年 6 月份之后的大熊市開始了很長一段時間之后,120 日均線才開始呈現(xiàn)下降趨勢。如果我們按照這個趨勢進行投資,那這個滯后無疑造成了巨額的虧損。
事實上,任何移動平均算法都會呈現(xiàn)一定的滯后性。它以滯后性的代價換來了平滑性,移動平均必須在平滑性和滯后性之間取舍。然而,滯后性是怎么產(chǎn)生的呢?簡單移動平均在時間上滯后多少呢?有沒有什么高級的移動平均算法能在保證平滑性的同時將滯后性減小到最低呢?這些就是本文要回答的問題。
2 移動平均的本質(zhì)
移動平均的本質(zhì)是一種低通濾波。它的目的是過濾掉時間序列中的高頻擾動,保留有用的低頻趨勢。如何從時間序列中抽取出真正的低頻趨勢呢?無論采取哪種移動平均算法,理論上的計算方法都相同,下面我們簡要說明。同時,我們也會清晰地闡述該計算方法僅在理論上有效,而在實際應(yīng)用中是無法實現(xiàn)的,并由此揭示產(chǎn)生滯后性的原因。
假設(shè)一個時間序列 y = {…, y_(t-2), y_(t-1), y_t, y_(t+1), y_(t+2), …},如下圖所示。另外,假設(shè)我們有一個作用在時域 t 上的過濾函數(shù) F(注:這個 F 的具體形式根據(jù)不同的移動平均算法而不同)。
在任意 t 時刻的低頻濾波(用 x_t?表示)在數(shù)學(xué)上可以表示為該時間序列 y 和過濾函數(shù) F 在整個時域上的卷積,即
其中,F(xiàn)_i?為過濾函數(shù) F 在時刻 i 的取值。由于在實際中不可能用到無窮多的數(shù)據(jù),因此可以考慮給過濾加一個窗函數(shù),即過濾函數(shù) F 只在窗口長度 T 內(nèi)有效、在窗口之外為 0,如下圖所示:
加入長度為 T 的窗函數(shù)后,在時刻t的低頻濾波變?yōu)樵摃r間序列 y 和過濾函數(shù) F 在這個窗口內(nèi)的卷積:
然而,無論是否使用加窗函數(shù),上述公式最大的問題是,在計算 t 時刻的低頻分量時,利用到了未來的數(shù)據(jù)。換句話說,理論上的低通濾波(或者移動平滑)必須要用事后數(shù)據(jù),其假設(shè)所有數(shù)據(jù)都發(fā)生后再在全局上計算所有時點的低頻分量。但這在實時數(shù)據(jù)中是不可能的,因為在任何當前時刻 t,我們都沒有未來數(shù)據(jù)可以利用。正因如此,在實際應(yīng)用中,我們無法使用 t-(T-1)/2 到 t+(T-1)/2 之間的數(shù)據(jù),只能退而求其次使用 t-(T-1) 到 t 之間的數(shù)據(jù)。這相當于我們把計算低頻趨勢的過濾窗函數(shù)在時域上向左平移 (T-1)/2 個單位,如下圖所示:
如此處理后,對于實時數(shù)據(jù),在當前時刻 t 的低頻濾波變?yōu)樵摃r間序列 y 和過濾函數(shù) F 在 t-T+1 到 t 之間的卷積:
沒有未來數(shù)據(jù)便是滯后的根本原因。對于簡單移動平均來說,在窗口 T 內(nèi),過濾函數(shù)在每個時點的取值都是 1/T。利用上述公式計算得到的實際上是 t-(T-1)/2 時刻(而非 t 時刻)的低頻趨勢,而我們把它當作 t 時刻的低頻趨勢使用,這便產(chǎn)生了 (T-1)/2 的滯后。當我們使用簡單移動平均時,在當前時刻 t,對于給定的時間窗口 T,我們僅能求出 t-(T-1)/2 時刻之前的低頻趨勢,而無法求出 t-(T-1)/2 之后的低頻趨勢。這也解釋了為什么時間窗口 T 越大,滯后 (T-1)/2 越多。這就是為什么看股票數(shù)據(jù)里面 MA20、MA30、MA50 等日均線這種,計算均線的窗口 T 越大,得到的移動平滑曲線越滯后。
既然無論如何都沒有未來數(shù)據(jù),那么是否意味著我們就只能接受移動平均的滯后性呢?答案是否定的。換個角度來考慮這個問題,滯后性說明由簡單移動平均計算得到的低頻趨勢對近期的最新數(shù)據(jù)不夠敏感。這是由于它在計算低頻趨勢時,對窗口內(nèi)所有的數(shù)據(jù)點都給予相同的權(quán)重。按著這個思路延伸,自然的想法就是在計算移動平均時,給近期的數(shù)據(jù)更高的權(quán)重,而給窗口內(nèi)較遠的數(shù)據(jù)更低的權(quán)重,以更快的捕捉近期的變化。由此便得到了加權(quán)移動平均和指數(shù)移動平均。
3 加權(quán)移動平均
在計算加權(quán)移動平均(Weighted Moving Average, WMA)時,窗口內(nèi)的過濾函數(shù)的取值從當前數(shù)據(jù)到之前第 T-1 期的數(shù)據(jù)依次線性遞減。因此,第 t-i 期的 F_(t-i) 為 2(T-i)/(T(T+1)),i = 0, 1,……, T-1。該權(quán)重是 i 的單調(diào)線性遞減函數(shù)。下圖為 T = 15 時不同 i 的取值對應(yīng)的權(quán)重(圖片來自 wiki)。
在確定了權(quán)重后,t 時刻的加權(quán)移動平均(記為 WMA_t)由下式得到:
值得一提的是,由于嚴格的按照線性遞減,因此權(quán)重會最終在當前時刻之前的第 T 期時點衰減為 0。以上證指數(shù)過去 10 年的日數(shù)據(jù)為例,下圖比較了 T = 100 時的簡單移動平均和加權(quán)移動平均的過濾效果。加權(quán)移動平均比簡單移動平均對近期的變化更加敏感,尤其是在牛熊市轉(zhuǎn)換的時候,加權(quán)移動平均的滯后性小于簡單移動平均。但是,由于僅采用線性權(quán)重衰減,加權(quán)移動平均仍然呈現(xiàn)出滯后性。
4 指數(shù)移動平均
指數(shù)移動平均(Exponential Moving Average, EMA)和加權(quán)移動平均類似,但不同之處是各數(shù)值的加權(quán)按指數(shù)遞減,而非線性遞減。此外,在指數(shù)衰減中,無論往前看多遠的數(shù)據(jù),該期數(shù)據(jù)的系數(shù)都不會衰減到 0,而僅僅是向 0 逼近。因此,指數(shù)移動平均實際上是一個無窮級數(shù),即無論多久遠的數(shù)據(jù)都會在計算當期的指數(shù)移動平均數(shù)值時有一定的作用,只不過離當前太遠的數(shù)據(jù)權(quán)重非非常低,因此它們的作用往往可以忽略。
在實際應(yīng)用中,t 時刻的指數(shù)移動平均(記為 EMA_t)可以按如下方法得到:
其中 alpha?表示權(quán)重的衰減程度,取值在 0 和 1 之間。alpha?越大,過去的觀測值衰減的越快。雖然指數(shù)移動平均是一個無窮級數(shù),但在實際應(yīng)用時,我們也經(jīng)??吹?T 期指數(shù)移動平均的說法。這里的 T 是用來計算 alpha?的參數(shù),它不表示指數(shù)衰減在 T 期后結(jié)束。alpha?和 T 的關(guān)系為 alpha?= 2/(T+1)。下圖為 T = 15 時不同時刻的權(quán)重(圖片來自 wiki)??梢钥吹剑魏我黄诘臋?quán)重都不會衰減到 0。
下圖比較了 T = 100 時簡單移動平均、加權(quán)移動平均和指數(shù)移動平均的平滑效果。指數(shù)移動平均由于對近期的數(shù)據(jù)賦予了更高的權(quán)重,因此它比加權(quán)移動平均對近期的變化更加敏感,但這種效果在本例中并不顯著,指數(shù)移動平均也存在一定的滯后。
當 alpha?= 1/T 時,得到的指數(shù)移動平均又稱為修正移動平均(Modified Moving Average,MMA)或平滑移動平均(SMoothed Moving Average,SMMA),它們在應(yīng)用中也十分常見。比如,在計算技術(shù)指標 ADX 的時候,就應(yīng)用到了平滑移動平均。感興趣的讀者可參考文章《精選技術(shù)指標系列(1):ADX》。
無論是加權(quán)還是指數(shù)移動平均,它們都是通過對近期的數(shù)值賦予更高的權(quán)重來提高低頻趨勢對近期變化的敏感程度。然而,它們的計算表達式(或算法結(jié)構(gòu))是固定的,在整個時間序列上的各個時點都使用同樣的結(jié)構(gòu)(即一成不變的權(quán)重分配方法)計算移動平均,而不考慮時間序列自身的特點。一個優(yōu)秀的移動平均算法計算出來的均線應(yīng)在時間序列自身波動不明顯的時點足夠平滑,而在時間序列自身發(fā)生巨變時迅速捕捉、將滯后最小化。要想達到這種效果,就必須利用時間序列自身的特點。分形自適應(yīng)移動平均算法就是這樣一個有力的工具。
5 分形自適應(yīng)移動平均
顧名思義,分形自適應(yīng)移動平均(FRactal Adaptive Moving Average,F(xiàn)RAMA)利用了投資品價格序列的分形特征(關(guān)于什么是分形,請參考《分形市場假說》)。簡單的說,該算法通過一個簡單的公式計算從時間序列從當前時點往前 2T 長度的時間窗口內(nèi)的分形維數(shù) D,并利用分形維數(shù)進一步求解指數(shù)移動平均的參數(shù) alpha。
分形維數(shù)描述時間序列的趨勢,其取值在 1 到 2 之間,越大說明趨勢越明顯,越小說明時間序列越隨機。因此,通過連續(xù)的計算時間序列局部的分形維數(shù),該算法可以動態(tài)的、自適應(yīng)的根據(jù)時間序列的特征計算平滑所用的參數(shù)。由于 alpha?是 D 的減函數(shù),因此 D 越大(趨勢越明顯),alpha?越小,即指數(shù)平滑時對過去的數(shù)值衰減的越慢;D 越?。S機性越強),alpha?越大,即指數(shù)平滑時對過去的數(shù)值衰減的越快、對最新數(shù)據(jù)的變化越敏感。
具體的,對于當前時點 t 和給定的窗口 T,該方法用到了三個時間窗口,即 t 到 t-T+1(記為窗口 W1,長度為 T),t-T 到 t-2T+1(記為窗口 W2,長度為 T),以及 t 到 t-2T+1(記為窗口 W,長度為 2T)。不難看出,W = W1+W2。該方法的步驟如下:
1. 用窗口 W1 內(nèi)的最高價和最低價計算 N1 = (最高價 – 最低價) / T;
2. 用窗口 W2 內(nèi)的最高價和最低價計算 N2 = (最高價 – 最低價) / T;
3. 用窗口 T 內(nèi)的最高價和最低價計算 N3 = (最高價 – 最低價) / (2T);
4. 計算分形維數(shù) D = [log(N1+N2) – log(N3)] / log(2);
5. 計算指數(shù)移動平均的參數(shù) alpha = exp(-4.6*(D-1)),并使其滿足在 0.01 和 1 之間;
6. 將 alpha 帶入指數(shù)移動平均的公式求解 t 時刻的 FRAMA 移動平均值。
下圖比較了?T = 100?時指數(shù)移動平均以及分形自適應(yīng)移動平均的平滑效果。很明顯,由于利用了時間序列自身的分形特征,F(xiàn)RAMA 均線對滯后性的提高非常明顯,這意味著在價格趨勢發(fā)生變化的時候它捕捉的更加及時。當然,取決于選取的參數(shù),F(xiàn)RAMA 均線在一些局部可能不夠平滑,它體現(xiàn)了一種動態(tài)的對平滑度和靈敏度的取舍。
6 赫爾移動平均
最后,我們再介紹一種業(yè)界常用的高級移動平均算法,即赫爾移動平均(Hull Moving Average,HMA)。它由 Alan Hull 發(fā)明,故由此得名。該算法最大的特點是在減少滯后的同時有效的提高了均線的平滑程度。在本文中,我們并不對它背后的邏輯做太多的剖析,這將留到今后某一期的精選技術(shù)指標中介紹。我們直接給出它的計算步驟。對于給定的窗口 T:
1. 計算窗口為 T/2 的加權(quán)移動平均,并把結(jié)果乘以 2(如果 T/2 不是整數(shù)則取整);
2. 計算窗口為 T 的加權(quán)移動平均;
3. 用第 1 步的結(jié)果減去第 2 部的結(jié)果,得到一個新的時間序列;
4. 以第 3 步得到的時間序列為對象,計算窗口為 sqrt(T),即根號 T,的加權(quán)移動平均(如果根號 T 不是整數(shù)則取整)。
上述步驟的數(shù)學(xué)表達式為:
最后,比較 T = 100 時分形自適應(yīng)移動平均和赫爾移動平均的平滑效果。令人驚喜的看到,HMA 均線有著不輸 FRAMA 均線的靈敏性(滯后性非常低),并且在局部也提高了平滑性,確實做到了在保證平滑性的同時最大的降低了滯后性。
7 結(jié)語
作為技術(shù)分析的利器,移動平均線人人都在看、人人都在用??捎钟卸嗌偃讼氲们宄?、用的明白呢?本文詳盡的分析了移動平均技術(shù)的本質(zhì),揭示了滯后性產(chǎn)生的原因。通過對五種不同過濾技術(shù)的分析和對比,說明了高級的移動平均技術(shù)(比如 FRAMA 和 HMA)可以有效的降低滯后性并保證均線的平滑性。
免責(zé)聲明:入市有風(fēng)險,投資需謹慎。在任何情況下,本文的內(nèi)容、信息及數(shù)據(jù)或所表述的意見并不構(gòu)成對任何人的投資建議。在任何情況下,本文作者及所屬機構(gòu)不對任何人因使用本文的任何內(nèi)容所引致的任何損失負任何責(zé)任。除特別說明外,文中圖表均直接或間接來自于相應(yīng)論文,僅為介紹之用,版權(quán)歸原作者和期刊所有。