曹超凡,羅澤南,謝佳鑫,李 路
上海工程技術大學 數理與統計學院,上海 201600
股票市場作為中國資本市場的重要組成部分,有市場主體競爭中性[1]、普惠[2]和分散投資風險[3]等基本特征,目前市場已經初步形成[4]基本制度與層次體系且規模位居世界前列,開放程度日益提高,積聚起一定的發展勢能,正處于由大到強的關鍵轉型階段。因此,作為全球資本市場的重要組成[5-7],中國股票市場的價格預測分析對于完善市場定價機制、提高市場可持續融資功能、完善功能性監管框架、擴大資本市場高水平雙向開放具有重要意義。
股票市場本質上是一個動態的、非平穩的、嘈雜和混亂的系統[8]。面對數據量大、非線性等復雜特征的股票數據,傳統的統計學預測方法如回歸分析、時間序列分析等無法取得較好的預測效果。隨著人工智能與大數據時代的發展,邏輯回歸、決策樹和深度學習等機器學習技術廣泛應用于金融數據的研究,其中深度學習因其具有更為強大特征學習能力脫穎而出,在股價預測效果中往往具有更強大的泛化性和預測精度。
深度學習最為基礎的兩個模型是CNN和RNN,而LSTM解決了由時間長度帶來的梯度爆炸和梯度消失的問題,是RNN最為經典的變體之一,章靜怡利用卷積神經網絡學習金融數據特征,構建股價預測模型[9]。王悅霖用LSTM模型預測股價漲跌幅[10]。胡聿文用LASSO和PCA分別先對股票價格因子進行降維篩選,再輸入LSTM模型進行預測[11]。Vidal等[12]提出CNN-LSTM組合模型,進行金價的波動率預測,預測結果優于單個CNN、LSTM模型。該模型充分提取時序特征,并利用了時間序列的自相關性進行高精度預測。但在股票市場中,股票因子之間相關性也是相當重要的考慮因素。本文在CNN-LSTM的模型基礎上,引入了多向延遲嵌入的張量處理技術MDT(mutiway-delay-embedding),對股票因子進行重構,將每個時間點上的股票因子向量生成漢克爾因子矩陣,再將所有時間上的漢克爾因子矩陣并排成為漢克爾因子張量,作為CNN模型的輸入,利用CNN卷積與池化操作提取因子的深層特征,再將其輸入到LSTM模型,更好地處理股票因子之間的相關性。
本實驗使用Keras作為深度學習平臺,構建MDTCNN-LSTM模型,對48家主流上市公司2011—2021年的股票數據進行分析預測實驗,對比預測結果與真實值,作出模型預測擬合圖和模型訓練誤差圖,并與CNNLSTM深度學習網絡模型作對比,驗證了加入MDT張量處理后模型預測的有效性和泛化性。
股票數據在輸入到深度學習模型前,最常用的數據處理方式是滑動窗口法。滑動窗口法是將長度為n的時間序列沿著時間步長切分成多個長度為m(m<n)的連續子序列的方法[13]。在處理多維時間序列時,先設定時間步長,沿著時間方向滑動窗口處理二維時序矩陣切分出多個固定大小的子矩陣,切分出的子矩陣并排形成張量作為深度學習模型的輸入,過程如圖1所示。滑動窗口法考慮時間序列的自相關性,在處理單條時間序列時能起到較好效果,但在處理多維時間序列時未考慮到因子相關性,在股票市場中,股票因子之間存在強相關性。考慮到因子相關性,本文引入MDT張量處理技術[14]。

圖1 滑動窗口處理過程Fig.1 Sliding window processing process
將股票數據集看成是擁有時間(以天為單位)和股票因子兩個維度的矩陣。固定時間,矩陣的每一行便可看成當日的股票因子向量x,向量的各分量表示當日各股票因子的值。設當日股票因子向量x=(x1,x2,…,xn)T∈?n,利用MDT變換將其生成漢克爾矩陣Mτ(x),即:

生成的漢克爾矩陣與原向量滿足公式(2):

其中,vec為拉直算子,將漢克爾矩陣按列拉直成向量,C是復制矩陣,由多個τ×τ單位陣在對角線上錯位排開組成,如圖2所示。

圖2 復制矩陣示意圖Fig.2 Schematic diagram of copy matrix
MDT運算可由公式(3)表示:

函數fold(n,τ):?τ(n-τ+1)→?τ×(n-τ+1)是一個折疊算子,可將向量轉化為矩陣,設漢克爾矩陣Mτ()
x=(v1,v2,…,vn-τ+1),其中vi表示漢克矩陣的第i列向量:

