姚洪剛,沐年國
上海理工大學(xué) 管理學(xué)院,上海200093
金融市場的預(yù)測一直是受到廣泛關(guān)注的問題,無論是決策者還是投資者,都期望能夠把握金融市場的動向?qū)で罄孀畲蠡?。然而,金融時間序列由于市場行為機(jī)制的復(fù)雜性而具有高噪聲以及非平穩(wěn)非線性的特點,這些都為金融時間序列的預(yù)測增加了難度。
傳統(tǒng)的時間序列分析模型受限于固定的模型框架以及較為嚴(yán)格的假設(shè)條件,往往不能對復(fù)雜的金融時間序列數(shù)據(jù)做出準(zhǔn)確的預(yù)測。而基于深度學(xué)習(xí)的時間序列分析方法更注重對于數(shù)據(jù)本身的驅(qū)動,通過使用激活函數(shù)能夠處理非線性的問題,因此可以更好地應(yīng)對“非理想化”的時間序列數(shù)據(jù),得到更為準(zhǔn)確的預(yù)測結(jié)果。近年來,一些機(jī)器學(xué)習(xí)方法諸如支持向量機(jī)[1-2]以及人工神經(jīng)網(wǎng)絡(luò)[3-4]被應(yīng)用于分析時間序列,并取得了不錯的效果。隨著深度學(xué)習(xí)的發(fā)展,一類專門用來處理序列的循環(huán)神經(jīng)網(wǎng)絡(luò)及其變種LSTM模型被提出[5],LSTM在多個領(lǐng)域中取得巨大成功[6-8],并開始成為從深度學(xué)習(xí)角度處理金融時間序列的主要方法[9-10]。
基于深度學(xué)習(xí)衍生出多種預(yù)測金融時間序列的改進(jìn)方案,從金融序列高噪聲這一角度而產(chǎn)生的一類做法是通過對序列去噪[11-12]或平滑處理[13]以降低金融時間序列的噪聲或波動性,從而提升深度學(xué)習(xí)方法的預(yù)測性能。但是這類做法均是一次性將所有序列進(jìn)行平滑或小波去噪,然后再將其劃分訓(xùn)練集和測試集輸入模型,這就造成了訓(xùn)練過程中使用到測試集的信息,因此使用滑動窗口的多步處理代替一次處理更符合實際情況。
雖然小波變換在去噪方面使用十分普遍,但小波函數(shù)以及分解層數(shù)的選擇卻是一個問題,尤其是在按滑動窗口分解時,不同時間段可能需要不同的設(shè)定。Huang等[14]提出經(jīng)驗?zāi)B(tài)分解方法,通過一定規(guī)則對序列進(jìn)行分解,相較于小波分解,EMD具有自適應(yīng)性,能夠避免小波分解的設(shè)定問題。目前關(guān)于LSTM結(jié)合EMD的應(yīng)用多是通過EMD分解得到的不同頻率分布的多個序列分別輸入LSTM,再利用集成的思想建立模型[15-16]。這里同樣是一次分解處理的原因,由于訓(xùn)練過程中使用到測試集的信息,無法有效說明模型的效果。
針對以上問題,提出基于EMD滑動窗口去噪結(jié)合LSTM網(wǎng)絡(luò)的金融時間序列預(yù)測模型。通過對原始序列按一定大小的時間窗口進(jìn)行EMD分解,使用閾值法對分解后的高頻序列去噪,再對所有序列重構(gòu)輸入LSTM,從而提升模型的預(yù)測性能。
經(jīng)驗?zāi)B(tài)分解(EMD)作為一種處理非平穩(wěn)非線性序列十分有效的方法,克服了小波分解的基函數(shù)需要設(shè)定的問題,具有自適應(yīng)性。本質(zhì)上,EMD是一個平穩(wěn)化過程,通過一種固定模式將序列分離出不同尺度的平穩(wěn)波動項以及一個殘差趨勢項,其中每一個波動項被稱之為本征模態(tài)函數(shù)(IMF)。IMF分量的確定需要滿足兩個條件:
(1)該分量的極值點和過零點的數(shù)目必須相等或最多相差一個。
(2)對于每一個時間點,由該分量局部極大值點通過三次樣條插值形成的上包絡(luò)線和局部極小值點形成的下包絡(luò)線的平均值為零,即兩條包絡(luò)線關(guān)于時間軸局部對稱。
EMD的具體分解方法[14,17]如下:
(1)確定待分解序列X(t)所有局部極大值和極小值點,使用三次樣條插值連接所有局部極大值點形成上包絡(luò)線u0(t),同樣將所有局部極小值點形成下包絡(luò)線l0(t)。
(3)判斷h1(t)是否滿足IMF的條件,如果滿足,則h1(t)為第一個IMF,否則對h1(t)依照X(t)做同樣的處理。對得到新的分量h2(t)=h1(t)-m1(t),做同樣的判斷和處理,直到hk(t)滿足IMF條件或者達(dá)到停止標(biāo)準(zhǔn),停止標(biāo)準(zhǔn)如下:
當(dāng)SD小于某一特定值即達(dá)到停止標(biāo)準(zhǔn),其中特定值一般在之間選取。至此得到第一個IMF分量imf1。
(4)將剩余分量r1=X(t)-imf1作為新的待分解序列并重復(fù)以上步驟,直到分量imfn或剩余分量rn小于預(yù)定值或者剩余分量rn變成單調(diào)函數(shù)時結(jié)束。此時:
至此,對于原始序列X(t)的分解完成。IMF分量imfk隨著k的增加而頻率降低,即先分解出的IMF分量是原始序列的高頻部分,也是含噪較高的部分;剩余分量rn即為反映原始序列趨勢的趨勢項。
EMD的去噪思路是對IMF中含噪較高的高頻分量進(jìn)行去噪處理。確定高頻分量和低頻分量需要計算IMF能量[17]:
其中,imfkt表示IMF分量imfk在t時刻的值,T為序列長度。高頻IMF分量能量較低,低頻IMF分量能量較高,IMF能量在高頻分量和低頻分量之間存在一個突變過程,確定突變點即可確定高頻分量的范圍。突變點可由以下方式估計[18]:
即遍歷每一IMF能量作為突變點K,其中使R(K)達(dá)到最大的點即為突變點K0。
確定突變點K0后,對imf1~imfK0分別進(jìn)行去噪處理,得到去噪后的分量imf′1~imf′K0。將去噪后的高頻分量與低頻分量以及趨勢項重構(gòu),得到原始序列X(t)去噪后的序列X′(t):
本文采用閾值法[17-18]去噪,公式如下:
循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)的網(wǎng)絡(luò)層接受當(dāng)前時刻的輸入xt以及上一個時刻的網(wǎng)絡(luò)狀態(tài)ht-1,得到當(dāng)前時刻的網(wǎng)絡(luò)狀態(tài)ht并作為下一時刻的輸入。循環(huán)神經(jīng)網(wǎng)絡(luò)關(guān)注歷史因素的影響使其適合處理時間序列問題,其工作原理如下:
式(9)表示狀態(tài)更新過程,式(10)表示預(yù)測輸出過程。其中xt為t時刻的輸入特征,ht為t時刻的狀態(tài)向量,ot為t時刻的輸出。循環(huán)神經(jīng)網(wǎng)絡(luò)更新狀態(tài)向量常常使用:
激活函數(shù)σ多為tanh函數(shù)。
由于標(biāo)準(zhǔn)RNN的結(jié)構(gòu)過于簡單,常常無法長期保存有效信息,即短時記憶問題。為了有效延長這種短時記憶,提出了LSTM網(wǎng)絡(luò)[5]。相較于標(biāo)準(zhǔn)的RNN,LSTM在保留了狀態(tài)向量ht的基礎(chǔ)上,增加了一個記憶狀態(tài)向量ct,同時引入門控機(jī)制,通過門控(遺忘門、輸入門、輸出門)來控制序列信息的遺忘與更新。
LSTM網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示,狀態(tài)的更新規(guī)則如式(12)~(17)所示。式(12)表示遺忘門過程,用于控制t-1時刻的記憶狀態(tài)向量ct-1進(jìn)入t時刻LSTM單元的量gf?ct-1。因此激活函數(shù)σ一般使用Sigmoid函數(shù),保證gf的取值范圍在0~1之間,當(dāng)gf=1時,LSTM單元接受ct-1的所有信息;當(dāng)gf=0時,LSTM單元完全忽略ct-1的所有信息。式(13)、(14)表示輸入門過程,式(13)用于控制t-1時刻的狀態(tài)ht-1和t時刻的輸入xt通過非線性變換得到新的輸入向量式(14)用于控制進(jìn)入t時刻LSTM單元的量同樣使用Sigmoid激活函數(shù),當(dāng)gi=1時,LSTM單元完全接受新輸入c?t,當(dāng)gi=0時,LSTM不接受新輸入c?t。式(15)表示t時刻LSTM單元記憶狀態(tài)向量ct的更新方式。式(16)、(17)表示輸出門過程,這里對ct通過tanh激活函數(shù)進(jìn)行轉(zhuǎn)換,門控g0用于控制記憶狀態(tài)向量ct生成輸出向量ht的量由于所以輸出向量
基于以上討論,提出一種利用EMD滑動窗口去噪結(jié)合LSTM網(wǎng)絡(luò)的金融時間序列預(yù)測模型:EMD-LSTM模型,如圖2。
考慮到對整體序列一次性直接去噪,利用了大量的未來數(shù)據(jù),這在實際情況下是無法實現(xiàn)的,選擇使用固定大小的滑動窗口對序列按單位時間步提取去噪。設(shè)定時間窗口大小為n,窗口移動的步長為1,提取的第一組序列為對該序列使用自適應(yīng)的EMD去噪方法,得到第一組去噪序列移動一個時間步,繼續(xù)提取第二組序列,去噪得到繼續(xù)移動時間步并做去噪處理,直到整個序列取完為止。
假設(shè)利用過去m個時間步的值預(yù)測當(dāng)前值,其中m≤n。使用去噪后的序列作為LSTM的輸入,則輸入為每組去噪序列的最后m個去噪數(shù)據(jù)構(gòu)成的序列:
實證數(shù)據(jù)取自上證指數(shù),上證指數(shù)反映了上海證券交易所上市的所有股票價格的變動情況,其變動趨勢在一定程度上能夠反映中國宏觀經(jīng)濟(jì)的走勢。實證的預(yù)測目標(biāo)是上證指數(shù)的收盤價,收盤價作為交易所每一個交易日的最后一筆交易價格,既是當(dāng)日行情的標(biāo)準(zhǔn),又是下一個交易日的開盤價的依據(jù),具有重要的意義。實證選擇的輸入特征為上證指數(shù)的收盤價、最高價、最低價、開盤價、漲跌幅、成交量以及成交金額。對于一些短期技術(shù)指標(biāo),因其均由收盤價的線性或非線性變換而得到,而LSTM模型本身就具有不錯的特征提取能力,所以不予考慮,只以交易數(shù)據(jù)的7個指標(biāo)作為輸入。以2010年到2017年共8年的日度交易數(shù)據(jù)作為訓(xùn)練集訓(xùn)練模型,以2018年到2019年共2年的日度交易數(shù)據(jù)作為測試集評估模型。
為了克服特征序列之間不同量綱的影響,提升模型精度,并提高迭代求解的收斂速度,在訓(xùn)練模型之前選擇以訓(xùn)練集的序列數(shù)據(jù)的最大值和最小值對所有的特征序列以及目標(biāo)序列做歸一化處理:
其中,x為所有原始數(shù)據(jù),xtrain為訓(xùn)練集數(shù)據(jù),x′為所有歸一化后的數(shù)據(jù)。
將歸一化后的數(shù)據(jù)輸入模型,模型變成對歸一化后的收盤價的預(yù)測,因此需再將最終輸出的結(jié)果進(jìn)行反歸一化處理即得到最終的預(yù)測結(jié)果。
為了對比EMD-LSTM模型與標(biāo)準(zhǔn)LSTM的預(yù)測效果,從三個角度選取衡量指標(biāo)。平均絕對百分誤差(MAPE)用于衡量模型預(yù)測結(jié)果與真實值之間的相對偏差;可決系數(shù)(R2)用于衡量模型的擬合優(yōu)度;同時考慮金融時間序列在方向上的預(yù)測具有重要意義,使用方向正確率(DA)衡量模型在序列方向上的預(yù)測效果。三個衡量指標(biāo)計算公式如下:
其中,n為測試集序列長度,yi為收盤價的真實值,y′i為收盤價的預(yù)測值,yˉ為測試集收盤價均值。
設(shè)定LSTM輸入序列時間步為10,即以過去10個交易日數(shù)據(jù)預(yù)測下一個交易日收盤價。設(shè)定去噪窗口大小∈[15,30,60,120,240],通過網(wǎng)格搜索,去噪窗口大小為120個時間步時,模型效果最好。選擇兩種方式對序列滑動窗口去噪:一種是前文介紹的EMD閾值去噪,另一種是直接將EMD得到的趨勢項簡單作為去噪結(jié)果。將兩種處理方式得到的結(jié)果分別輸入LSTM模型,比較兩種去噪處理方式的差異。
對于LSTM網(wǎng)絡(luò)結(jié)構(gòu)的設(shè)定如下:由于特征維度為7,兩層LSTM相對于一層LSTM,預(yù)測性能并沒有提升,反而增加了模型復(fù)雜度,因此只使用一層LSTM。隱藏層神經(jīng)元個數(shù)為4,在LSTM輸出層后加入一層線性網(wǎng)絡(luò)得到最終輸出。批處理大小為128(每訓(xùn)練128組樣本迭代更新一次參數(shù));訓(xùn)練次數(shù)為200次(將所有訓(xùn)練集樣本完整訓(xùn)練200次);以歸一化后的收盤價的預(yù)測值和真實值的均方誤差MSE作為損失函數(shù),并加入L2正則化;使用Adam優(yōu)化算法更新參數(shù)。
對于標(biāo)準(zhǔn)LSTM和文獻(xiàn)[15-16]所使用的EMDLSTM模型以及本文提出的兩種不同去噪處理的EMDLSTM模型在測試集的預(yù)測效果如表1。
表1 模型效果比較
表1 給出了四種模型的衡量指標(biāo),其中EMDLSTM_1代表文獻(xiàn)[15-16]所使用的EMD-LSTM模型,其針對一次分解的每一個本征模態(tài)函數(shù)分別做預(yù)測,再將所有結(jié)果相加得到最終預(yù)測;EMD-LSTM_2代表直接使用EMD得到的趨勢項作為去噪結(jié)果的EMDLSTM模型;EMD-LSTM_3代表使用EMD閾值去噪法的EMD-LSTM模型。結(jié)果顯示,兩種去噪處理的EMDLSTM模型相對于標(biāo)準(zhǔn)LSTM模型,預(yù)測效果均有提升,特別是使用閾值去噪的EMD-LSTM模型無論是預(yù)測精度還是預(yù)測方向上均是性能最優(yōu)的。直接使用趨勢項的EMD-LSTM雖然相較于其他兩個模型預(yù)測效果稍好,但不如閾值去噪的EMD-LSTM,可能是因為趨勢項雖然包含了序列的大部分信息且噪聲極少,但卻缺失了存在于本征模態(tài)函數(shù)分量中的一些有用信息。而文獻(xiàn)[15-16]所使用的EMD-LSTM模型在方向上的預(yù)測較好,但在預(yù)測精度上表現(xiàn)不理想,在其訓(xùn)練過程中,發(fā)現(xiàn)LSTM在噪聲較高的前幾個本征模態(tài)函數(shù)上的表現(xiàn)不佳,顯然高噪聲的因素影響了LSTM的預(yù)測效果。
圖3 2018年上半年預(yù)測結(jié)果
圖4 2018年下半年預(yù)測結(jié)果
圖5 2019年上半年預(yù)測結(jié)果
為了更直觀地表現(xiàn)四種模型的預(yù)測差異,將測試集共兩年的收盤價預(yù)測結(jié)果分為圖3~6展示,每張圖為半年的預(yù)測結(jié)果。其中黑色虛線代表真實收盤價,綠色實線代表標(biāo)準(zhǔn)LSTM模型的收盤價預(yù)測,橙色實線代表文獻(xiàn)[15-16]所使用的EMD-LSTM收盤價預(yù)測,藍(lán)色實線代表直接使用趨勢項作為去噪結(jié)果的EMD-LSTM收盤價預(yù)測,紅色實線代表使用閾值法去噪的EMD-LSTM收盤價預(yù)測。由圖可知,四種模型的預(yù)測結(jié)果與收盤價的真實趨勢基本相同,卻沒有哪一個模型能夠解決時間序列預(yù)測普遍存在的滯后性問題。通過對比四種模型的預(yù)測結(jié)果與真實值處于相同趨勢的位置,可以發(fā)現(xiàn),閾值去噪的EMD-LSTM模型在同一個趨勢的極大多數(shù)情況下距離真實值最近,直接使用趨勢項作為去噪結(jié)果的EMD-LSTM次之??梢哉J(rèn)為EMD-LSTM模型相比于標(biāo)準(zhǔn)的LSTM減輕了一定的滯后性,保留更多有用信息的閾值去噪EMD-LSTM表現(xiàn)最好。
圖6 2019年下半年預(yù)測結(jié)果
本文利用EMD去噪方法設(shè)計了滑動窗口去噪結(jié)合LSTM網(wǎng)絡(luò)的金融時間序列的預(yù)測模型:EMD-LSTM。實證結(jié)果表明滑動窗口EMD去噪的引入,提升了LSTM的預(yù)測性能,無論是預(yù)測精度還是預(yù)測方向上均有一定的提升。EMD-LSTM通過滑動窗口以及EMD的自適應(yīng)性,克服了一次性分解和去噪的不合理性以及小波基的選擇問題,具有一定的優(yōu)勢。雖然仍然沒有解決時間序列預(yù)測的滯后性問題,但對預(yù)測結(jié)果的分析可以看出,EMD-LSTM相對于標(biāo)準(zhǔn)LSTM緩解了一定的滯后性問題,尤其是使用保留更多有效信息的閾值去噪,效果最好。因此如果可以找到基于EMD更好的去噪方法,也許EMD-LSTM的預(yù)測性能以及滯后性都將得到更好的解決。