趙騰哲 首都經濟貿易大學統計學院
在金融市場,特別是股票市場中,如何精準地選擇股票來規劃自己的投資計劃,以達到規避風險和獲得更多收益的目標,是人們所關注的重點。
國外將機器學習應用于金融市場的研究比較早。2015年Michel Ballings等[1]使用單一分類器模型(神經網絡,邏輯回歸,支持向量機和K近鄰)和集成方法(隨機森林,AdaBoost和Kernel Factory)對未來一年股價方向進行預測。Nikola Milosevic[2]提出了一種機器學習輔助方法,以長期評估股票的未來價格。Badre Labiad等[3]采用了隨機森林、梯度增強樹和支持向量機來預測摩洛哥股票市場的短期變化,證明了隨機森林和梯度增強樹比支持向量機適用于短期預測。Sujin Pyo等[4]使用人工神經網絡,使用帶有多項式和徑向基函數核的支持向量機模型預測了韓國綜合股票價格指數200(KOSPI 200)的價格趨勢。Uma Gurav等[5]基于股票市場投資風險的最小化與預測誤差的最小化緊密相關的事實,采用機器學習的方法對于動態股票市場進行預測。Keywan等[6]講述了機器學習的理論和方法,進行實例演示,說明投資者如何在避免模型過擬合時運用機器學習算法準確地預測股票的收益。Dominik Wolff等[7]使用隨機森林,正則Logistic回歸等模型對1999年至2019年期間標準普爾500指數歷史成份股的每周數據進行了股票特征訓練,以預測特定股票在接下來的一周內是否跑贏大盤。2020年Wenjie Lu等[8]提出了一種CNN-BiLSTM-AM的方法來預測第二天的股票收盤價。Doron Avramov等[9]基于深度學習的投資成功地識別了與大多數異常現象一致的錯誤定價股票。韓山杰等[10]基于TensorFlow,構建多層感知器模型,用于預測每日收盤股價。彭燕等[11]證實了股票的調整不是按照均勻的時間過程推進,而是具有自身的推進過程,幫助投資者進一步的了解實際股價并且構建合適的股票投資策略。馮宇旭等[12]將LSTM用于滬深300指數的股價預測中,獲得了比較好的預測效果。2021年趙紅蕊等[13]提出了一種在結合長短期記憶網絡和卷積神經網絡的基礎上引入注意力機制的股票預測混合模型。胡聿文等[14]提出一種基于PCA和LASSO的LSTM神經網絡股票價格預測模型,提高股票價格的預測精度。方義秋等[15]提出了一種聯合RMSE損失LSTM-CNN的方法,在預測效果上具有良好的可行性和普適性。李瀟俊等[16]發現基于LSTM模型和GRU模型構建的混合循環神經網站模型在長期預測上具有更高的預測精度。2022年,曹超凡等[17]融合卷積神經網絡和長短時記憶網絡,構建CNN-LSTM模型的基礎上,引入多向延遲嵌入的張量處理技術MDT,驗證了引入MDT技術的有效性和可行性。嚴冬梅等[18]提出一種結合自注意力機制和殘差網絡的生成式對抗神經網絡模型。能不同程度地減少預測誤差。
上述文獻中所使用的模型多為多種神經網絡的混合模型,例如CNN-LSTM神經網絡。然而LSTM作為一種預測時間序列數據的神經網絡,其本身對數據的擬合效果非常好,加入其他網絡可能令預測結果變差。針對上述問題,本文選擇適當加深維度后的模型,與當前預測效果好的混合模型進行對比,使用上證綜指進行分析,讓模型自主尋找最優的超參數,從預測模型的擬合精度和程度分別判斷模型好壞。結果顯示文章所使用的模型都有較高的預測精度,充分證明了加深模型深度比模型混合對于股價的預測效果提升更加明顯,為股價預測的神經網絡模型的優化方向提供思路。
循環神經網絡(RNN)是一種專門用來處理序列數據的神經網絡,相比與于普通前饋神經網絡,其可以接受自身和其他神經元的信息,構成了循環結構,可以有效地挖掘出數據中的時序信息,因此在語音識別、語言模型、機器翻譯等方面表現良好。
但在使用RNN處理問題時一般存在一系列問題,例如“長期依賴”問題。長期是指所預測的目標在序列靠前的位置,但在多次傳播以后,循環神經網絡難以學習到時間久遠的信息,從而無法進行準確的預測,同時梯度消失和梯度爆炸是困擾RNN模型訓練的關鍵原因之一。由于RNN的權值矩陣循環相乘導致矩陣高次冪,在多次傳播后,大部分情況下梯度傾向于消失,小部分情況下趨于爆炸。
LSTM神經網絡提出的動機是為了解決上面提到的問題。為了解決長期依賴問題,LSTM引入了門機制,不同于RNN全盤接受信息,LSTM加入了門之后,對所輸入的信息進行了選擇,從而可以獲取較遠的序列的信息。
LSTM計算過程如下:
(1)選擇忘記過去某些信息
ht?1是LSTM神經元單元在最后時刻的最終輸出值,xt是當前時刻的輸入,σ是激活函數,ft是當前時刻遺忘門的輸出,W是權重,B為偏差。
(2)記憶現在的某些信息