將每日股票因子向量通過MDT變換生成漢克爾矩陣,再將每個時間點生成的漢克爾矩陣并排組成漢克爾張量,作為后續深度學習模型的輸入數據。
華為諾亞方舟實驗室[15]利用MDT等張量技術與傳統ARIMA預測模型相結合,在指定數據集中取得不錯效果。然而該文使用的數據集特征相關性弱于時序自相關性,所以只沿著時間方向應用MDT處理三階原始張量。而股價波動隱藏著市場力量推動下因子間相關性,針對股票數據中有著更為復雜的因子相關性,本文選擇沿著因子模式上應用MDT方法進行張量構建,并首次將其與深度學習模型相融合,使預測結果相較之下更具泛化性與時效性。
卷積神經網絡(CNN模型)是用于特征提取表達的深度學習模型,可實現從輸入到輸出的功能映射。如圖3所示,CNN由輸入層(Input)、卷積層(Convolution Layers)、池化層(Pooling)、扁平化全連接層(Flattening)和輸出層(Output)組成。卷積層通過權值共享的卷積核與輸入數據對應的感受野區域進行卷積計算,從而提取輸入特征。卷積的計算公式為:

圖3 卷積神經網絡結構示意圖Fig.3 Schematic diagram of convolutional neural network structure

公式(1)中,規定輸入層為第l-1層,用于表示輸入層第s個特征,輸出層為第l層,用于表示輸出層第j個特征,用于表示卷積核的元素,為偏置項,σ為激活函數。
輸入數據經過卷積層提取特征后,采取池化操作抽象卷積層輸出特征的信息,從而能增大感受野,進一步提升模型的泛化能力。池化層通常出現在卷積層后。常見的池化方法是最大值池化與平均值池化。經過多次卷積層的特征提取與池化層信息抽象后,輸入特征經Flattening扁平化處理張成一維向量,由全連接層的傳統神經網絡對其進行分類或預測。全連接層得到的輸出與標簽作對比,不斷迭代更新權值,從而實現反向傳播。本文選取CNN模型的卷積層和池化層,保留了模型特征提取和信息抽象的功能,將經由MDT變換生成的漢克爾張量作為該模型的輸入數據,提取數據中含有因子間強相關性的特征,為后續的預測作準備。
長短時記憶網絡(LSTM)是循環神經網絡(RNN)的變體[16]。為解決模型梯度消失的問題,增強模型泛化性,LSTM在RNN的基礎上進行優化,有著類似的鏈式結構,同時引入了細胞狀態ci用來存儲序列的長期信息,并增加了三個門控單元:遺忘門、輸入門與輸出門來對長期信息和新輸入的信息進行篩選與更新,如圖4所示。

圖4 LSTM結構示意圖Fig.4 Schematic diagram of LSTM structure
遺忘門定義要遺忘的信息,即確定應從上一個細胞狀態中刪除哪些信息。遺忘計算過程如下:

其中,fi是遺忘門的輸出;σ是激活函數,通常是sigmoid函數,可以將所有激活值縮放至0到1之間,0表示“完全遺忘”,1表示“完全保留”;wfh、wfy是權重矩陣,hi-1是上一個存儲單元的輸出;vi是當前輸入;bf是遺忘門的偏置項。
輸入門定義應將哪些新生信息添加到細胞狀態。數據經遺忘門篩選歷史信息后,下一步是確定應更新哪些新生信息。更新過程分為兩個部分[18],第一部分計算ji確定需要更新哪些新生信息至細胞狀態,計算過程如公式(7):

其中,tanh是正切函數;wjh、wjy、wc~h、wc~y是權重矩陣;bj和bc~是輸入門偏置項。通過計算輸入門輸出ji與備選細胞狀態~ci的乘積,確定了哪些新生信息將添加到細胞狀態,同時計算遺忘門輸出fi與原細胞狀態ci-1的乘積,確定了原細胞狀態中哪些歷史信息得以保留。最后將二者相加,完成一輪新細胞狀態的更新,計算過程如公式(9):

輸出門定義應將哪些信息用作輸出。經過遺忘門和輸入門實現對細胞狀態的更新后,下一步確定當前狀態需要輸出的信息,計算過程如下:

