














關鍵詞:深度學習;股指預測;CNN模型;LSTM模型;CNN-LSTM組合神經網絡模型
中圖分類號:TP183 文獻標志碼:A
0 引言(Introduction)
隨著金融數字化的快速發展,金融市場的數據量呈現指數級增長,傳統統計模型在股票市場預測的線性、低維缺點日益明顯,無法充分挖掘金融時序數據的信息和準確把握股票價格走向。與此同時,機器學習、深度學習等模型在多領域的應用不斷深化,其強大的非線性、高維數據處理能力與金融數字化不斷融合發展,在金融時間序列尤其是股指預測領域取得了不錯的效果。
目前,在利用深度學習的股市預測任務中,普遍采用卷積神經網絡(CNN)模型、循環神經網絡(RNN)模型、長短期記憶神經網絡(LSTM)模型等單一模型,但每一種模型都有不足之處,例如卷積神經網絡模型未考慮時序信息,循環神經網絡模型存在梯度爆炸[1],以及長短期記憶神經網絡模型無法精準把握高維信息等,在一定程度上影響了模型預測的準確性。為了解決上述問題,提高預測的準確性,本文在參考國內外文獻的基礎上,提出了CNN-LSTM 組合神經網絡模型,該模型在單一模型的基礎上,結合了CNN高維特征挖掘能力與LSTM 時序特征提取能力,提高了模型的預測精度,進一步優化深度學習模型在金融領域的應用。
1 相關研究(Related research)
從單一模型到優化模型再到組合模型,深度學習模型被不斷深入應用于金融領域。從單一模型角度來看,彭燕等[2]結合LSTM的特性和股票市場的特點,搭建不同層數與相同層數下不同隱藏神經元個數的LSTM 模型,預測準確率提高了30百分點。就優化模型的角度而言,裴大衛等[3]將多因子模型思想引入股價預測模型中,在單變量長短期記憶網絡的基礎上建立多變量長短期記憶網絡股價預測模型,不僅提高了模型的預測準確率,并且具有更好的模型魯棒性。宋剛等[4]提出的自適應粒子群優化的長短期記憶股價預測模型,對在滬交所(上海證券交易所)、深交所(深圳證券交易所)和港交所(香港交易及結算所有限公司)上市的股票數據進行比較分析,得到準確度高、具有普遍適用性的模型。
近年來,一些組合模型應用于股票價格預測取得較好的結果。王東等[5]針對股票數據變量較多、數據信息存量存在重疊等問題,提出首先利用主成分分析法降維,然后根據股票特性對模型進行調整后再開展預測,在大大減少運行時間的基礎上降低預測平均誤差。楊語蒙等[6]通過GA(遺傳算法)全局尋優模型尋找LSTM預測模型的最優參數,對滬深300股票收盤價進行預測,對比LSTM單一模型和GA-LSTM 組合模型,得到GA-LSTM模型更優的結論。李輝等[7]為降低數據維度和后續模型的訓練復雜度,利用隨機森林對股票數據選擇最優特征集,再通過長短期記憶神經網絡模型對股票價格進行預測,對預測模型進行參數調優。張怡[8]在LSTM 模型的基礎上引入注意力機制,形成AT-LSTM 模型,將ARIMA(差分整合移動平均自回歸模型)的預測殘差引入AT-LSTM,提高了模型的預測精度。許藝瑋等[9]以2017—2022年的4支白酒股票作為研究對象,提出極限梯度提升機和長短期記憶神經網絡模型組合的XGB-LSTM股票價格預測模型,結果表明組合模型預測損失最小,擬合度最高。
綜上所述,深度學習應用于股票價格預測的研究較為豐富,使用不同的數據處理方法和組合算法模型對預測結果的精度有很大影響。本文沿用組合模型的方法,將卷積神經網絡模型和長短期記憶神經網絡模型進行組合,再將預測結果與上述兩個模型分別進行對比,驗證組合模型的有效性。
2 深度學習算法(Deep Learning algorithm)
2.1 卷積神經網絡模型
卷積神經網絡模型是深度學習中的一個經典算法,在計算機視覺領域具有出色的性能表現,它主要通過局部連接和權值共享降低神經元間連接的權重個數,從而避免了在網絡中因參數過多而引起的過擬合等問題[10]。
卷積神經網絡主要由輸入層、卷積層、池化層、全連接層、輸出層組成。
(1)卷積層
卷積層是CNN模型中關鍵的一層,通過卷積層可以有效地對輸入數據進行特征提取,卷積層接收輸入數據后,使用一個或多個較小的卷積核對數據進行卷積操作,卷積核的大小通常是2*2或者5*5,本文選擇與卷積核尺寸相同的滑動窗口,將卷積核內的元素和滑動窗口內的數據作為點乘,按一定的步長從左至右和從上至下依次移動窗口,卷積操作完成后生成與卷積核個數一樣數量的特征圖。卷積運算示意圖如圖1所示,卷積操作用的數學公式如下:
(2)池化層
卷積層之后通常連接池化層,二者是成對出現的,這是因為卷積層生成的特征圖的信息量相比未進行卷積運算前的信息量呈指數級增長,池化層通過對特征圖進行下采樣處理減小特征圖的尺寸,保留大部分特征信息的同時降低網絡的復雜度,盡可能地避免過擬合現象,常用的池化方式有最大池化(保留滑動窗口內的最大值)、均池化(保留滑動窗口內的平均值)及全局均池化,最大池化示意圖如圖2所示。
(3)全連接層
全連接層是卷積神經網絡模型中非常重要的一部分,該層的所有神經元與上一層的所有神經元互相連接,其作用是將之前卷積層提取的局部特征整合起來,賦予每個特征一個權重,并映射到輸出空間給出預測結果。卷積神經網絡模型通常有兩層全連接層,池化層之后的第一個全連接層稱為扁平化層,它的作用是將經歷卷積層、池化層運算后輸出的高維特征矩陣扁平化為一維向量,以便傳入下一個全連接層,該向量保留了原始特征的非線性關系;第二個全連接層作為輸出層,它的作用是獲得最終的預測結果。
2.2 長短期記憶神經網絡模型
長短期記憶神經網絡模型是循環神經網絡模型的一種優化算法[11],是一種具有記憶功能的神經網絡模型,可以很好地處理時間序列數據中的長期依賴關系。作為RNN模型的改進模型,LSTM模型引入了門控機制和記憶單元,每一個模塊都由遺忘門(FG)、輸入門(IG)和輸出門(OG)3個門控單元組成,依據門控機制控制信息流動及更新記憶單元。
LSTM模型內部結構圖如圖3所示。
3 數據來源與預處理(Data source and preprocessing)
3.1 數據來源
股票價格指數是度量和反映股票市場總體價格水平及其變動趨勢的股價統計相對數,它是國家經濟形勢的綜合反映,因而受到廣大投資者的關注。為了更好地驗證模型的有效性和泛化性,本文選取2012年1月1日至2022年12月31日的上證50、滬深300、中證500三支股指交易數據作為研究對象,包括收盤指數、開盤指數、最低指數、最高指數、日成交量和日成交金額6個特征,共2 673個交易日的數據。數據來源于國泰安數據庫。
3.2 數據預處理
3.2.1 歸一化
本文采用Min-max標準化也稱為離差標準化,通過對原始數據進行線性變化使其映射在[0,1]的區間,其公式表示如下:
3.2.2 訓練集、測試集的劃分
放入模型訓練前,需將原數據集劃分為訓練集和測試集。訓練集用于初次放入模型尋找數據間的關系;測試集用于評價數據相關關系的可靠性,并且不斷地對模型給出反饋,以提高模型的穩定性和泛化性。本文將數據集按8∶2的比例劃分訓練集和測試集。在劃分樣本時,經過多次嘗試,選取20個交易日為一個樣本,用于預測第21日的股票價格。
4 實驗及結果分析(Experiment and result analysis)
4.1 實驗環境
本文構建深度學習模型所用的設備為Win10 64位系統,內存為8 GB,處理器是Intel(R) Core(TM) i5-7300HQ CPU@2.50GHz為2.50 GHz。本文模型的構建全部采用編程語言Python,IDE(集成開發環境)為Pycharm2020。Python在處理深度學習時具有獨特的優勢,其擁有眾多成熟且強大功能的第三方庫,大大提高了編程效率。第三方庫介紹如表1所示。
以上4個指標均能體現模型的預測效果,只是反映誤差的角度不同,故綜合使用4個指標會使評價更準確更客觀。其中,RMSE、MAE、MAPE越小越好,也表示模型預測誤差越小。R2 越接近1,表示模型的預測結果越準確,擬合效果也越好。
4.3 模型結構與超參數優化
4.3.1CNN模型結構
CNN模型具有出色的數據特征提取能力,常用于計算機視覺、自然語言處理等任務。CNN 模型通常由輸入層、隱藏層、全連接層構成,CNN模型結構圖如圖4所示。
CNN模型的第一層為輸入層,第二層為隱藏層,其中包含多個卷積層和池化層的組合。經過多次嘗試,選取兩組卷積層和池化層作為隱藏層,包含卷積核大小、卷積核個數,以及池化核大小等超參數。第三層為全連接層,它將數據最終輸出為一維數據,經過反歸一化后,得到股價數據。
4.3.2LSTM 模型結構
LSTM模型作為深度學習中的重要模型,不僅具有記憶歷史數據信息的優點,同時可以針對歷史信息的重要性選擇性地給予權重,非常適用于時間序列預測,其架構分為3個部分:輸入層、隱藏層及全連接層,LSTM模型結構圖如圖5所示。
LSTM模型的第一層為輸入層,第二層為隱藏層。經過多次嘗試,選取兩個LSTM層構成隱藏層。為了避免過擬合,每個LSTM層都設置了dropout(神經元隨機丟棄率)超參數。第三層為全連接層,也稱為輸出層。將隱藏層中最后一層的數據轉換為一維數據,經反歸一化后,得到股價預測數據。
4.3.3CNN-LSTM 組合神經網絡模型結構
為了充分利用CNN模型和LSTM 模型的優點,CNN模型具有較好的數據特征提取優勢,可以提取LSTM 模型無法提取的高維特征信息,挖掘出股價變化的規律;LSTM 模型對于時序數據具有獨特的優勢,可以把握不同時期的數據的重要性,并賦予不同的權重,避免早期數據在訓練時逐漸消失,更準確地預測股價。本文構建了CNN-LSTM 組合神經網絡模型,包含輸入層、隱藏層、全連接層(輸出層)3個模塊,CNN-LSTM組合神經網絡模型結構圖如圖6所示。
4.3.4 超參數優化
構建模型后,在開始訓練前,需要設置一些初始超參數,具體如下。
(1)卷積核的個數(Kernel Size)和大小(Number):考慮到本文數據的維度,最終設定卷積層1和卷積層2中的卷積核大小均為3*3,卷積核個數通常為32個、64個和128個。
(2)池化核大小:池化層1和池化層2中的池化核大小均為2*2。
(3)隱藏神經元個數(Units):對于兩層LSTM 層,通常第二層神經元的個數是第一層神經元個數的兩倍。
(4)每批訓練數據量大小(Batch_Size):該參數代表單次放入多少條數據進行訓練。
(5)迭代次數(epoch):一個epoch代表所有訓練集完整訓練一次。因此,迭代次數不能設置過小,否則容易導致欠擬合,使模型訓練不充分。同時,迭代次數設置太多,又會導致模型過擬合,隨著epoch的增加,損失函數逐漸趨平。為了避免出現以上情況,本文加入早停策略,即損失函數在多個epoch后變動不大時,停止訓練。
(6)神經元隨機丟棄率(Dropout):為了避免模型過擬合,隨機丟棄神經元,可以使模型得到更完全的訓練,增加其泛化能力。
(7)優化器(Optimizer):優化是指訓練過程中損失函數減少的過程,而優化器則是指優化方法,常用的優化器有SGD(隨機梯度下降)和Adam(自適應矩陣估計)兩種。SGD雖然能在短時間內得到較好的結果,但是容易陷入局部最優解。Adam優化了SGD的缺點,加入了更新的動量和自適應學習率,提高了優化的精度,雖然會延長訓練時間,但是對本文數據集的影響不大,故本文選取Adam作為優化器。
為了使模型達到更好的預測效果,本文設置了網格調參,即為同一參數輸入多個值,不斷組合多個參數的不同值,選擇最優組合。在CNN模型、LSTM 模型和CNN-LSTM 組合神經網絡模型中,主要對CNN 模型卷積層中卷積核的個數和LSTM模型層中神經元的個數進行了網格調參,同時將最優參數組合的模型進行保存。網格調參具體設置如表2所示。
4.4 實驗結果分析
為了驗證CNN-LSTM 組合神經網絡模型應用于股票價格指數預測的有效性和準確性,以及相較于CNN和LSTM 單一模型的優越性。采用RMSE、MAE、MAPE、R2 四個指標,同時為了更直觀地表現預測效果,本研究繪制了股價預測值和實際值的走勢圖,如圖7至圖15所示。不同模型在測試集中的預測效果評價表如表3所示。
結果表明:CNN-LSTM 組合神經網絡模型在上證50、滬深300、中證500三支股指中的預測效果優于CNN 模型、LSTM模型的預測效果,RMSE分別達到了41.427 6、58.9679、87.298 7,相較于兩個單一模型的最優情況提升了28.60百分點、52.56百分點、25.28百分點,MAE、MAPE和R2 三項指標也優于兩個單一模型,證明了CNN-LSTM 組合神經網絡模型的有效性。
不同深度學習模型應用于上證50、滬深300、中證500三支股指交易數據獲得的預測股價與真實股價的對比如圖7至圖9所示。從圖中可以看出,LSTM 模型的預測性能優于CNN模型的預測性能,CNN-LSTM組合神經網絡模型的預測性能優于單一模型的預測性能,其預測更精準和有效。
由圖7至圖9可見,在3種模型中,上證50CNN-LSTM組合模型的測試集擬合度優于CNN模型的測試集擬合度和LSTM模型的測試集擬合度,而LSTM模型的測試集擬合度又優于CNN模型的測試集擬合度。與表3中的結果一致。
圖10至圖12清晰地展示了3種模型在滬深300測試集擬合度的排序,從高到低依次為CNN-LSTM 模型、LSTM 模型、CNN模型。
根據圖13至圖15,中證500CNN-LSTM 組合模型的測試集擬合度優于CNN 模型和LSTM 模型的測試集擬合度,LSTM 模型的測試集擬合度又優于CNN 模型的測試集擬合度。
5 結論(Conclusion)
本文基于2012年1月1日至2022年12月31日的上證50、滬深300、中證500三支股指日交易數據,分別構建了卷積神經網絡模型、長短期記憶神經網絡模型和CNN-LSTM 組合神經網絡模型,并采用多個指標對預測結果進行評價。主要的研究結論如下:第一,LSTM 模型優于CNN模型,CNN-LSTM組合神經網絡模型優于LSTM 模型;第二,CNN-LSTM 組合神經網絡模型的預測更精準、更有效,RMSE指標分別提升了28.60百分點、52.56百分點和25.28百分點。
作者簡介:
高 源(2000-),男,碩士生。研究領域:金融數據分析。
黃 犚(1974-),女,碩士,副教授。研究領域:金融統計。