葉 康,鄧曉衛,呂學斌
(南京工業大學 數理科學學院,江蘇 南京 211816)
股票市場指數是由證券交易所或相關金融機構編制的反映股票市場走勢的一類時間序列數據。根據設定的目標不同,計算指數的股票樣本抽取的范圍就不同,從而形成了各種不同的指數,如上證50、滬深300、中證500、工業指數、商業指數等。這些指數構成了衡量股票市場整體或某行業股票價格水平及其變動趨勢的重要指標,一定程度上也是一個國家政治、經濟發展狀態或一個行業發展狀態的“晴雨表”。各類指數或從總體或從不同側面體現了證券市場價格變化的狀況以及不同行業的景氣程度,能夠反映市場熱點變化方向,因此,根據指數變化狀況來決定投資方向,根據各類指數的樣本股票的構成來確定權益投資配置比例,是目前大部分投資者特別是機構投資者的重要投資策略;進而,對證券市場各種指數走勢進行預測,對其未來發展趨勢做出預判,以保證投資決策盡可能規避風險獲取穩定收益,更是個人和機構投資者十分關注的核心問題。
研究股票市場指數走勢規律,對指數未來走勢進行預測,傳統使用的方法是經典的時間序列分析方法,如:自回歸積分移動平均(ARIMA)模型、自回歸條件異方差(ARCH)模型、廣義自回歸條件異方差(GARCH)模型等[1-3]。然而,隨著世界政治、經濟形勢越來越復雜,各國經濟之間的相互交融與滲透越來越深入,證券市場受外界干擾、影響的程度就越來越大。具體反映在證券市場的表現就是各類股票指數走勢不僅呈現出非線性特征,更呈現出大波動、非平穩和高噪聲等特征。對這類復雜數據如果仍然采用傳統方法來建模預測,難以獲得好的效果。隨著機器學習方法的研究深入,學者們發現將機器學習方法引入預測模型比原有時間序列模型預測要精準、有效。于是基于機器學習方法的各種模型被應用于證券市場指數預測研究。
王運豪(2019)[4]在原有ARIMA-GARCH模型的基礎上引入了支持向量回歸機(SVR),通過將由ARIMA-GARCH模型估計出的GARCH項作為SVR的輸入特征對指數進行預測,結果發現所提出的新模型的預測結果誤差大大減小。崔文喆等(2019)[5]比較了GARCH模型與BP神經網絡模型在股票價格預測方面的優劣,發現在中期和長期預測中BP神經網絡模型的預測效果要優于GARCH的預測效果。王禹等(2019)[6]提出了一種基于Cart決策樹與Boosting方法結合的股票預測方法,很好地解決了過擬合問題,較單一決策樹模型預測均方誤差有所下降。循環神經網絡(RNN)作為時間序列數據預測首選的方法常被用于分析預測股價走勢(王理同等,2019)[7]。但RNN方法存在的最大問題是梯度消失問題,于是經過改進,學者們引入了長短期記憶神經網絡(LSTM)模型。彭燕等(2019)[8]將蘋果公司2000—2018年的相關交易數據進行差分、小波降噪、歸一化等預處理后,推送到搭建的不同LSTM層數與相同層數下不同隱藏神經元個數的LSTM網絡模型中進行測試、比較,找出適宜的LSTM層數與隱藏神經元個數,發現二層LSTM模型的預測準確率比單層LSTM提高了30%。周凌寒(2018)[9]在LSTM時間序列模型的基礎上引入了情感特征作為輸入量進行預測,并且采用卷積神經網絡(CNN)優化情感特征的提取,最后使模型的準確性提升了5.7%。李佳等(2019)[10]將LSTM神經網絡模型用于對上證指數和滬深300指數的預測,取得了較高的預測精度并證明了LSTM模型對股指預測的適用性。然后將LSTM與RNN、CNN、SVR、ARMA等模型的預測效果進行比較,發現神經網絡預測方法明顯優于SVR和ARMA方法,而在神經網絡模型中LSTM對時間序列的預測效果最好。但LSTM模型存在參數設置較多、收斂速度慢等缺陷;另一方面,股票市場受外部多種環境因素的影響,在股票價格或指數走勢上表現為很強的隨機性和復雜的非線性,因此僅用單一的機器學習方法進行預測,其精度提升仍有較大空間。
美國NASA的華裔科學家Huang等(1998)[11]和Wu等(2004)[12]針對信號去噪問題提出了一種時域濾波算法,稱之為經驗模態分解(Empirical Mode Decomposition,EMD)。它把原始序列分解為有限個不同頻率的固有模態函數(Intrinsic Mode Function ,IMF)和一個趨勢項序列,以實現對非平穩、非線性復雜信號數據的分解。研究發現,EMD方法在非線性、非平穩的時間序列分析與預測應用中具有顯著優勢。但EMD存在分解不徹底、模態混疊以及產生虛假分量等問題。學者針對這些問題進行改進,提出了EEMD(集合經驗模態分解)方法以及CEEMDAN(完全集合經驗模態分解)方法[12-13]。基于證券市場指數走勢的非線性、非平穩特點,金融研究工作者嘗試將EMD及其發展的方法引入證券市場指數走勢的預測中,通過將復雜的指數信息進行分解,然后與機器學習方法結合,對證券市場指數進行預測,取得了較好的效果。這方面具有代表性的文獻是:李斌和王正(2012)[14]最早將EMD分解算法應用于股指股價時間序列分析,建立了EMD結合神經網絡的分析模型。劉佳褀等(2019)[15]將EEMD與BP神經網絡結合,對上證指數進行預測,發現EEMD-BP神經網絡模型比單獨BP神經網絡模型具有更高的預測精度。李晨亮(2019)[16]建立基于EEMD-LSTM模型的滬深300指數預測模型,結果顯示EEMD-LSTM模型對比EMD-LSTM具有更優的預測效果。2019年,Jian等(2018)[17]使用CEEMDAN模型對股價序列做分解,結合LSTM模型進行預測,發現改進后的CEEMDAN-LSTM模型的預測精度優于原先EEMD-LSTM模型。從現有文獻看,目前對股票市場指數走勢擬合預測效果較好的模型是CEEMDAN-LSTM模型,但CEEMDAN-LSTM模型存在的主要問題是:在通過CEEMDAN分解后,需要對多個序列進行LSTM建模預測,而LSTM模型本身存在設置參數較多、收斂速度慢等問題。Bahdamau等(2014)[18]首次提出門控循環單元(GRU)模型,研究顯示:GRU模型優化了LSTM模型結構,在訓練、學習過程中具有較好的預測精度且訓練效率更高。基于此,本文提出基于CEEMDAN與GRU結合的股市指數預測模型——CEEMDAN-GRU模型,利用GRU模型對復雜數據的高效預測能力,通過分解、預測、合成獲得原數據的預測值。以滬深300指數為例,引入正確率、擬合優度、均方誤差、平均絕對誤差等多個指標,驗證CEEMDAN-GRU模型在指數預測上較之已有的模型具有誤差更小、預測精度更高等優勢。
CEEMDAN分解方法是在EMD方法的基礎上發展起來的。如前所述,EMD是由美籍華裔科學家Huang等(1971)[11]和Wu等(2004)[12]針對信號去噪問題提出的一種時域濾波方法——經驗模態分解法,該方法與傳統的傅里葉分解和小波分解方法具有本質的區別,它不需要在分解前提前設定基函數,可以很好地適應非平穩的復雜數據序列。
設x(t)為原始復雜時序數據,EMD方法有三個基本假設:①序列x(t)至少包含一個極大值與一個極小值;②相鄰極值點的時間間隔是時間尺度的特征;③如果原始序列中不存在極值點,但存在拐點,可在分解前對其求微分,然后對分解結果進行積分得到相應的分量。同時,EMD方法還規定分解出的IMF必須滿足以下兩個條件:①IMF的極值點的個數與零點的數量相差不能超過1;②IMF局部極大值的包絡線函數和IMF函數局部極小值的包絡線函數的和為0。條件①是常見的分析窄帶數據的要求,條件②則保證了IMF對應的每個時刻的瞬時頻率都具有一定意義。在基本假設滿足的前提下,EMD分解過程如下:
(1)找出x(t)中所有局部極大值和極小值。
(2)利用三次樣條插值,擬合極大值和極小值形成上下包絡線,記為u(t)和l(t)。
(3)計算上、下包絡線的均值:
(1)
(4)原序列減去均值序列得到新序列h1(t):
h1(t)=x(t)-m(t)
(2)
若新序列h1(t)滿足IMF的兩個條件,那么它就是所求的第一個IMF。
(5)若h1(t)不滿足條件,則把h1(t)作為新的原始序列,重復上述三個步驟,直至得到的新序列滿足IMF的條件,最終得到的新序列h1(t)即為IMF,記為:IMF1(t)。
(6)使用原始序列x(t)減去分解出的IMF序列IMF1(t),計算殘差序列r1(t):
r1(t)=x(t)-IMF1(t)
(3)
將殘差序列r1(t)作為新的起始序列重復步驟(1)至(5),繼續分解產生新的IMF分量IMFk(t),k=2,3,…,n,直至得到的殘差rn(t)為一個常數或者單調函數。
最終得到:
(4)
其中IMFk(t),k=1,2,…,n的頻率按照從高到低的順序依次輸出,最終的殘差序列rn(t)即為原始序列的趨勢項。
經驗模態分解方法在處理原始信號時,會產生“模態混疊”問題,即在一個固有模態函數IMF中,包含差異極大的特征時間尺度或者相近的特征時間尺度分布在不同的固有模態中,這種現象會極大影響信號預測精度。學者們針對“模態混疊”問題,提出集合經驗模態分解(Ensemble Empirical Mode Decomposition,EEMD),通過加入高斯白噪聲極大地減少了“模態混疊”的產生。但EEMD分解又會使各個模式分量上殘留的噪聲帶來重構誤差的問題。為了解決這個問題,一種具有自適應白噪聲的完全集合經驗模態分解方法(Complete Ensemble Empirical Mode Decomposition with Adaptive Noise,記為CEEMDAN)被提出,CEEMDAN的分解過程如下。
設x(t)為待分解的原始序列,Ek表示經EMD分解后的第k個固有模態分量(IMF),εm~N(0,1)為第m次加入的白噪聲。
首先,對序列x(t)有限次加入自適應的白噪聲序列φ1εm,m=1,2,…,M,其中φ1為自適應項。于是產生M個混合序列:
xm(t)=x(t)+φ1εm,m=1,2,…,M
(5)
對每個混合序列進行前述(1)至(5)的經驗模態分解并保留第一個固有模態分量,然后對得到的M個固有模態分量計算均值序列得到CEEMDAN分解的第一個固有模態分量cIMF1,即:
(6)
其次,記CEEMDAN第一次分解后產生的余量序列為r1(t)=x(t)-cIMF1,類似第一步的方法對混合序列加入高斯白噪聲分量得到r1(t)+φ2E1(εm),m=1,2,…,M,然后對混合序列進行經驗模態分解得到M個固有模態分量。此時再對得到的固有模態分量計算均值序列,則CEEMDAN分解的第二個固有模態分量為:
(7)
一般地,若已分解得到k-1個固有模態分量cIMF1,cIMF2,…,cIMFk-1重復上面第二步,對混合余量序列rk-1(t)+φkEk-1(εm),m=1,2,…,M進行分解,得到CEEMDAN分解的第k個固有模態分量為:
(8)

