□文/張?zhí)K林 宋迦南
(重慶理工大學(xué) 重慶)
[提要]股票市場的波動影響方方面面,對股票價格的預(yù)測具有重要意義。以我國股票市場中33支大型上市公司股票收盤價格作為研究對象,通過搭建CNN-LSTM股票價格預(yù)測模型對股票收盤價格進行預(yù)測研究。發(fā)現(xiàn)相較于其他的股票價格預(yù)測模型,使用CNN-LSTM復(fù)合模型能更好地進行股票價格預(yù)測,股票價格在一定程度上存在可預(yù)測性。股票價格的有效預(yù)測可以為投資者提供參考,提高投資者理性程度,進而提高我國股票市場有效程度。
股票市場是我國金融市場體系的重要組成部分,股票市場在一定程度上反映著我國經(jīng)濟的發(fā)展情況,發(fā)揮著晴雨表的作用。股票價格的波動會影響居民消費和企業(yè)投資,最終影響到實體經(jīng)濟。因此,對于股票價格的預(yù)測引起了廣大學(xué)者的關(guān)注。股票價格受到多種因素的共同影響,具有非線性、高噪聲、非平穩(wěn)性的特點,經(jīng)典的時間序列模型難以對其進行較為準確的預(yù)測。隨著深度學(xué)習(xí)算法在圖像識別、無人駕駛、自然語言處理等方面取得成功,且其在處理高緯度、非線性的數(shù)據(jù)上有巨大優(yōu)勢,深度學(xué)習(xí)也逐漸被應(yīng)用在金融領(lǐng)域。本文主要研究基于深度學(xué)習(xí)的算法模型能否對金融時序數(shù)據(jù)進行建模研究以及能否更為準確地預(yù)測股票價格,驗證股票市場中的股票價格是否存在可預(yù)測性。通過這樣的研究,可以為投資者提供決策參考,提高其對股票市場風險的預(yù)警能力,也可以豐富金融時間序列數(shù)據(jù)的處理方法。
許多研究學(xué)者開始使用深度學(xué)習(xí)模型來處理金融時間序列數(shù)據(jù),并與傳統(tǒng)方法做比較,突出了深度學(xué)習(xí)在股票價格預(yù)測方面的準確性。楊青和王晨蔚(2019)以全球30多種股票指數(shù)作為研究對象,使用長短期記憶網(wǎng)絡(luò)對其收盤指數(shù)進行預(yù)測,發(fā)現(xiàn)在精度上都高于支持向量機和時間序列模型。彭燕和劉宇紅(2019)使用長短期記憶網(wǎng)絡(luò)模型對蘋果公司的股票價格進行預(yù)測,經(jīng)過不斷優(yōu)化算法模型的超參數(shù),準確率提高了30%。羅鑫和張金林(2020)使用卷積神經(jīng)網(wǎng)絡(luò)和長短期記憶網(wǎng)絡(luò)模型,從多時間角度預(yù)測了滬深300指數(shù)的收盤指數(shù),準確率提高了之外,根據(jù)預(yù)測結(jié)果進行模擬交易,還能夠獲得超過市場收益的超額收益。李輝和化金金(2021)使用隨機森林和長短期記憶網(wǎng)絡(luò)模型對浦發(fā)銀行的股票價格進行預(yù)測,發(fā)現(xiàn)先使用隨機森林對數(shù)據(jù)特征進行選擇,然后再使用長短期記憶網(wǎng)絡(luò)模型進行股票價格預(yù)測,可以提高預(yù)測的準確性,從實證的角度驗證了通過合理的網(wǎng)絡(luò)模型設(shè)計,可以更好地處理金融時間序列數(shù)據(jù)。王東(2021)在使用長短期記憶網(wǎng)絡(luò)預(yù)測股票價格之前對輸入變量進行主成分提取,在縮短訓(xùn)練時間的同時提高了準確性。劉銘、單玉瑩(2021)采用一種基于經(jīng)驗?zāi)B(tài)分解和長短期記憶網(wǎng)絡(luò)模型的組合預(yù)測方法,通過對滬深300指數(shù)和上證指數(shù)的收盤價進行預(yù)測,發(fā)現(xiàn)不同數(shù)據(jù)波動大小對模型預(yù)測效果有一定的影響,需要根據(jù)不同數(shù)據(jù)選擇不同的模型。
綜上所述,相較于傳統(tǒng)方法,深度學(xué)習(xí)在進行股票價格預(yù)測時具有更大的優(yōu)勢,且使用不同的數(shù)據(jù)處理方法和復(fù)合算法模型對預(yù)測結(jié)果的精度也有較高的影響,但這些研究一般都以簡單的價格數(shù)據(jù)作為輸入變量,輸入變量較為單一,沒有充分提取并利用市場所包含的信息。因此,本文選擇基本面數(shù)據(jù)、行情數(shù)據(jù)、技術(shù)指標、宏觀經(jīng)濟數(shù)據(jù)作為輸入變量,使用主成分分析法提取主成分,然后使用卷積神經(jīng)網(wǎng)絡(luò)和長短期記憶網(wǎng)絡(luò)對股票下個交易日收盤價格進行預(yù)測,驗證股票市場是否普遍存在可預(yù)測性。
股票時間序列數(shù)據(jù)具有高緯度、非線性的特點,卷積神經(jīng)網(wǎng)絡(luò)(CNN)可以對數(shù)據(jù)進行特征提取,長短期記憶網(wǎng)絡(luò)(LSTM)可以對時間序列數(shù)據(jù)進行選擇學(xué)習(xí)。本文結(jié)合卷積神經(jīng)網(wǎng)絡(luò)和長短期記憶網(wǎng)絡(luò)的優(yōu)點,提出CNN-LSTM復(fù)合模型。該模型主要由輸入層、卷積層、LSTM循環(huán)層、輸出層組成。輸入層主要負責接收數(shù)據(jù),以股票歷史信息數(shù)據(jù)作為樣本,每一個樣本包含過去幾個交易日的數(shù)據(jù);卷積層對輸入層的樣本進行卷積操作,進行高特征提??;經(jīng)過數(shù)據(jù)維度變換,再輸入LSTM循環(huán)層,對時間序列數(shù)據(jù)進行選擇記憶;輸出層將LSTM循環(huán)層的輸出轉(zhuǎn)換到[0,1]之間,經(jīng)過反歸一化,得到模型對下個交易日收盤價格的預(yù)測值。(圖1)
圖1 CNN-LSTM模型網(wǎng)絡(luò)結(jié)構(gòu)示意圖
CNN-LSTM預(yù)測模型的流程圖如圖1所示,其中模型訓(xùn)練步驟如下:
(一)獲取股票歷史數(shù)據(jù)。從金融數(shù)據(jù)庫中獲取股票歷史數(shù)據(jù),主要包括行情數(shù)據(jù)、基本面數(shù)據(jù)、宏觀經(jīng)濟數(shù)據(jù)。
(二)計算技術(shù)指標。技術(shù)指標是技術(shù)分析中常用的數(shù)據(jù)指標,一般認為技術(shù)指標包含了影響股票價格波動的一些因素,股票市場中的投資者常常根據(jù)技術(shù)指標來判斷股票價格走勢,因此本文也添加技術(shù)指標作為輸入數(shù)據(jù)。
(三)對原始數(shù)據(jù)歸一化處理。將前兩步所涉及到的數(shù)據(jù)進行歸一化處理,消除量綱不同所帶來的差異,方便進行主成分提取和送入模型訓(xùn)練。
(四)對除開盤價、收盤價、最高價、最低價之外的數(shù)據(jù)進行主成分提取。經(jīng)過多次實驗,采取這種主成分提取得出來的效果最優(yōu)。對原始數(shù)據(jù)主成分提取可以消除輸入變量之間的相關(guān)性,減少擬合復(fù)雜度,提高模型訓(xùn)練效率。
(五)將開盤價、收盤價、最高價、最低價和經(jīng)過提取的主成分當作輸入樣本,采取窗口滑動法構(gòu)造數(shù)據(jù)集。將其中前90%當作訓(xùn)練集,后10%當作測試集。訓(xùn)練集用于模型訓(xùn)練,自我學(xué)習(xí),提高預(yù)測精準度,測試集用來檢驗?zāi)P皖A(yù)測的精準度。
預(yù)測步驟只需把收集到的股票歷史數(shù)據(jù)進行歸一化處理,提取主成分,送入模型,輸出的就是對下個交易日股票收盤價格的預(yù)測值。
(一)數(shù)據(jù)來源與預(yù)處理。本文針對西南證券進行下一交易日收盤價的預(yù)測。選取了2008年1月1日至2021年11月30日期間3,362個交易日的行情數(shù)據(jù)、基本面指標、技術(shù)指標、宏觀經(jīng)濟指標作為研究對象。其中,行情指標包括開盤價、收盤價、最高價、最低價、前收盤價、成交量、成交額、換手率、漲跌幅;基本面指標包括市盈率、市凈率、市銷率、市現(xiàn)率;技術(shù)指標包括五日和二十日移動平均線、乖離率、異同移動平均線、KDJ隨機指標、順勢指標、六日和十四日相對強弱指標。宏觀經(jīng)濟指標選取了上海銀行間同業(yè)拆借利率。將其中90%作為訓(xùn)練集,10%作為測試集,則訓(xùn)練集樣本數(shù)為3,025個,測試集樣本數(shù)為337個。
實驗數(shù)據(jù)從Baostock金融數(shù)據(jù)庫獲得。以股票交易日期為索引,以股票行情數(shù)據(jù)計算出技術(shù)指標數(shù)據(jù),并將數(shù)據(jù)保存在本地數(shù)據(jù)庫中。然后將數(shù)據(jù)進行歸一化處理。數(shù)據(jù)歸一化采用“max-min標準化”方法,其具體計算方式為:
其中,xmin、xmax分別是分量xi的最小值和最大值。
使用主成分分析法進行降維,減少數(shù)據(jù)間的相關(guān)性,可以提高模型訓(xùn)練速度。經(jīng)過多次實驗,本文對除了開盤價、收盤價、最高價、最低價之外的變量提取主成分。通過計算累計方差貢獻率進行主成分選擇。對20個自變量數(shù)據(jù)的主成分分析所得到的特征貢獻率如表1所示。(表1)
表1 特征值貢獻率一覽表
由表1發(fā)現(xiàn),前五個主成分的累計貢獻率已經(jīng)達到90%,認為這五個主成分已經(jīng)包含原始數(shù)據(jù)大部分信息。因此,提取五個主成分。五個主成分載荷矩陣表達形式如表2所示。(表2)
表2 主成分載荷值一覽表
經(jīng)過處理后的數(shù)據(jù)采用滑動窗口法就可以作為輸入數(shù)據(jù),使用模型進行預(yù)測。
(二)評價指標的選取。為了評估CNN-LSTM模型在股票收盤價格預(yù)測上的精確度,本文選取了均方誤差(MSE)、均方根誤差(RMSE)、平均絕對偏差(MAE)以及平均絕對百分比誤差(MAPE)這四個指標來衡量模型在股票價格預(yù)測方面的性能。具體計算公式如下:
其中,Xprediction,t是t交易日股票的預(yù)測價格,Xreal,t是股票的真實收盤價。
(三)基準模型的選擇。為了更好地評價本文提出的CNNLSTM模型的預(yù)測效果,本文分別利用LSTM模型、PCA-LSTM模型進行預(yù)測,作為基準模型與CNN-LSTM模型的預(yù)測結(jié)果進行對比。
1、原始LSTM模型。原始LSTM模型將上文提到的24個原始數(shù)據(jù)經(jīng)過歸一化后的結(jié)果作為輸入數(shù)據(jù),其網(wǎng)絡(luò)結(jié)構(gòu)只包含輸入層、LSTM循環(huán)層和輸出層,模型其他超參數(shù)與CNNLSTM模型類似,并且進行微調(diào)至此模型最佳。
2、PCA-LSTM模型。PCA-LSTM模型在原始LSTM模型的基礎(chǔ)上,將股票開盤價、收盤價、最高價、最低價和上文提取的五個主成分共同作為輸入數(shù)據(jù)。同樣的,在CNN-LSTM模型類似的參數(shù)的基礎(chǔ)上調(diào)整為最佳。
經(jīng)過這兩個基準模型的設(shè)定,通過對比不同模型之間的預(yù)測程度,可以得出不同的結(jié)論。通過將原始LSTM模型和PCALSTM模型對比,可以突顯出主成分分析法在股票價格預(yù)測模型中的作用。通過將PCA-LSTM模型和CNN-LSTM模型做比較,可以突出卷積層在股票價格預(yù)測模型中的作用。
(四)模型預(yù)測效果對比。本文經(jīng)過多次實驗,將CNNLSTM模型設(shè)置為最優(yōu)參數(shù)并進行訓(xùn)練,將其預(yù)測結(jié)果的評價指標與原始LSTM模型以及PCA-LSTM模型進行比較分析。將原始LSTM模型、PCA-LSTM模型和CNN-LSTM模型分別訓(xùn)練,學(xué)習(xí)率設(shè)置為0.0005,epoch為500,記錄每個模型訓(xùn)練結(jié)果,模型的精度結(jié)果如表3所示。(表3)
表3 不同模型預(yù)測效果一覽表
由表3可知,PCA-LSTM模型的輸入數(shù)據(jù)經(jīng)過主成分分析法提取主成分之后,減少了輸入數(shù)據(jù)的維度,不僅學(xué)習(xí)速度變得更快,而且精度有所提高。CNN-LSTM模型在PCA-LSTM的基礎(chǔ)上,使用卷積層對輸入數(shù)據(jù)進行高維特征的提取,進一步提高了模型精度。
模型改進前后的預(yù)測曲線如圖2、圖3、圖4所示。圖中預(yù)測收盤價曲線與實際收盤價曲線基本擬合,能夠反映出股票收盤價的整體走勢。通過對比可以看出,CNN-LSTM模型的預(yù)測值與真實值擬合程度更高,結(jié)果更加準確。(圖2、圖3、圖4)
圖2 原始LSTM模型預(yù)測曲線圖
圖3 PCA-LSTM模型預(yù)測曲線圖
圖4 CNN-LSTM模型預(yù)測曲線圖
(五)模型泛化能力測試。為了驗證模型的泛用性,選擇A股市場中2,000億元市值以上、上市超過十年的公司股票作為研究對象,獲取該33支股票從2012年1月1日至2022年1月1日期間2,452個交易日的行情數(shù)據(jù)、基本面指標、技術(shù)指標、宏觀經(jīng)濟指標,按照上文對西南證券同樣的數(shù)據(jù)處理方法,使用CNN-LSTM模型預(yù)測后的結(jié)果如表4所示。(表4)
從表4可以看出,這33支股票涉及19個行業(yè),并且CNN-LSTM模型對這33支股票的預(yù)測效果比較好,這也充分地說明了CNN-LSTM模型對單支股票價格預(yù)測的有效性與泛用性,由此可以得出股票市場(A股)中的股票價格是可以預(yù)測的結(jié)論。
表4 股票名稱、所在行業(yè)及預(yù)測效果一覽表
為驗證股票市場的是否存在可預(yù)測性,本文使用股票的基本面數(shù)據(jù)、行情數(shù)據(jù)、技術(shù)指標和宏觀經(jīng)濟數(shù)據(jù)對股票價格進行預(yù)測,通過搭建CNN-LSTM深度學(xué)習(xí)模型很好地預(yù)測了33支上市公司的股票收盤價格,驗證了股票價格存在一定的可預(yù)測性。通過對比LSTM模型和PCA-LSTM模型,發(fā)現(xiàn)使用主成分分析法處理數(shù)據(jù)可以提高模型對股票價格預(yù)測的準確程度,使用深度學(xué)習(xí)模型之前減少金融時間序列數(shù)據(jù)的相關(guān)性是必要的;通過對比PCA-LSTM模型,發(fā)現(xiàn)復(fù)合深度學(xué)習(xí)模型可以結(jié)合不同深度學(xué)習(xí)模型的優(yōu)勢,使預(yù)測的準確性進一步提高。這些模型和方法為處理其他金融時間序列數(shù)據(jù)提供了參考。
股票價格的準確預(yù)測可以提高股票市場的有效程度和維護股票市場穩(wěn)定。股票價格預(yù)測模型可以為股票市場投資者提供參考,提高投資者理性程度,增加股票市場的有效性。國家也可以據(jù)此判斷股票市場走勢,通過合理的政策措施避免股票市場發(fā)生異常波動。