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