門控循環單元(GRU)是LSTM模型的一個變體,但較之LSTM更為精簡。LSTM(長短期記憶神經網絡)是針對RNN神經網絡在處理長期依賴的時間序列數據時出現的梯度消失問題被提出的。LSTM 的核心概念在于細胞狀態以及“門”結構。它是一種特殊的循環體,通過“門”的設定來有選擇地決定信息是否影響每個時刻的狀態。LSTM新增的隱藏層c(細胞狀態),能夠將有用的信息一直傳遞下去。LSTM包含的三個“門”及功能分別是:遺忘門,控制當前狀態中哪些信息被移除;輸入門,控制哪些信息傳遞到當前狀態中;輸出門,控制當前狀態中哪些信息被輸出。GRU神經網絡模型則通過引入更新門取代了LSTM模型中的遺忘門和輸入門的功能,在保證原有預測性能的基礎上,降低參數的設置個數,加速收斂,提升了訓練效率。GRU模型的結構框架如圖1所示。

圖1 門控循環單元結構
更新門,用于確定上一時刻隱藏層的輸出ht-1有多少信息保留和添加多少新信息xt,數學模型為:
rt=σ[Wr·(ht-1,xt)+br]
(9)
其中σ、Wr、br分別為sigmoid函數、更新門的權值向量和更新門的偏置,(a,b)表示將a、b兩個向量相連。“·”表示逐點相乘。
重置門,用來決定忘記多少過去的信息,數學模型為:
zt=σ[Wz·(ht-1,xt)+bz]
(10)
其中Wz、bz分別為重置門的權值向量和重置門的偏置。
GRU隱藏狀態的數學模型為:
(11)
(12)
其中,式(9)至式(12)中xt、ht為輸入、輸出向量,rt,zt分別表示更新門和重置門的輸出。GRU用更新門和重置門替代LSTM中的遺忘門、輸入門和輸出門,一方面,由GRU模型的設置方法能保存時間序列數據的重要特征;同時,因為GRU少了一個門函數,因此其參數會小于LSTM。基于該系統的結構特點,在處理復雜金融時間序列數據時,可以做到更高效且又不降低估計效率。
將股票指數數據經CEEMDAN方法分解為不同頻率的IMF分量和一個殘差趨勢項,其后將分解后的不同頻率的序列各自導入一個GRU神經網絡模型提取各個分量的運行特征以獲得更好的單分量預測效果,將各分量預測值加總,最終獲得指數預測更為精確的預測結果。預測步驟如下:
第一步:通過CEEMADN方法將預測指數分解為幾個不同頻率的IMF分量和一個趨勢項。
第二步:將分解后的各固有模態函數分量和趨勢項進行標準化處理后作為輸入量,導入GRU預測模型分別進行訓練、調優、預測、反標準化,得到各個分量的預測值。
第三步:將各個IMF預測值進行加和集成,得到相應指數的預測值。
預測邏輯框圖如圖2所示。