其中,oi是輸出門的輸出;woh、woy是權重矩陣;bo是偏差矢量;hi是當前記憶單元的輸出。
LSTM通過隱藏層間的輸入輸出在處理關聯數據時,能有效存儲數據特性并解決梯度消失的問題。通常用于研究輸入信息在時間維度上的相關性問題,在處理時間序列數據有著很大優勢,如Sagheer和Kotb[17]使用長期短期記憶(LSTM)遞歸網絡的深度架構對石油時間序列進行預測,結果好于RNN和ARIMA模型。而事實上,LSTM不光在時間序列數據上可以較好地預測效果,在有強關聯性的特征數據上也有很強的預測能力。
本文將CNN與LSTM進行融合構建CNN-LSTM深度學習預測模型,如圖5所示。先利用CNN模型的卷積層(Convolution Layer)、池化層(Pooling Layer)對輸入數據提取特征、抽象信息得到特征數據,再經由Flattening層后輸入到LSTM模型進行關聯預測,最后接入全連接層(Full Connection Layer)得到模型的預測值。卷積和池化操作降低了輸入數據的復雜性,可有效處理異常值數據,防止過擬合。接入LSTM層,利用LSTM的遺忘門與輸入門可對關聯數據信息進行有效的篩選與更新,更好地預測關聯數據。

圖5 CNN-LSTM網絡結構Fig.5 CNN-LSTM network structure
本文將MDT張量技術與CNN-LSTM模型相融合,構建的MDT-CNN-LSTM預測框架如圖6所示。將歸一化處理后的股票數據沿著因子方向作MDT變換,即將時序矩陣按時間進行切片,得到每日股票因子向量,股票因子向量重構生成充分含有因子強相關性信息的漢克爾矩陣,將多個漢克爾矩陣并排形成漢克爾張量,作為深度學習的輸入樣本。MDT變換通過公式(2)的復制矩陣將每日股票因子向量映射成漢克爾矩陣,漢克爾矩陣的每列相鄰向量含有相似的因子信息,但相同的股票因子在每列向量所處的位置均不一樣,且每列向量都會出現新的股票因子,完成了因子重構,這樣極大程度地保留了不同股票因子間的因子相關性信息。將經MDT變換后的數據集分成訓練集與測試集,將訓練集數據輸入CNN模型,利用卷積與池化操作充分對含有股票因子強相關性信息的輸入數據進行特征提取與信息抽象,提取后的特征數據輸入LSTM模型,進行擬合并訓練模型參數,最后將測試集數據輸入到訓練好的模型進行股價關聯預測。

圖6 MDT-CNN-LSTM預測流程圖Fig.6 MDT-CNN-LSTM prediction flow chart
本文創新性地將經MDT變換并由CNN輸出后包含股票因子間強關聯性的特征數據輸入至LSTM。利用MDT變換充分保留了股票因子相關性信息,CNN對含有因子相關性信息的輸入數據充分提取特征,LSTM進行預測。完成了股票因子重構、因子相關性特征提取與因子關聯預測的三個重要步驟,從而實現MDT張量技術與CNN-LSTM模型的有機結合。
本文選取A股市場中,2 000億以上市值,涵蓋22個行業的48支大盤股進行實證分析,如表1所示。從優礦獲取該47支股票從2011年1月4日到2021年3月5日的歷史數據,實驗環境為python3.7。

表1 股票名稱、所在行業、數量Table 1 Stock name,industry,quantity
參考Yu等[18]利用因子分析的方法將9項指標簡化為3項指標(資本配置、投融資水平和運營情況),并表明資本配置指標對股市發展起到關鍵作用。本文基于此成果,選取反映資本配置的市盈率、市凈率,反映投融資水平的成交量、成交金額、成交筆數、流通市值、總市值,反映運營情況的日換手率、漲跌幅,再加上反映價格變動的當日開盤價、最高價、最低價總共12個股票因子,將第二天的收盤價作為預測標簽,對48支股票股價進行預測。
優化器設定為Adam優化器,學習率設定為0.001.激活函數為RELU函數,設定均方誤差(MSE)作為預測損失函數。訓練集與測試集比例為4∶1。本文采用網格搜索,最終得出MDT的參數τ設定范圍在[6,8]最為合適。其余參數如表2所示。

表2 MDT-CNN-LSTM參數設置Table 2 MDT-CNN-LSTM parameter settings
本文將MDT-CNN-LSTM模型與CNN-LSTM、CNNLSTM模型作對照,分別根據48支股票的歷史數據進行股價預測分析,并計算每支股票的平均絕對誤差(MAE)、均方誤差(MSE)、平均絕對百分比誤差(MAPE)、均方根誤差(RMSE)作為模型評價指標,最后取平均值,表現最好的指標結果以加粗字體顯示,表3是計算股票預測誤差的平均值,在四類評價指標中,CNN-LSTM擬合效果略好于LSTM,但差距不大。CNN的效果最差。MDT-CNN-LSTM的誤差均達到最小值,充分說明模型預測的有效性。

