楊語蒙,李興東
(蘭州交通大學(xué),蘭州 730070)
在股票市場中,股票價格的升降受到各項綜合指標(biāo)的影響,如宏觀經(jīng)濟(jì)層面、經(jīng)濟(jì)動蕩層面、股民意愿層面、社會輿論層面等。人們較多的關(guān)注股票價格的波動趨勢以及漲跌情況,希望實時的掌握股票市場的信息,進(jìn)而避免利益損失。由于股票市場的非線性復(fù)雜性、價格的波動變幻萬千以及影響股票價格的因素千差萬別,使得研究股市波動成為國家經(jīng)濟(jì)發(fā)展不可或缺的一部分。早期研究中,預(yù)測股票市場走勢的方法千差萬別。時間序列預(yù)測方法是通過研究對象的時間排序數(shù)據(jù)進(jìn)行預(yù)測分析,反映預(yù)測對象發(fā)展變化的規(guī)律。該系列的預(yù)測方法主要有自回歸模型AR、移動平均模型MA、移動平均自回歸模型ARIMA、廣義自回歸異方差模型GARCH等。如張旭東[1]提出了基于離散型隱馬爾可夫模型的股票價格預(yù)測;崔文喆[2]借助GARCH-BP組合模型實現(xiàn)了股票價格的預(yù)測。這些時間序列模型屬于傳統(tǒng)的股票價格預(yù)測方法,最早被引入股票市場,受到了廣泛關(guān)注。
隨著宏觀經(jīng)濟(jì)的深入以及市場愈加復(fù)雜,股價研究方法也隨之變得成熟,發(fā)現(xiàn)這些傳統(tǒng)的時間序列預(yù)測方法和機器學(xué)習(xí)預(yù)測模型[3-4]在預(yù)測準(zhǔn)確性方面并不能很好的發(fā)揮作用,它們未考慮到序列的長期記憶信息以及股票市場區(qū)別于其他市場的復(fù)雜性、無規(guī)律性等特點,從而未能對股票價格變動做出很精準(zhǔn)的估計。
為了解決傳統(tǒng)預(yù)測方法預(yù)測精度低、預(yù)測效果差等問題,后來又逐漸引入了神經(jīng)網(wǎng)絡(luò)預(yù)測模型。如羅鑫[5]提出基于多時間尺度復(fù)合深度神經(jīng)網(wǎng)絡(luò)模型對股票價格做預(yù)測;張杰[6]針對馬氏鏈的股票價格預(yù)測提出了長短時記憶神經(jīng)網(wǎng)絡(luò)LSTM預(yù)測模型[17];史建楠[7]首先通過DMD算法提取包含整體市場和特定股票走勢變化信息的模態(tài)特征,然后針對不同市場背景,采用LSTM網(wǎng)絡(luò)對基本面數(shù)據(jù)和模態(tài)特征進(jìn)行價格建模預(yù)測。
本文針對滬深300近幾年的股票數(shù)據(jù),引入優(yōu)化長短時記憶網(wǎng)絡(luò)模型GA-LSTM。即借助全局尋優(yōu)遺傳算法GA對LSTM模型的參數(shù)進(jìn)行優(yōu)化調(diào)參。通過比較LSTM與GA-LSTM模型對非線性時間序列良好的預(yù)測能力,實驗證明,組合模型GA-LSTM可以充分考慮模型參數(shù)的自動尋優(yōu),從而進(jìn)一步促進(jìn)了股票市場的研究與發(fā)展。
遺傳算法是一種基于選擇搜索的全局尋優(yōu)算法,模擬了遺傳和選擇過程中的繁殖、雜交和突變現(xiàn)象。在遺傳算法開始的時候會隨機產(chǎn)生一些個體,根據(jù)在GA算法里自定義的適應(yīng)度函數(shù)分別對每一個個體進(jìn)行計算評估,給出一個適應(yīng)度值。基于此適應(yīng)度值,選擇一些個體用來產(chǎn)生下一代,然后選擇出來的個體再經(jīng)過交叉和變異進(jìn)行再組合從而生成新的一代,以此類推朝著最優(yōu)解的方向進(jìn)化。全局尋優(yōu)算法GA的模型流程如圖1所示。
圖1 遺傳算法流程
若用二進(jìn)制編碼表示個體,則二進(jìn)制數(shù)轉(zhuǎn)化為十進(jìn)制數(shù)的解碼公式可以為:
其中bi1,bi2,…,bil為某個個體的第i段,每段段長都為l,每個bij都是0或者1,Ti和Ri是第i段分量xi的定義域的左右兩個端點。
循環(huán)神經(jīng)網(wǎng)絡(luò)RNN只能存儲短期記憶,會遺忘長期記憶信息,為了記住有用的長期信息,后面引入了長短時記憶神經(jīng)網(wǎng)絡(luò)模型LSTM,該模型是RNN的拓展網(wǎng)絡(luò)結(jié)構(gòu)[8]。該模型可以有效地同時利用短期記憶信息和長期記憶信息,從而可以有效的避免梯度消失導(dǎo)致某些信息丟失的問題[9],在處理較長間隔的時間序列方面具有很大的優(yōu)勢。
LSTM模型是在RNN基礎(chǔ)上增加了記憶細(xì)胞,使得該模型可以記住長期序列中的有用信息[10],通過已有的激活函數(shù)Relu、Sigmoid、Tanh與softmax來控制輸出值的范圍,激活函數(shù)是在輸入數(shù)據(jù)前已經(jīng)確定好的,連接層是通過不同大小的權(quán)重相連接[11]。
LSTM模型主要由三種門組成,如圖2所示,分別為輸入門it,輸入門Ot,遺忘門ft,它們可以為LSTM的神經(jīng)元中的單元提供信息。其中遺忘門是為了從細(xì)胞狀態(tài)中選擇性地遺忘沒有價值的信息:ft=δ(Wf·[ht-1,xt]+bf);輸入門是主要為了選擇性將新的信息輸入到神經(jīng)元的細(xì)胞:it=δ(Wi·[ht-1,xt]+bi);輸出門的作用對象為隱層ht,會輸出當(dāng)前時刻LSTM的輸出值ht與當(dāng)前時刻細(xì)胞的單元狀態(tài)ct:ht=ot*Ct。
圖2 LSTM模型結(jié)構(gòu)
引入GA遺傳算法的雙向長短時記憶神經(jīng)網(wǎng)絡(luò)LSTM模型,是指利用GA算法對預(yù)測模型LSTM進(jìn)行全局參數(shù)尋優(yōu),模型結(jié)構(gòu)如圖3所示。
圖3 預(yù)測階段模型結(jié)構(gòu)
1.3.1 數(shù)據(jù)預(yù)處理階段
將原始數(shù)據(jù)集進(jìn)行清洗、再對量綱不一致的特征屬性轉(zhuǎn)變?yōu)橐恢碌奶卣鲗傩?,如使用?biāo)準(zhǔn)化或歸一化處理,將原始數(shù)據(jù)轉(zhuǎn)變到[0,1]之間。
1.3.2 GA遺傳算法優(yōu)化參數(shù)的步驟
(1)產(chǎn)生初始群體。
(2)染色體二進(jìn)制編碼群體。
(3)用適應(yīng)度函數(shù)計算個體適應(yīng)度P(xi)=
(4)進(jìn)行基因重組。
(5)進(jìn)行基因變異。
(6)得到新的種群。
1.3.2 LSTM預(yù)測模型
最終模型會輸出當(dāng)前時刻LSTM的輸出值ht與當(dāng)前時刻細(xì)胞的單元狀態(tài)ct[12],其中:
對于結(jié)果連續(xù)的回歸問題,一般使用的大致為:MSE(均方差)、擬合優(yōu)度R2[13]。
(1)平均平方誤差(MSE)為:
(2)決定系數(shù)又被稱為R2為:
其中均方誤差MSE越小,則說明模型擬合程度越高,預(yù)測效果越好[18]。決定系數(shù)R2∈(-1,1),R2的值越接近于1,說明該模型的精度越高。該論文中以均方誤差MSE和R2這兩個指標(biāo)來評判模型的好壞。
在Python 3.7與Anaconda的環(huán)境下,借助Scikit-Learn機器學(xué)習(xí)工具進(jìn)行建模預(yù)測滬深300股票的收盤價。
本文數(shù)據(jù)是來自于網(wǎng)易財經(jīng)網(wǎng)站上滬深300股2018年1月2日到2020年9月21日的663個交易日數(shù)據(jù),其中所含特征屬性包括:日期、開盤價、最高價、最低價、收盤價、調(diào)整的收盤價、成交量。其數(shù)據(jù)的樣本量充足,且該股也是在金融領(lǐng)域具有代表性的研究對象,其中將數(shù)據(jù)集的80%做為訓(xùn)練集,20%的數(shù)據(jù)作為測試集,這使得基于時效性和數(shù)據(jù)量兩個層面讓預(yù)測結(jié)果更加精準(zhǔn),使得研究結(jié)果更加符合目前股票市場的行情波動。
由于成交量與各維度間的量綱不同,直接用于模型的訓(xùn)練很不專業(yè),為了使其量綱保持一致,使數(shù)據(jù)有利于建立更高效的預(yù)測模型,提高模型的擬合程度,降低預(yù)測誤差,我們需要對數(shù)據(jù)集的各個維度進(jìn)行歸一化處理。
本文通過收盤價的序列預(yù)測,采取等步預(yù)測法,將前五天的收盤價作為輸入變量輸入GALSTM組合模型中去預(yù)測第六天的收盤價,然后再迭代利用第二天到第六天的收盤價去預(yù)測第七天的收盤價,以此類推利用最后五天收盤價的預(yù)測值去預(yù)測未來一天的收盤價從而達(dá)到預(yù)測的作用。
基于SVM模型、XGBoost模型、LSTM模型以及GA-LSTM模型預(yù)測股票收盤價未來走勢,從而得出預(yù)測效果最佳的模型,如表1所示。
表1 網(wǎng)格參數(shù)設(shè)置
其中LSTM模型中對應(yīng)的時間步長為5,隱藏層與神經(jīng)元個數(shù)屬于LSTM超參數(shù),后期實驗中需要調(diào)節(jié)該參數(shù)以使得模型得到最優(yōu),借助全局尋優(yōu)GA遺傳算法對構(gòu)建好的LSTM模型參數(shù)尋找最優(yōu)參數(shù)值。進(jìn)而達(dá)到對股票價格未來趨勢很好的預(yù)測效果。進(jìn)而對滬深300股票進(jìn)行神經(jīng)網(wǎng)絡(luò)深度學(xué)習(xí)預(yù)測[14]。
在本次實驗中,為了盡可能地避免模型過擬合,我們選取的優(yōu)化方法是“dropout”方法,該方法的作用機制是在進(jìn)行傳播的時候刪除一些結(jié)點,這樣的話我們就可以降低網(wǎng)絡(luò)的復(fù)雜性,從而使得建立的神經(jīng)網(wǎng)絡(luò)模型就不會變的過擬合。
針對我們該實證用到的數(shù)據(jù)集,對它做描述性分析,對應(yīng)的詳細(xì)數(shù)值如表2所示。
表2 樣本數(shù)據(jù)的描述信息
表2展示了滬深300股的數(shù)據(jù)基本信息。其中X1-Open、X2-High、X3-Low、X4-Close、X5-Adj Close、X6-Volume、mean-股票收盤價價的平均值、min-最小值,std-標(biāo)準(zhǔn)差,min-最小值、0.25和0.70代表數(shù)據(jù)集的四分位數(shù)、0.50代表中位數(shù)、max-股票收盤價的最大值。利用Python 3繪制出滬深300收盤價的大致走勢與股票日成交量如圖4所示。
圖4 2018~2020年股票收盤價走勢情況
由Python自帶的matplotlib繪圖庫畫出滬深300股在2018~2020年大盤的走勢圖,在圖中可以看出該支股票的趨勢有高有低,呈現(xiàn)出無規(guī)律的波動性,2018年全年出現(xiàn)了好幾次反彈,但整體處于下跌的趨勢,直到2018年的11月,這段時間股票價格下跌流暢,跌勢兇猛,好在股票在2019年1月開始反彈,反彈到同年4月,但總體上看股票價格的總體變化趨勢處于上升的狀態(tài)。通過對樣本數(shù)據(jù)的可視化分析,能夠直觀地讓股民了解當(dāng)前一段時間內(nèi)股票市場的價格波動情況,為我們后續(xù)預(yù)測打下堅實的基礎(chǔ)。根據(jù)繪圖工具畫出股票成交量的變化趨勢如圖5所示。
圖5 2018~2020年股票成交量走勢情況
股票的成交量與股票該月的開盤價、收盤價等存在著很強的相關(guān)性,隨著每天股票價格的不斷調(diào)整,人們對股票的買入或賣出決策也在改變。在2018年3月股票價格出現(xiàn)較大幅度的下跌的時候,對應(yīng)著該月的成交量也隨之減少。在2019年1月份股票價格開始回升,其對應(yīng)這段時期的成交量也出現(xiàn)了上升趨勢。
圖6 滬深300股票的指數(shù)走勢
滬深300股的均線圖可以側(cè)面反映一段時期內(nèi)股票波動的方向,股民主要通過均線圖去判斷大盤和個股近期的發(fā)展趨勢,并做出合理的決策。當(dāng)日均線向下時,則股票的趨勢是走下坡;當(dāng)日均線向上時,則股票的趨勢是向好的一面發(fā)展。10日均線說明了股票近10日內(nèi)短期發(fā)展趨勢的好壞程度;52日均線說明了股票近一個多月中期的發(fā)展趨勢;252日均線可以大致說明股票長期趨勢的好壞。根據(jù)股票對應(yīng)日均線可以較為準(zhǔn)確的判斷出股民在哪天購入或拋出股票會盡可能帶來收益或者減少損失。
2.5.1 GA遺傳算法優(yōu)化模型
遺傳算法GA模型中的參數(shù)分別返回的是LSTM的層數(shù)、全連接層的層數(shù)、LSTM每層神經(jīng)元的個數(shù)以及全連接層每層的神經(jīng)元個數(shù),以模型的預(yù)測精度作為GA算法中的適應(yīng)度,尋找出最高預(yù)測精度對應(yīng)的模型參數(shù),從而進(jìn)一步在原有模型的基礎(chǔ)上全局尋優(yōu)了最佳參數(shù)[15]。LSTM模型定義的損失函數(shù)為“MSE”,優(yōu)化方法為“Adam”,模型評價標(biāo)準(zhǔn)為輸出值與標(biāo)簽值得差。最終遺傳算法的最優(yōu)參數(shù)輸出結(jié)果如表3所示。根據(jù)遺傳算法輸出的三個參數(shù)值對應(yīng)的模型預(yù)測效果表可得,當(dāng)LSTM層的層數(shù)以及每層LSTM層對應(yīng)神經(jīng)元的個數(shù)、全連接層dens層數(shù)以及每層對應(yīng)神經(jīng)元個數(shù)分別取2(190,224)、1(122)時,對應(yīng)的LSTM模型的適應(yīng)度最高,即可得到較高的預(yù)測精度和較好的預(yù)測效果。
表3 遺傳算法的優(yōu)化參數(shù)
2.5.2 預(yù)測模型對比
圖7 LSTM模型的預(yù)測
圖8 GA-LSTM模型的預(yù)測
圖9 GA-LSTM與LSTM模型對比
圖10 模型預(yù)測結(jié)果對比
表4 模型評價指標(biāo)對比表
通過觀察模型評價指標(biāo)R2與MSE發(fā)現(xiàn):GALSTM組合模型的R2為0.9381,模型的誤差MSE為0.2487。即組合的GA-LSTM預(yù)測模型對應(yīng)的R2較單一模型LSTM上升了0.0182左右,均方誤差下降了0.0399左右。
主要是針對前面介紹的內(nèi)容和實證的結(jié)果做了系統(tǒng)化的總結(jié)與分析,在本文提出方法的基礎(chǔ)上,對該方法在金融市場預(yù)測領(lǐng)域的優(yōu)勢予以說明總結(jié)。本文基于Jupyter-notebook實驗環(huán)境,運用優(yōu)化的神經(jīng)網(wǎng)絡(luò)模型對滬深300收盤價的未來趨勢進(jìn)行預(yù)測,實驗結(jié)果各項指標(biāo)均表明了組合模型GA-LSTM可以更為精確地預(yù)測股票未來的大體走勢,進(jìn)而也進(jìn)一步促進(jìn)了金融市場的進(jìn)步與發(fā)展。
在本文的研究中,雖已初步實證證明了組合模型GA-LSTM的預(yù)測精度更高,預(yù)測效果更好,但由于股票市場是具有復(fù)雜性、不規(guī)律性、無周期性等特點,且滬深300股的數(shù)據(jù)量以及特征屬性較少,在預(yù)測過程中未考慮到社會輿情、政治因素、以序列數(shù)據(jù)的信號特征等條件,使得GALSTM組合模型的可擴展程度和復(fù)雜度受到很大制約[16]。另外,在實驗中,每次訓(xùn)練LSTM模型的權(quán)重會不斷更新、輸出層的層數(shù)不同以及調(diào)整的參數(shù)不同等原因會導(dǎo)致模型的訓(xùn)練結(jié)果有差異。在以后的研究中希望可以在構(gòu)建神經(jīng)模型預(yù)測模型前,加入相依股票的影響以及網(wǎng)絡(luò)輿情的分類結(jié)果,且在此基礎(chǔ)上借助PSO粒子群算法對其預(yù)測模型的參數(shù)進(jìn)行尋優(yōu)建模實現(xiàn)對其收盤價的分析預(yù)測。