圖2 CEEMDAN-GRU預測模型框架圖
下一單元將以滬深300指數為例對本文建立的CEEMDAN-GRU預測模型進行實證檢驗,并對預測結果的優劣從多角度進行評價。
滬深300指數是以上海和深圳證券市場中300只規模大、流動性好的股票為成分股。它們覆蓋了滬深市場近六成的市值,代表了滬深兩市A股市場的核心優質資產,具有良好的市場代表性。基于此,本文以滬深300指數2013年2月7日至2020年6月30日共1795個交易日的收盤價數據為樣本,將其分為“訓練集”“驗證集”和“測試集”,通過CEEMDAN-GRU模型對其走勢進行預測,并對預測結果進行評價,如圖3所示。數據來源于通達信交易軟件,本文使用基于Python的Keras深度學習庫進行模型搭建。

圖3 滬深300指數
圖3給出了滬深300指數該時間段的走勢圖,從圖中可以看到滬深300指數在2013年2月至2020年6月近8年的走勢中包含了暴漲、暴跌、快速反彈等各種非線性復雜情形。以此數據為樣本,利用CEEMDAN-GRU建模預測可以考驗模型的魯棒性,增強模型預測結果的說服力。
首先將滬深300指數序列通過CEEMDAN分解,得到七個IMF分量,記為:cIMFk,k=1,2,…,7和趨勢序列R。分解后的七條cIMFk及趨勢序列R曲線圖如圖4所示。為便于比較,將滬深300走勢的縮小圖列于第一個。