it是當前時刻的輸入門輸出是當前時刻的候選單元狀態。
(3)將過去與現在的記憶進行合并

Ct是當前時刻的單元狀態,Ct?1是先前時刻的單元狀態。
(4)計算得到輸出值

ot是輸出門的輸出值,ht是當前時刻的輸出。
GRU則進一步簡化了LSTM,將遺忘門和輸入門合二為一,只保留了更新門和重置門兩種門操作。在LSTM中長期記憶會影響到某一時刻的模型輸出,而GRU則直接把某一時刻的長期記憶作為輸出,一邊修改長期記憶一邊進行輸出,所以這使得GRU比LSTM具有更少的輸入(LSTM有三個輸入,GRU只有兩個)和更簡單的結構,運算量也相對減少。
GRU運算過程如下:
先使用上一時刻的輸出和當前時刻的輸入X做出兩個獨立的門出來。Zt為重置門,tR為更新門。

(2)先生成臨時激活值,可以發現Rt越大,之前的信息就帶入越多。

(3)加權生成最后的輸出

卷積神經網絡是一種前饋神經網絡,在自然語言處理和圖像處理方面具有優異的表現。卷積結構減少了神經網絡占用的內存,局部感受野和權值共享成功減少了參數的數量,提高了模型的效率,防止參數過多導致模型過擬合。
卷積神經網絡主要由卷積層、池化層和全連接層構成。其中卷積層和池化層是卷積神經網絡獨有。卷積核是卷積層中的主要部分,超參數主要為卷積核大小、填充和步長,通過卷積層的卷積操作,可以提取出數據特征,但提取出的特征維度高,池化層的主要目的就是為了降低特征維度,減少計算量,降低神經網絡的訓練成本,通常會在卷積層的后面加一個池化層。池化層的超參數主要為池大小、填充和激活函數。
卷積神經網絡的訓練過程如下:
1.向模型輸入數據,卷積神經網絡使用梯度下降算法,因此需要對輸入數據進行標準化,提升卷積神經網絡的表現。
2.初始化模型的權值和閾值,固定學習率等超參數。
3.輸入數據依次通過卷積層、池化層和全連接層得到輸出值。
4.計算輸出值與目標值之間的誤差,依次計算各個層之間的誤差,計算出權值和閾值的調整量,對其更新。
5.訓練多次后,判斷模型的結果是否符合預期,未滿足繼續迭代,滿足后訓練結束,保存權值和閾值。
為了對各類模型做出更加準確的評價,筆者采用三種評價指標來衡量模型的擬合效果,分別是和R2。
三種指標的公式分別如下:

本實驗選擇上證綜指(000,001)作為實驗數據,選取的數據來源于Choice金融終端,數據較為可靠,數據時間范圍從1991年7月1日至2020年8月31日共7127個交易日。每條數據包含8個變量:開盤價、最高價、最低價格、收盤價、成交量、成交金額、漲跌額和漲跌幅。本實驗以前6627個交易日的數據作為訓練集,以后500個交易日的數據作為測試集。部分樣本數據展示如表1所示。

表1 樣本數據
本文對數據建模的過程如下:
1.輸入訓練所需要的數據。
2.對數據進行預處理,由于數據各個變量值之間相差較大,為了使訓練后的模型更加準確,對數據做標準化處理。
3.初始化神經網絡的權重和偏置,設置好網絡層數,通過隨機搜索找到合適的范圍,通過網格搜索找到最優隱藏單元數等,設置超參數。
4.將數據輸入到神經網絡中,設置學習率衰減策略和早停法,便于更好的擬合模型和防止產生過擬合,通過神經網絡得到輸出值。
5.判斷模型迭代是否完成或者達到設定要求,滿足條件后完成訓練,更新并保存神經網絡;未滿足條件更新模型的權重和偏置繼續訓練。
6.將預測的數據輸入訓練好的模型,并進行標準化處理。
7.通過訓練好的模型得到預測值,對預測值做反標準化,與真實的預測值進行比較,計算相應的,判斷哪種模型對數據的擬合效果更好
8.為防止神經網絡擬合出現極端值的情況,整個過程共循環10次,記錄的數值,計算平均值,使結果更具說服力。
在本實驗中,神經網絡的訓練參數都相同,迭代次數為100次,損失函數為MAE,優化器選擇Adam,批量大小為64,時間步長為10,初始學習率為0.001。在卷積神經網絡中卷積層包含32個卷積核,內核大小為1,激活函數為tanh,填充為same,池化層大小為1,激活函數為tanh,填充為same,神經網絡中的隱藏單元數均為256。
在設定隱藏單元數時,運用隨機搜索和網格搜索,令模型自主選擇最優的參數,筆者為了兼顧運算的時間和擬合效果,將單元數上限設置為256。
為了使擬合效果更好,筆者采用學習率衰減策略,逐步降低學習率,以求達到最好的擬合效果,同時防止擬合次數過多產生過擬合現象,采用早停法進行限制。
由于神經網絡每次訓練的初始權重和參數都不同,為了能夠避免出現極端數值,筆者采用多次訓練的方法,將每次訓練的結果置于數據框中,共訓練10次,求取各個評價指標的均值作為最終結果(見表2)。

