方義秋,盧 壯,葛君偉
重慶郵電大學 計算機科學與技術(shù)學院,重慶400065
金融市場起著社會資源再分配的重要作用,其健康良性發(fā)展有利于增加社會投資熱情,加快經(jīng)濟建設(shè)的進程。如今,我國金融市場建設(shè)日趨完善,因交易產(chǎn)生了海量的數(shù)據(jù),再加上算力大幅度提高,催生了金融從業(yè)者和研究人員使用機器學習和深度學習的研究熱情。
經(jīng)過歷代研究人員的不懈努力,目前已經(jīng)開發(fā)出很多算法用于股票預(yù)測。早前,差分自回歸移動平均(autoregressive integrated moving average model,ARIMA)模型[1]因其統(tǒng)計特性被眾多研究人員用于時間序列預(yù)測。然而,ARIMA 模型只能提取數(shù)據(jù)中的線性特征,在對具有高度非線性特征的股票數(shù)據(jù)研究中,適合提取非線性特征的機器學和深度學習方法逐漸占據(jù)主流。機器學習算法中的支持向量機(support vector machine,SVM)因其訓(xùn)練過程類似于求解線性約束的二次規(guī)劃,得到的解,本身就是最優(yōu)解,避免了非線性模型中經(jīng)常遇到的局部極小值、過度擬合和維數(shù)災(zāi)難等問題[2],在股票預(yù)測研究中也逐漸火熱起來。其中,將SVM用于時間序列分析也被稱作支持向量回歸機(support vector regression,SVR)。但是,SVR 依然存在核函數(shù)選擇、參數(shù)太多調(diào)優(yōu)困難、提取淺層特征等問題[3]。深度神經(jīng)網(wǎng)絡(luò)傳遞的層數(shù)更多,結(jié)構(gòu)更復(fù)雜,能將數(shù)據(jù)中的淺層信息,轉(zhuǎn)化為更抽象的高特征信息[4],性能強大,適用性廣泛。循環(huán)神經(jīng)網(wǎng)絡(luò)(recurrent neural network,RNN)能夠處理時間序列數(shù)據(jù)中的依賴關(guān)系,因此被用于股票預(yù)測研究中。然而,RNN 在訓(xùn)練過程中會出現(xiàn),損失函數(shù)的梯度隨時間呈現(xiàn)指數(shù)下降,也即梯度消失的問題[5]。LSTM 在RNN 的基礎(chǔ)上增加了可以對單元進行控制的門限結(jié)構(gòu),從而可以處理長時間的時序數(shù)據(jù),同時又能遺忘那些不重要的特征信息[6]。這正好符合研究人員渴望從大量歷史股票交易數(shù)據(jù)中一探究竟的心理預(yù)期,因此,各種和LSTM 有關(guān)的預(yù)測算法接踵而來。CNN主要在圖像識別、文本識別、目標識別和目標檢測等領(lǐng)域有廣泛應(yīng)用[7],因其能提取數(shù)據(jù)中的局部特征和深層特征的特點[8],可以將股票時序預(yù)測轉(zhuǎn)換為圖像分類,用于股票預(yù)測。BP 神經(jīng)網(wǎng)絡(luò)將每次迭代產(chǎn)生的誤差向前傳導(dǎo),具有很好的非線性擬合能力[9],在研究股票的內(nèi)在規(guī)律方面有著廣泛的應(yīng)用。
金融市場十分復(fù)雜,畢竟決定股票價格的漲跌并非只有賬面數(shù)字,還有本身就十分復(fù)雜的人為因素,例如輿論導(dǎo)向、政治環(huán)境和新聞事件。這形成了股票數(shù)據(jù)高噪聲、難預(yù)測的特點。單一模型在考慮如上因素時,不會面面俱到,當然,模型自身固有屬性也是原因之一。最近,大量研究人員試圖通過模型-模型和方法-模型這樣的組合,來達到考慮問題更加充分,預(yù)測更加準確的目的。針對股票數(shù)據(jù)中高維非線性的特點,Yu等人[10]利用局部線性嵌入(local linear embedding,LLE)將處理過的數(shù)據(jù)輸入BP 神經(jīng)網(wǎng)絡(luò),在與單一BP、主成分分析PCA-BP(principal component analysis,PCA)和ARIMA的對比中發(fā)現(xiàn),LLE-BP 的預(yù)測精度更好。神經(jīng)網(wǎng)絡(luò)的性能會受到時間窗口、批處理大小和隱藏層單元數(shù)目等諸多因素的制約,容易陷入局部最小值。而且,這些參數(shù)的調(diào)節(jié)往往依賴有經(jīng)驗的研究人員手動調(diào)節(jié),耗時費力,浪費計算機資源。宋剛等人[11]提出了一種基于自適應(yīng)粒子群優(yōu)化(particle swarm optimization,PSO)的LSTM 股票價格預(yù)測模型(PSO-LSTM),減少了人為因素的影響,提高了模型的預(yù)測性能。金融市場對新聞事件十分敏感,投資者的行為會受到輿論的影響,造成股價拐點的發(fā)生。現(xiàn)有模型很難考慮到這方面的因素,因此,在拐點發(fā)生時,模型會產(chǎn)生誤判,相比市場真實的反應(yīng),往往具有一定的滯后性,這也是目前研究人員想要突破的難點之一。徐月梅等人[12]提出了一種基于CNNBiLSTM(bi-direction long short term memory)模型,利用CNN提取新聞文本中的特征和BiLSTM判別文本數(shù)據(jù)中的情感極性,提高了模型預(yù)測精度。賀毅岳等人[13]則利用自適應(yīng)噪聲完備集合經(jīng)驗?zāi)B(tài)分解(complete ensemble empirical mode decomposition with adaptive noise,CEEMDAN)將股市指數(shù)分解為高頻分量、低頻分量和趨勢項,分別建立LSTM模型,再加和集成各模型的預(yù)測值,最終發(fā)現(xiàn)此模型的預(yù)測誤差更小,時滯性更低。黨建武等人[14]將CNN從股指數(shù)據(jù)中提取到的隱藏特征輸入到門控循環(huán)單元(gated recurrent unit,GRU)做進一步的訓(xùn)練,得到了更好的預(yù)測效果。
LSTM 神經(jīng)網(wǎng)絡(luò)的細胞單元具有存儲數(shù)據(jù)進行順序?qū)W習,在時序特征提取方面具有巨大優(yōu)勢,顯示出更為優(yōu)異的成績,許多研究將其視為一個基準模型[15]。CNN 在挖掘數(shù)據(jù)中的局部特征和深層特征具有優(yōu)勢。本文結(jié)合LSTM 和CNN 各自的優(yōu)勢,提出聯(lián)合RMSE損失LSTM-CNN 模型,并建立了BP、LSTM、CNN 和LSTM-CNN融合模型作為對比。最終通過五個模型在浦發(fā)銀行、滬深300指數(shù)和上證綜指三個數(shù)據(jù)集上的實驗結(jié)果,證明了本文所提聯(lián)合RMSE 損失LSTM-CNN模型具有良好的有效性和普適性。
神經(jīng)網(wǎng)絡(luò)的輸入項是輸出項的影響因素,而股價是輸出項,所以輸入項應(yīng)該是那些與股價有關(guān)系的影響因素。影響股價漲跌的因素很多,針對個股預(yù)測總結(jié)起來大體上為與股票交易相關(guān)的各類基本交易數(shù)據(jù)如:開盤價、最高價、最低價、收盤價、昨收價、換手率、漲跌幅、成交量和成交額等。進一步,根據(jù)基本交易數(shù)據(jù)提煉出來的交易類指標,它主要是根據(jù)價格和成交量衍生出來的技術(shù)指標以及大盤指數(shù)這類指標;此外,基本面因素也能影響股市漲跌?;久嬉蛩匕瑖?、行業(yè)經(jīng)濟發(fā)展的水平以及公司自身的經(jīng)營水平。另一類指標是公司財務(wù)指標,包括市盈率、市凈率等指標,這類指標反映了公司的經(jīng)營情況與內(nèi)部價值。
基本面因素缺乏量化方式,而個股當日的基本交易數(shù)據(jù)是當前情況的最好反映。因此,本實驗選取最能反應(yīng)股票漲跌的這9 個基本交易數(shù)據(jù),即開盤價、最高價、最低價、收盤價、昨收價、換手率、漲跌幅、成交量、成交額。
實驗數(shù)據(jù)使用滬深300中的浦發(fā)銀行(證券代碼為600000)、滬深300 股指(證券代碼為399300)和上證綜指(證券代碼為000001)2010 年1 月4 日到2021 年3 月31日共計2 685天的股票數(shù)據(jù)進行訓(xùn)練和測試。數(shù)據(jù)集分為訓(xùn)練集、驗證集和測試集三個部分,其中訓(xùn)練集用于訓(xùn)練模型,從2010 年1 月4 日到2019 年1 月11 日,占整個數(shù)據(jù)集的80%;驗證集用于選擇模型超參數(shù),從2019 年1 月14 日到2020 年2 月24 日,占整個數(shù)據(jù)集的10%;測試集用于測試模型的性能,從2020 年2 月25 日到2021 年3 月31 日,占整個數(shù)據(jù)集的10%。三者的組成如表1所示。
表1 數(shù)據(jù)集劃分Table 1 Data set partitioning
股票的各個交易指標具有不同的量綱和量綱單位,這樣的情況會影響到數(shù)據(jù)分析的結(jié)果,為了消除指標之間的量綱影響,需要進行數(shù)據(jù)標準化處理,以解決數(shù)據(jù)指標之間的可比性。原始數(shù)據(jù)經(jīng)過數(shù)據(jù)標準化處理后,各指標處于同一數(shù)量級,同時又不消除數(shù)據(jù)原本的特征屬性,適合進行綜合對比評價。本次實驗中采用最大-最小標準化的方式處理數(shù)據(jù),標準化公式如式(1)所示:
實驗數(shù)據(jù)將同一種數(shù)據(jù)分成兩種不同的表現(xiàn)形式,即用于LSTM 模型訓(xùn)練的文本形式,和用于CNN 模型訓(xùn)練的圖像形式。為了保證兩種訓(xùn)練數(shù)據(jù)形式的獨立性,將以上9個交易數(shù)據(jù)分為兩部分。
1.4.1 股票數(shù)據(jù)的文本表現(xiàn)形式
LSTM 中使用的數(shù)據(jù)應(yīng)是要提取的時間序列數(shù)據(jù)的時序特征。在這項研究中,選擇6個關(guān)鍵基本交易數(shù)據(jù)作為對LSTM的輸入。用pre_close、change、pct_chg、volume、amount、close分別表示昨收價、漲跌額、漲跌幅、成交量、成交額、收盤價。
如圖1所示,設(shè)置窗口長度為30天,滾動窗口長度為1天,預(yù)測期設(shè)置為5天。這意味著,將根據(jù)每天的當前時間點,通過查看之前30天的數(shù)據(jù),預(yù)測5天后的股價。這些設(shè)置也適用于CNN時間序列數(shù)據(jù)的窗口長度和預(yù)測長度。訓(xùn)練數(shù)據(jù)的輸入和輸出組成結(jié)構(gòu)如圖2所示。
圖1 窗口長度、預(yù)測窗口長度和整個采樣周期滾動窗Fig.1 Window length,prediction window length and whole sampling period rolling window
圖2 訓(xùn)練數(shù)據(jù)的輸入和輸出組成結(jié)構(gòu)Fig.2 Input and output components of train data
1.4.2 股票數(shù)據(jù)的圖像表現(xiàn)形式
使用股票時間序列數(shù)據(jù)中的開盤價、最高價、最低價、收盤價、成交額,創(chuàng)建了股票圖表圖像作為CNN 的輸入,如圖3所示。
圖3 由30天股票數(shù)據(jù)所生成的圖像Fig.3 Image generated from 30 days of stock data
圖3上方的柱狀部分是由最高價、最低價、開盤價、收盤價組成的燭臺圖。圖上方的灰色條帶為布林帶,由布林線指標中的上軌線、中軌線和下軌線組成。布林線指標利用統(tǒng)計學原理,求出股價的標準差和信賴區(qū)間,從而去確定股價波動的范圍和未來走勢,利用波段顯示股價的安全高低價位。
圖3 中間的曲線和柱狀部分是由指數(shù)平滑異同移動平均線(moving average convergence/divergence,MACD)中的MACD 線、信號線、離差圖組成。MACD是股票交易中一種常見的技術(shù)分析工具,用于判斷股票價格變化的強度、方向、能量,以及趨勢周期,以便把握股票買進和賣出的時機。
圖3最下方的柱狀部分,由交易量數(shù)據(jù)組成。為了將數(shù)據(jù)輸入CNN,調(diào)整并裁剪這些圖像為112×112像素。
2.1.1 LSTM原理和結(jié)構(gòu)
RNN最初用于學習時間序列數(shù)據(jù)的序列模式。然而,隨著網(wǎng)絡(luò)的加深而出現(xiàn)的消失梯度問題并沒有得到解決。解決這個問題的網(wǎng)絡(luò)是LSTM。
LSTM 是一種遞歸神經(jīng)網(wǎng)絡(luò),適用于從時間序列中提取時序特征,具有學習長期時間序列依存關(guān)系的能力。
LSTM 的結(jié)構(gòu)如圖4 所示。一般,LSTM 由輸入門it、遺忘門ft、輸出門ot這3個門組成。Ct為當前細胞單元的狀態(tài),ht為隱藏層的狀態(tài),xt為輸入數(shù)據(jù)。
圖4 LSTM結(jié)構(gòu)Fig.4 LSTM structure
結(jié)構(gòu)的輸出向量包含當前細胞單元狀態(tài)向量和隱藏層狀態(tài)輸出向量。結(jié)構(gòu)的輸入包含上一時刻細胞單元的狀態(tài)向量、上一時刻隱藏層輸出向量和當前時刻的輸入數(shù)據(jù)3個向量。LSTM網(wǎng)絡(luò)先經(jīng)過遺忘門計算上一單元的被遺忘程度,0 表示完全舍棄,1 表示完全保留;下一步是輸入門,決定有多少信息需要輸入到單元中,然后更新單元狀態(tài);輸出門的作用是決定需要輸出的部分;最后再進行誤差反向傳播。下列運算公式中,運算符“·”代表向量外積,“+”代表向量疊加運算。
2.1.2 LSTM模型構(gòu)建
為了提取股票時間序列數(shù)據(jù)的序列特征,設(shè)計了LSTM模型。數(shù)據(jù)生成為堆疊數(shù)據(jù)類型,以便數(shù)據(jù)可以同時輸入。該模型被設(shè)計用來預(yù)測t+5 時刻的收盤價,使用的值從t-30 到t。
根據(jù)研究,LSTM 為兩層時所表現(xiàn)的結(jié)果最佳[16]。構(gòu)造兩層全連接層,以提高非線性預(yù)測能力?;诖耸褂脙蓪覮STM和兩層全連通層構(gòu)建模型,提高模型非線性預(yù)測能力。圖5為LSTM建模。
圖5 LSTM模型Fig.5 LSTM model
2.2.1 CNN原理
CNN對輸入數(shù)據(jù)進行逐層卷積和池化操作。卷積層是CNN 的核心,它利用局部連接和權(quán)值共享對輸入進行卷積操作,提取數(shù)據(jù)的深層特征[14]。卷積過程可以用以下公式表示:
其中,C為卷積層的輸出特征圖,X為輸入數(shù)據(jù);f(·)為非線性激活函數(shù);U為卷積操作;W為卷積核的權(quán)重向量,b為偏置項。
池化層通過一定的池化規(guī)則對卷積層的輸出執(zhí)行池化操作,保留主要特征,同時減少參數(shù)數(shù)目和計算量,防止過擬合。池化過程可以用以下公式表示:
其中,p表示池化層的輸出特征圖;pool(·)表示池化規(guī)則,如平均池化、最大池化等。
CNN 的特點是能夠提取數(shù)據(jù)中的隱藏特征,并將其逐層結(jié)合,生成抽象的高層特征。然而,CNN不具備記憶功能,缺乏對時序數(shù)據(jù)時間相關(guān)性的考慮。
2.2.2 CNN模型構(gòu)建
通過深化網(wǎng)絡(luò),可以提高網(wǎng)絡(luò)的性能。但是,會出現(xiàn)由于消失梯度問題而產(chǎn)生的過擬合和退化問題。因此,在保持網(wǎng)絡(luò)深度的同時,使用一種防止過擬合和退化問題的方法變得非常重要。這里使用殘差學習和瓶頸方法[17]克服這一問題。
利用殘差學習和瓶頸方法設(shè)計了圖6 所示的有三個權(quán)重層的bottleneck 構(gòu)建塊。如圖6 所示在快捷連接的情況下,輸入X通過激活函數(shù)映射到特征F(X),而不經(jīng)過權(quán)值層。公式(9)中,H(X)或F(X)-X被視為一個優(yōu)化的映射,X是一個輸入矩陣,F(xiàn)(X)和H(X)是輸出矩陣。
圖6 bottleneck構(gòu)建塊Fig.6 Bottleneck building blocks
基于上述理論構(gòu)建CNN 模型,如圖7 所示。其中conv1、conv2、conv3 為卷積層,fc1、fc2 和fc3 為完全連接層。
圖7 CNN卷積建模Fig.7 CNN convolution modeling
在輸入階段,調(diào)整股票圖表圖像的大小為112×112像素,然后調(diào)整卷積和完全連接層的數(shù)量以及各種超參數(shù),如卷積的維數(shù)、神經(jīng)元的數(shù)量、完全連接層和dropout比例等。
表2顯示了經(jīng)過反復(fù)實驗優(yōu)化的CNN模型的結(jié)構(gòu)。
表2 CNN模型參數(shù)Table 2 CNN model parameters
在預(yù)測股票價格時,將股票圖表圖像與同一數(shù)據(jù)中的股票時間序列數(shù)據(jù)同時訓(xùn)練,可以使兩個模型互補。圖8 為提出的聯(lián)合RMSE 損失LSTM-CNN 模型的體系結(jié)構(gòu),該模型的構(gòu)建共分三步進行。
圖8 聯(lián)合RMSE損失LSTM-CNN模型結(jié)構(gòu)Fig.8 Combined RMSE loss LSTM-CNN model structure
第一階段采用CNN模型架構(gòu),使用與表2相同的架構(gòu)。第二步是建立LSTM模型,采用圖5中的結(jié)構(gòu)。第三步按照一定比例聯(lián)合兩個模型的損失值。各模型的損失函數(shù)定義如公式(10)、(11)所示:
式中,N為數(shù)據(jù)點個數(shù),為預(yù)測值,R為目標值。為CNN模型的損失函數(shù),為LSTM 模型的損失函數(shù)。α和β值是總均方根誤差的權(quán)重。這些參數(shù)反映了各模型損失的反映程度。從這兩種損失中,可以使用公式(12)推導(dǎo)出總RMSE。在實驗中發(fā)現(xiàn),參數(shù)α值升高β值下降,會使模型的預(yù)測表現(xiàn)向CNN 模型靠近,模型預(yù)測值的局部表現(xiàn)會更加突出,反之,則會使模型向LSTM靠近,模型預(yù)測值的整體趨勢會更加突出。而且,參數(shù)α值不易過大,β值則對模型的預(yù)測精度影響更大,但是,當β值達到一定程度時,再增大反而會影響整個模型的預(yù)測精度,所以兩個值要在合理的區(qū)間內(nèi)取值。經(jīng)過反復(fù)實驗,將參數(shù)α和β值分別設(shè)為0.1和0.9,以反映聯(lián)合訓(xùn)練模型中LSTM的損失大于CNN 模型損失,并使所提模型的預(yù)測效果更好。此外,通過CNN和LSTM的總RMSE損失,期望產(chǎn)生一種正則化的效果,達到模型互補和防止過擬合。
聯(lián)合模型的預(yù)測值,需要按照α和β的值加權(quán)求和,以達到兩種模型互補的效果。如公式(13)所示為CNN 分支部分的預(yù)測值為LSTM 分支的預(yù)測值,為兩個分支預(yù)測值的加權(quán)和。
選擇三個性能指標,均方根誤差(root mean square error,RMSE),均方根絕對誤差(root mean absolute error,RMAE)和平均絕對百分比誤差(mean absolute percentage error,MAPE),來評估所提模型和各個對比模型的預(yù)測能力。RMSE大小與數(shù)值無關(guān),是揭示相對較大預(yù)測誤差的好方法,RMAE是揭示模型的系統(tǒng)偏差的有用方法,MAPE 大小與數(shù)值有關(guān),是統(tǒng)計預(yù)測準確性的一種方法。這些方程如下所示,其中是預(yù)測值,Ri是真實值。
為了驗證聯(lián)合RMSE 損失LSTM-CNN 的可行性,分別在浦發(fā)銀行、滬深300股指和上證綜指三個數(shù)據(jù)集上建立了BP、LSTM、CNN、LSTM-CNN 和聯(lián)合RMSE損失LSTM-CNN五個模型。
圖9為BP模型在浦發(fā)銀行測試集上的預(yù)測值與真實值對比圖。從圖中可以看出,BP 模型的非線性擬合能力是很優(yōu)秀的,既能反映出股價局部的細微變化又能反映出整體走勢。然而,缺點也是十分明顯的,預(yù)測值的滯后性較高,精度低。
圖9 BP模型的預(yù)測值與真實值Fig.9 Predicted and true values of BP model
圖10 為LSTM 模型在浦發(fā)銀行測試集上的預(yù)測值與真實值對比圖。從圖中可以看出,LSTM模型的預(yù)測效果,總體趨勢和真實值接近,滯后性比BP 模型要好。但是,局部的細微表現(xiàn)不足,過于平緩。
圖10 LSTM模型的預(yù)測值與真實值Fig.10 Predicted and true values of LSTM model
圖11為CNN模型在浦發(fā)銀行測試集上的預(yù)測值與真實值對比圖。由圖可知,CNN模型的預(yù)測效果,雖然總體趨勢表現(xiàn)較差,但是局部效果表現(xiàn)突出,能夠反應(yīng)出股票局部細微的變化。從另一個方面說明,CNN 模型更加適合做特征分類,也就是說在預(yù)測股價漲跌方面,預(yù)測效果會更好。
圖11 CNN模型的預(yù)測值與真實值Fig.11 Predicted and true values of CNN model
圖12 為LSTM-CNN 融合模型在浦發(fā)銀行測試集上的預(yù)測值與真實值對比圖。從圖中可以看出,LSTM-CNN 的預(yù)測效果,模型表現(xiàn)出了CNN 和LSTM兩個模型的優(yōu)點,其整體趨勢和局部的細微變化,均表現(xiàn)較好。
圖12 LSTM-CNN融合模型的預(yù)測值與真實值Fig.12 Predicted and true values of LSTM-CNN fusion model
圖13 為聯(lián)合RMSE 損失LSTM-CNN 模型在浦發(fā)銀行測試集上的預(yù)測值與真實值對比圖。從圖中顯示的信息來看,聯(lián)合RMSE 損失LSTM-CNN 模型同樣結(jié)合了LSTM 模型和CNN 模型的優(yōu)點。模型預(yù)測值的總體趨勢,局部表現(xiàn)以及滯后性,相比上面四個模型要更好。
圖13 聯(lián)合RMSE損失LSTM-CNN 模型的預(yù)測值與真實值Fig.13 Predicted and true values of combined RMSE loss LSTM-CNN model
通過列出五個模型的RMAE、MAPE、RMSE可以更好地反映出各個模型的優(yōu)劣。
根據(jù)表3 中數(shù)據(jù),五個模型的優(yōu)劣順序如下:聯(lián)合RMSE 損失LSTM-CNN、LSTM-CNN、LSTM、BP、CNN。五個模型中表現(xiàn)最好的是聯(lián)合RMSE 損失LSTM-CNN模型。相比表現(xiàn)次之的LSTM-CNN,本文所提模型的RMAE值要低4.24%,MAPE值低0.04個百分點,RMSE值低16%,這也說明了所提模型具有可行性。
表3 不同模型在浦發(fā)銀行數(shù)據(jù)集上的預(yù)測性能Table 3 Prediction performance of different models on Shanghai Pudong Development Bank data set
單一模型可能存在隨機性,為了更好地探究模型,以及其存在的優(yōu)缺點,在滬深300指數(shù)數(shù)據(jù)集上進實驗與測試,實驗結(jié)果如圖14~18所示。
圖14 BP模型的預(yù)測值與真實值Fig.14 Predicted and true values of BP model
圖15 LSTM模型的預(yù)測值與真實值Fig.15 Predicted and true values of LSTM model
圖16 CNN模型的預(yù)測值與真實值Fig.16 Predicted and true values of CNN model
圖17 LSTM-CNN融合模型的預(yù)測值與真實值Fig.17 Predicted and true values of LSTM-CNN fusion model
圖18 聯(lián)合RMSE損失LSTM-CNN模型的預(yù)測值與真實值Fig.18 Predicted value and true value of combined RMSE loss LSTM-CNN model
從圖14~18 中可看出,相較于浦發(fā)銀行數(shù)據(jù)集,BP模型的局部表現(xiàn)和整體趨勢都差了很多;LSTM整體趨勢較好,局部表現(xiàn)依舊欠佳;CNN 的局部表現(xiàn)良好,整體趨勢較差。LSTM-CNN 和聯(lián)合RMSE 損失LSTMCNN模型無論是整體趨勢還是局部表現(xiàn)都表現(xiàn)得非常好,十分接近真實值。
通過列出五個模型的RMAE、MAPE、RMSE可以更好地反映出各個模型的優(yōu)劣。
根據(jù)表4 中的數(shù)據(jù),五個模型的優(yōu)劣順序如下:聯(lián)合RMSE 損失LSTM-CNN、LSTM-CNN、LSTM、BP、CNN。復(fù)合模型的表現(xiàn)均優(yōu)于單一模型,本文所提模型和LSTM-CNN 性能表現(xiàn)一致。其中,RMAE 值相差無幾,MAPE 值低0.04 個百分點,RMSE 值低1%,整體而言略好于LSTM-CNN。
表4 不同模型在滬深300指數(shù)數(shù)據(jù)集上的預(yù)測性能Table 4 Prediction performance of different models on Shanghai and Shenzhen 300 index data set
五個模型在上證綜指數(shù)據(jù)集上的實驗結(jié)果如圖19~23所示。
圖19 BP模型的預(yù)測值與真實值Fig.19 Predicted value and real value of BP model
圖20 LSTM模型的預(yù)測值與真實值Fig.20 Predicted value and real value of LSTM model
圖21 CNN模型的預(yù)測值與真實值Fig.21 Predicted value and real value of CNN model
圖22 LSTM-CNN融合模型的預(yù)測值與真實值Fig.22 Predicted value and real value of LSTM-CNN fusion model
圖23 聯(lián)合RMSE損失LSTM-CNN融合模型的預(yù)測值與真實值Fig.23 Predicted value and real value of combined RMSE loss LSTM-CNN model
如圖19~23 所示,BP、LSTM 和CNN 模型在上證綜指數(shù)據(jù)集上的表現(xiàn)和在浦發(fā)銀行和滬深300 指數(shù)數(shù)據(jù)集上的表現(xiàn)一致;而LSTM-CNN 和聯(lián)合RMSE 損失LSTM-CNN模型的局部表現(xiàn)均有所下降。這可能和數(shù)據(jù)集有關(guān),滬深300指數(shù)綜合了上海證券交易所和深證證券交易所表現(xiàn)良好的300只股票的情況,相比上證綜指要更穩(wěn)定一些。通過表5 可以更加準確地看出各個模型的預(yù)測效果。
表5 不同模型在上證綜指數(shù)據(jù)集上的預(yù)測性能Table 5 Prediction performance of different models on Shanghai Composite Index data set
根據(jù)表5中的數(shù)據(jù),五個模型的優(yōu)劣順序如下:聯(lián)合RMSE 損失LSTM-CNN、LSTM-CNN、LSTM、BP、CNN。其中,聯(lián)合RMSE 損失LSTM-CNN 和LSTM-CNN 的表現(xiàn)相當,前者MAPE值比后者高0.01個百分點,而RMAE值低0.5%,RMSE值低6%,總體略好于LSTM-CNN。
綜和各個模型在浦發(fā)銀行、滬深300指數(shù)和上證綜指三個數(shù)據(jù)集上的表現(xiàn),可以看出,單一模型在做時序數(shù)據(jù)預(yù)測時,考慮到的影響因素不夠全面,多模型組合預(yù)測時的表現(xiàn)要更好。同時也證明了聯(lián)合RMSE 損失LSTM-CNN模型具有良好的有效性和普適性。
本文提出的聯(lián)合RMSE損失LSTM-CNN模型結(jié)合了LSTM提取時序特征的優(yōu)點和CNN提取局部特征和深層特征的優(yōu)點,在做股票預(yù)測時,既能表現(xiàn)出股價的整體走勢,又能表現(xiàn)出局部的細微變化。通過在浦發(fā)銀行、滬深300 指數(shù)和上證綜指數(shù)據(jù)集上的表現(xiàn)可以得出,相比于BP、LSTM、CNN和LSTM-CNN模型,其總體趨勢、局部表現(xiàn)和滯后性都有更好的表現(xiàn)。
此外,股票數(shù)據(jù)具有一定的時效性,訓(xùn)練數(shù)據(jù)的大小和各個數(shù)據(jù)集的比例要合理分配。模型在波動比較大的地方,預(yù)測效果有待改進。原因是真實的股票波動不僅僅受限于股票基本交易指標,而且與時事聯(lián)系緊密,例如公司的經(jīng)營狀況、財務(wù)狀況、投資人的主觀意識還有新聞事件等等。將這些因素量化代入模型也可以提高模型的性能。后續(xù)還可以結(jié)合金融領(lǐng)域的一些數(shù)據(jù)處理和分析方法進行改進。