圖4 CEEMDAN分解
由于滬深300指數振幅巨大,為消除不同分量數據極差太大對訓練效果的影響,這里,將指數序列分解完成后,先對各個cIMFi分量和趨勢序列R進行標準化處理。本文采用常用的最大最小標準化方法,以cIMFk示例(R標準化過程完全類似),公式如下:
(13)
其中min(cIMFk)表示序列cIMFk的最小值,max(cIMFk)表示序列cIMFk的最大值。標準化后,每一個序列的變化范圍均介于[-1,1]之間。對標準化后的數據進行學習、模擬及預測,將得到預測值可以通過(13)式反解得到原序列cIMFk的預測值。在應用GRU神經網絡模型進行機器學習過程中,我們取1795個樣本中的85%作為訓練集和驗證集(共1525個樣本,其中15%為驗證集),15%為測試集(270個樣本)。
針對每個cIMFk(k=1,2,…,7)和趨勢序列R建立GRU預測模型。采用滾動時間窗滾動預測方式,即以前30日的收盤價數據通過GRU模型預測下一日的收盤價。本文在參考賀毅岳等(2020)[20]搭建雙層GRU神經網絡(第一層128個神經元,第二層64個神經元)的基礎上,在每層GRU后都增加了Dropout層用于防止模型過擬合,失活率設置為0.2。本文神經網絡全部采用Adam優化器,初始學習率為0.001,以均方誤差MSE為損失函數,bach_size設置為6(注:bach_size代表一次帶入訓練的樣本大小,它的取值直接影響單次訓練耗時和訓練效果,bach_size越大,單次訓練時間越短,但是相應的訓練效果會下降)。
為了簡化模型設置,各個子序列使用相同的GRU神經網絡架構,并且引入相同的早停機制(patience=200),即當epoch次數增加200次,loss值卻不再下降時停止訓練,保存當前最優模型參數。模型訓練學習框架如圖5所示。