表2 神經網絡參數
筆者利用處理后的訓練集數據分別對CNN、RNN、LSTM、CNN-RNN、CNN-LSTM、雙層RNN和雙層LSTM進行訓練后,利用訓練完成的模型對測試集數據進行預測,并將真實值與預測值進行比較(見圖1-圖7)。

圖1 CNN

圖2 RNN

圖3 LSTM

圖4 CNN-RNN

圖5 CNN-LSTM

圖6 雙層RNN

圖7 雙層LSTM
在九種預測方法中,實值和預測值的折線擬合度從低到高排序分別為CNN、CNN-RNN、CNN-LSTM、雙層RNN、RNN、單層LSTM和雙層LSTM。雙層LSTM的擬合程度最好,預測值和真實值幾乎相互重合,CNN的擬合程度最差。根據每種方法的預測值和實際值,每種方法的評價指標都可以為計算得到后,所有方法的比較結果見表3、圖8-10所示。

圖8 MAE圖

圖9 RMSE圖

圖10 R2圖
從表3和圖8-10中可以看出,CNN的MAE,RMSE最大,R2最小,雙層LSTM的MAE,RMSE最小,R2最大,在所有模型中,使用CNN來提取特征或者直接進行預測的模型的擬合結果都比其他模型差,通過對比RNN和LSTM,可以發現,不管是單獨使用LSTM和RNN模型,還是與CNN結合使用,LSTM模型的擬合結果均要優于RNN模型。

表3 預測誤差表
同時,在使用雙層模型進行處理的過程中,雙層LSTM的模型優于單層LSTM,但RNN的結果與之相反,說明在某種程度上,加深神經網絡層數會帶來一定的改善,但也要具體問題具體分析。
總體而言,循環神經網絡預測股價具有良好的性能,但當數據的變量較少時,使用CNN作為特征提取的方法并不能優化模型,反而不如單純的循環神經網絡。當神經網絡擬合結果達不到預想程度時,可以適當加深神經網絡的層數進行嘗試,可能會有更好的結果。因此,在利用前十天的數據來預測下一天的收盤價,神經網絡可以很好地預測第二天的收盤價,為投資者的投資提供參考,同時對于預測上證指數而言,雙層LSTM是一種最好的選擇。
本文根據股票價格數據的時間特征,使用CNN、CNN-RNN、CNN-LSTM、雙層RNN、RNN、單層LSTM和雙層LSTM模型來預測股票收盤價,本文以上證綜指的相關數據為例,以開盤價、最高價、最低價格、收盤價、成交量、成交金額、漲跌額和漲跌幅作為變量,充分利用股票數據的時間序列特征,使用前十天的數據,預測第二天的收盤價。在所有模型當中,雙層LSTM模型對于股價的預測具有更好的效果。實驗結果表明CNN不適用于預測時間序列數據;LSTM模型均優于RNN模型,說明LSTM模型可以更好地擬合時間序列數據。相較于利用CNN提取特征的CNN-RNN、CNN-LSTM,雙層RNN、RNN、單層LSTM和雙層LSTM模型,對于股價的預測具有更好的效果,說明多種神經網絡混合不會確切的改善結果。對比雙層RNN、單層RNN、單層LSTM和雙層LSTM模型的結果,單層RNN、雙層LSTM模型的比雙層RNN要小、比單層LSTM要大,證實了適當加深神經網絡深度才會使預測精度提高,這些結論會為投資者為決策提供幫助。因此,在對神經網絡的優化過程中,先選擇適當的神經網絡,例如RNN、LSTM預測序列數據,CNN預測圖像數據,其次適當加深神經網絡的深度和調參,最后采用多種神經網絡結合的方法,按照這種順序可使神經網絡模型的結果更加準確。
本文也存在著一些不足之處:第一,本文所考慮的只是上證指數,雖然基本可以代表市場的整體情況,但近年來隨著股票市場的發展,越來越多的股票加入,所做的模型和方法亟待進一步的擴展和研究;第二,本文只考慮了股價數據對收盤價的影響,而沒有將新聞和國家政策等因素納入預測之中。未來的工作將會著重在這些方面進行解決,同時會研究模型在其他時間序列數據,例如汽油價格,黃金價格,是否會有更好的表現。