表3 模型預測評價指標的平均值Table 3 Average value of model prediction evaluation index
同時,為比較模型的時效性,本文同時將四種模型的運算時間作比較,表4為各模型預測所耗費的時間。

表4 模型預測時效性Table 4 Model prediction timeliness
由表4可知CNN耗時最短,其次為MDT-CNNLSTM,預測時長與CNN-LSTM時間相接近,而LSTM耗時最長。因MDT-CNN-LSTM與CNN-LSTM模型均有卷積和池化操作,對輸入數據進行特征提取,大大降低了輸入數據的復雜性,故耗時相較直接輸入LSTM模型要短。而CNN模型無后續操作,故耗時最短。但結合表3模型預測效果可以看出,CNN雖然耗時短但預測效果最差;CNN-LSTM與LSTM雖然在預測精度上差距不大,但CNN-LSTM相較LSTM模型時效性有較大提升,故綜合對比優于LSTM。而MDT-CNN-LSTM在預測效果和時效性上都具有較大優勢,證明本文提出的模型較好的實用性。
針對MDT-CNN-LSTM模型的擬合效果,本文截取了愛爾眼科、海天味業、中信銀行、萬科A4支股票的損失函數曲線圖及股價預測圖,分別如圖7、圖8所示。

圖7 損失函數曲線圖Fig.7 Loss function graph

圖8 股價預測曲線圖Fig.8 Stock price forecast curve
從實際預測擬合的效果出發,發現MDT-CNNLSTM模型對四類股價走勢具有較好的預測能力。
(1)股價低位盤整、緩步提升:股價在較長時間(如一年)低位盤整,在某個時間節點股價開始緩步爬升,如愛爾眼科在2019年4月至2020年10月股價有所波動,但是沒有明顯起色,在2020年10月后股價開始逐步爬升。
(2)股價底部震蕩、迅速抬升:股價在較長時間(如一年)底部震蕩,但在某個時間突然劇烈波動,股價抬升迅速,如海天味業在2019年11月至2020年7月股價均是在100~140元之間震蕩,但是之后開始急速拉升至200元,呈現類似垂直的股價拉升。
(3)股價溫和下跌后,急速拉升與下跌:在下跌通道的股票,先溫和下跌,經歷急速拉升與下跌后再次緩步下跌,如中信銀行在2019年4月至2020年7月溫和下跌,在2020年7月經歷了一波急速拉升與下跌,又重新進入了溫和下跌狀態。
(4)股價區間震蕩波動,且振幅明顯:股價在很長時間(如兩年)震蕩波動,且振幅明顯,股價變化迅速,如萬科A在26~33元之間的股價區間震蕩,還有京東方A在3.5~4.5元、3.5~5.5元這兩個震蕩區間的股價波動,建設銀行在6~7.5元之間股價區間震蕩等等。
本文驗證了MDT-CNN-LSTM在行業個股的有效性,而為探究該模型在股指預測中是否依然具有較好的預測效果,分別選取上證指數、滬深300指數、A股指數、深證綜指四支股指,數據的時間維度為2011年1月4日至2021年3月5日,并選取昨日收盤價、開盤價、最高價、最低價、收盤價、成交量、成交金額、漲跌、漲跌幅九個股指因子,預測次日收盤價。
表5是計算股票預測誤差的平均值,在四類評價指標中,MDT-CNN-LSTM誤差依舊最低,擬合效果優于CNN-LSTM、CNN、LSTM,驗證了該模型在股指預測中依舊取得較好效果。

表5 股指預測模型評價指標的平均值Table 5 Average value of evaluation index of stock index forecasting model
本文通過在構建的CNN-LSTM模型中引用MDT張量技術對股票因子進行重構,生成漢克爾張量,重構后的數據含有因子相關性信息,使用CNN提取部分信息,得到包含因子相關性信息的特征矩陣,再輸入到LSTM進行關聯預測。本文將構建的MDT-CNN-LSTM預測方法用于48家主流上市公司進行股價預測,并與CNN-LSTM、CNN、LSTM三個模型進行對比,結果表面,預測準確率有了很大提升,且同時具有良好的時效性。根據預測結果,總結了MDT-CNN-LSTM對四種股價走勢有著良好的預測能力。最后,本文將模型應用到滬深四類股指預測中,依然取得較優效果。本文首次將MDT張量技術與深度學習模型融合,考慮到驗證MDT張量處理技術是否具有更強的應用,將會在未來嘗試跟其他深度學習模型進行融合,希望探究其與深度學習有機結合的能力。