圖5 GRU神經網絡模型架構
圖6給出了CEEMDAN-GRU模型對270個測試集各cIMFk(k=1,2,…,7)和趨勢序列R的預測走勢曲線與真實曲線圖疊合圖,圖7給出了經式(13)加和重構后滬深300指數的預測結果曲線與實際滬深300指數走勢疊合曲線。
從圖6的預測曲線和真實曲線的疊合圖來看,GRU模型對分解的高頻模態函數cIMF1的擬合效果較差,但隨著分解出的模態函數周期變大,GRU模型對cIMFk(k=2,3,…,7)的擬合效果越來越好。下一節將定量從多個維度評價CEEMDAN-GRU模型的預測效果,并與其他模型預測結果作比較。

圖6 滬深300指數測試集子序列預測

圖7 滬深300指數測試集預測(CEEMDAN-GRU模型)
本文將從三個方面來評價CEEMDAN-GRU模型對指數走勢的預測效果。
第一,漲跌正確預測率評價。漲跌正確預測率,即統計一段時間內的實際漲跌天數和預測漲跌天數的吻合率,也稱之為勝率。顯然,勝率越高,該模型在實際應用中的功效就越強大。本文以滬深300指數為例,在時間跨度為270天的測試集中,計數實際漲跌天數并統計預測值同時間的漲跌方向,結果顯示漲跌正確的預測天數達到了224天,準確率為82.96%①。進一步統計預測值和實際值偏差低于0.5%的天數為210天,準確率為77.78%。
第二,與已有的預測方法GRU、LSTM、CEEMDAN-LSTM等模型的預測結果比較。首先,本文用同樣的數據,分別用GRU、LSTM、CEEMDAN-LSTM等模型對該數據集通過訓練、驗證和測試得到各模型相應的測試集預測結果,圖8給出了上述3類模型及本文所建模型的預測走勢曲線與實際滬深300指數走勢曲線的疊合圖;然后,引入擬合優度(R2)、均方誤差(MSE)、平均絕對誤差(MAE)和平均絕對百分比誤差(MAPE)等作為評價指標,比較GRU、LSTM、CEEMDAN-LSTM等模型預測結果與本文所提模型CEEMDAN-GRU預測結果的優劣。MSE、MAE和MAPE評價指標計算公式如下:

各模型預測結果的相關指標計算結果由表1給出。從表1可以看出:本文提出的CEEMDAN-GRU模型在對滬深300指數的預測中其擬合優度最高,為95.9%;而預測誤差參數MSE、MAE、MAPE均為最小,說明本文提出的模型在指數預測上,其精度最高、誤差最小。由表1還可看出,采用CEEMDAN方法與機器學習方法疊加后的模型進行數據預測,其效果顯著優于直接用機器學習方法建模預測的效果(GRU,LSTM),這表明時間序列數據的預測經過CEEMDAN方法分解后再結合其他方法可以有效提高預測的精度,這個結論與其他學者研究的結論相吻合[16,17,19]。

表1 不同模型預測評價指標比較表

圖8 滬深300指數測試集與四種預測模型擬合曲線圖
第三,為驗證模型的穩定性和普適性,本文將CEEMDAN-GRU模型應用于上證指數、中證500、深證成指等指數進行預測,然后計算其擬合優度和誤差評價指標,各指數的預測評價指標結果如表2所示。從表2可以看出:CEEMDAN-GRU模型對這四類不同指數預測的擬合優度都達到了94%以上。三個誤差評價指標MSE、MAE、MAPE,上證指數和滬深300的結果較深圳成指和中證500的結果要小,即預測精度要高,這與各類指數成分股的構成差異有關。上海證券交易所上市公司多由國有大、中型企業構成,滬深300指數則是以上海和深圳證券市場中300只規模大、流動性好的股票為成分股;而深圳證券交易所上市公司則側重于創投和中小企業,中證500則是剔除滬深300指數成分股,由A股市場中、小市值公司的一批股票作為成分股構成。中、小市值股票的波動性更大,這使得由CEEMDAN分解出的短周期、高頻數據列波動更復雜,導致GRU模型對這一部分的預測的精度降低,從而使整體預測誤差增大。但從MAE、MAPE來看均在較低的水平上(MSE的計算是將誤差平方疊加,放大了誤差結果),可見CEEMDAN-GRU模型在對其他不同指數的預測上同樣具有不俗的預測效果。

表2 不同指數預測評價指標
本文通過將CEEMDAN方法與GRU神經網絡模型相結合建立了CEEMDAN-GRU預測模型,并將該模型用于預測滬深300指數的走勢。預測步驟為:(1)利用CEEMDAN模型將指數序列分解為7個cIMF和一個趨勢項R;(2)對每個cIMF及R采用GRU神經網絡模型進行預測;(3)將步驟(2)得到的預測結果進行重構得到指數的預測結果。從預測勝率和與其他模型的預測結果比較兩個測度對該模型進行評價。結果顯示:通過統計實際漲跌天數與同期預測的漲跌天數比較,準確率達到82.96%;與其他常用的預測模型GRU、LSTM、CEEMDAN-LSTM的預測結果進行比較,從擬合優度、平均誤差、均方誤差等多方面一致性驗證了CEEMDAN-GRU模型的預測精度更高。同時,為檢驗模型預測的穩健性和普適性,還對上證指數、中證500、深證成指等指數進行建模預測(具體過程省略)并計算了相關評價指標,結果顯示本文建立的CEEMDAN-GRU,在對其他指數的預測中仍然獲得了較高的擬合優度,同時對大市值股票的預測精度要高于小市值股票的預測精度。
就本文提出的預測模型還存在進一步改進的方向:(1)本文采用的GRU神經網絡模型含有兩個隱藏層,對其中各層神經元的個數都是根據經驗確定的,后續可以考慮結合遺傳算法等方法尋找最優的神經元個數配置。(2)在實證過程中,由于cIMF1分量頻率高,包含了大量噪聲,本文使用的GRU神經網絡模型對這一分量數據的預測效果并不好,這也是最后加總指數預測誤差的主要來源。根據上述預測效果評價公式,這里計算了經GRU分解后的7個IMF分量預測結果的評價指標(表3),結果顯示cIMF1的預測效果最差,誤差最大,這與圖6顯示的結果一致。

表3 子序列預測評價指標
因此針對高頻高噪聲序列數據,尋找更有效的除噪方法和預測方法,以進一步提高整體預測精度是下一步研究的重點。
注 釋:
①此處給出的勝率忽略了交易成本。同時,研究中由于是用歷史已知數據,因此檢驗預測正確率用的是滾動預測法。這是目前評價模型預測效果的通用方法,即預測明天的數據時,用的是今天已有的真實值而不是今天的預測值。實際操作時就只能在收盤后預測,第二天實施買賣操作。那么就會出現正確預測到漲但買不到、正確預測到跌但賣不出的尷尬局面。這些問題都有待實操中進一步解決。