劉天陽
(上海對外經(jīng)貿(mào)大學(xué)金融管理學(xué)院 上海 201600)
股價預(yù)測一直是量化投資領(lǐng)域關(guān)注的重點問題,人們試圖通過分析與股價相關(guān)的歷史數(shù)據(jù)得出股價的變化規(guī)律,進而獲得超額收益。
常用的預(yù)測模型可分為線性預(yù)測模型與非線性預(yù)測模型,由于股價通常會受到多種多樣的因素共同影響,線性預(yù)測模型一般很難有效地預(yù)測股價。近年來,機器學(xué)習(xí)與深度學(xué)習(xí)方法中許多非線性預(yù)測模型被應(yīng)用到量化投資領(lǐng)域,且較線性預(yù)測模型具有更強的預(yù)測性能,李斌等人通過對比機器學(xué)習(xí)模型與線性回歸模型,發(fā)現(xiàn)在我國A股市場中,機器學(xué)習(xí)模型的預(yù)測性能優(yōu)于線性回歸模型,在機器學(xué)習(xí)模型中,非線性機器學(xué)習(xí)模型預(yù)測性能優(yōu)于線性機器學(xué)習(xí)模型,深度學(xué)習(xí)模型表現(xiàn)最優(yōu)[1]。Leippold 等人也發(fā)現(xiàn),對于我國A 股市場,非線性機器學(xué)習(xí)模型的預(yù)測性能優(yōu)于線性回歸模型,深度學(xué)習(xí)模型預(yù)測性能最優(yōu)[2]。考慮到深度學(xué)習(xí)模型較機器學(xué)習(xí)模型與線性回歸模型具有特征工程成本低、預(yù)測性能強等特點,該文將使用深度學(xué)習(xí)方法對我國滬深300指數(shù)成分股價格進行預(yù)測。
在深度學(xué)習(xí)模型中,黃婷婷與余磊使用抗噪自編碼器(DAE)與LSTM的復(fù)合模型,對恒生指數(shù)價格進行預(yù)測,較傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)模型具有更高的預(yù)測精度[3]。耿晶晶等人使用CNN 與LSTM 的復(fù)合模型,對我國股指價格進行預(yù)測,發(fā)現(xiàn)CNN-LSTM 模型較單一模型來說具有更強的預(yù)測性能[4]。孫存浩等人使用前饋神經(jīng)網(wǎng)絡(luò)(FNN)與LSTM的復(fù)合模型,對上證綜指價格進行預(yù)測,發(fā)現(xiàn)FNN-LSTM 模型的泛化能力較傳統(tǒng)機器學(xué)習(xí)模型與LSTM 模型更優(yōu)[5]。胡聿文使用主成分分析(PCA)與LSTM 的復(fù)合模型,對平安銀行價格進行預(yù)測,發(fā)現(xiàn)PCA-LSTM模型泛化能力優(yōu)于單獨使用LSTM模型[6]。
基于上述研究可以發(fā)現(xiàn),學(xué)者們更偏好使用復(fù)合模型對價格進行預(yù)測,但是,上述復(fù)合模型均無法分辨時間維度信息的重要性水平。為了進一步提升模型預(yù)測能力,該文將基于CNN-LSTM 模型架構(gòu),將注意力機制引入LSTM 端,提出了一種基于注意力機制的CNN-LSTM模型,利用變分編碼器(VAE)產(chǎn)生的特征,對比引入注意力機制前后的CNN-LSTM、CNN與LSTM這4 種預(yù)測模型對我國滬深300 成分股價格趨勢的預(yù)測性能,并構(gòu)建有效的投資組合。
該文使用VAE模型完成特征工程,基于注意力機制的CNN-LSTM 模型主要由FNN、CNN 與LSTM 部分構(gòu)成,模型架構(gòu)如圖1 所示,首先,時間序列數(shù)據(jù)由CNN 部分提取空間維度特征,而后輸入引入注意力機制的LSTM 部分提取時間維度特征,最后經(jīng)FNN 部分輸出。該模型與未引入注意力機制的CNN-LSTM 模型參數(shù)設(shè)定跟單獨使用CNN模型與LSTM模型保持一致,4種預(yù)測模型均設(shè)定100輪(epochs)迭代,損失函數(shù)為交叉熵(Cross Entropy),結(jié)合適應(yīng)性矩估計(Adam)優(yōu)化器訓(xùn)練模型,4 種預(yù)測模型的調(diào)參策略將在第三部分第三小節(jié)中介紹,其他細節(jié)將在下述小節(jié)介紹。
圖1 基于注意力機制的CNN-LSTM模型架構(gòu)
FNN 模型主要由輸入層、隱藏層與輸出層3 個部分組成,其中,隱藏層深度不固定,整體網(wǎng)絡(luò)依靠節(jié)點聯(lián)系起來,每一個節(jié)點稱為“神經(jīng)元”,輸入數(shù)據(jù)經(jīng)線性變換后,由非線性的激活函數(shù)輸出,輸出結(jié)果作為下一層的輸入,直至最后輸出得到正向傳播計算結(jié)果,而后根據(jù)損失函數(shù)計算誤差,通過鏈式求導(dǎo)計算系數(shù)梯度,使用梯度下降算法修正系數(shù),不斷循環(huán)這個過程,最終完成模型訓(xùn)練。常用的激活函數(shù)有Sigmoid、ReLu(Rectified Linear Unit)等,常用的損失函數(shù)有Cross Entropy、均方誤差(MSE)等。
在該文中,F(xiàn)NN 模型用于各個預(yù)測模型的輸出部分與VAE 模型的設(shè)計中,具體細節(jié)將在下述小節(jié)介紹。
VAE 模型為一種生成模型,主要由編碼器與解碼器組成,編碼器計算輸入數(shù)據(jù)在隱空間的均值與方差,通過隱空間的概率分布生成數(shù)據(jù),而后由解碼器重構(gòu)這些數(shù)據(jù)。VAE模型的損失函數(shù)由重構(gòu)損失(Recon‐struction Loss)與KL(Kullback-Leibler Loss)散度決定,重構(gòu)損失負責(zé)度量重構(gòu)數(shù)據(jù)與原始數(shù)據(jù)的相似程度,KL 散度負責(zé)度量一般正態(tài)分布與標準正態(tài)分布的差異。
在該文中,重構(gòu)損失用MSE 度量,VAE 整體損失公式為
編碼器與解碼器均基于FNN網(wǎng)絡(luò)構(gòu)成,結(jié)構(gòu)如圖2、圖3所示。
圖2 VAE編碼器結(jié)構(gòu)
圖3 VAE解碼器結(jié)構(gòu)
其中,input_1 層與dense_4 層特征輸入輸出數(shù)目均為6,dense 層與dense_3 層神經(jīng)元個數(shù)設(shè)定為8,dense_1與dense_2負責(zé)計算數(shù)據(jù)在隱空間的均值與方差,隱空間概率分布函數(shù)為標準正態(tài)分布,神經(jīng)元個數(shù)調(diào)參范圍為4~16,lambda 層用于生成數(shù)據(jù),設(shè)定損失函數(shù)為(1)式,α與β值均為0.5,設(shè)定100輪(epochs)迭代,結(jié)合Adam優(yōu)化器訓(xùn)練VAE模型,激活函數(shù)均使用ReLu,最終通過計算最后5epochs 最小損失均值確定dense_1與dense_2的神經(jīng)元個數(shù)。
CNN模型主要由卷積部分、池化部分與FNN部分構(gòu)成,卷積部分通過卷積核來搜集空間特征,一般可以通過設(shè)置多個卷積核更加充分地提取特征,而后池化部分對卷積部分提取的特征進行濃縮,得到相對較為重要的特征,最終展平這些特征并輸入FNN部分中得到計算結(jié)果。
在該文中,CNN 模型架構(gòu)使用了圖1 中CNN 與FNN部分架構(gòu),Input_2層輸入數(shù)據(jù)結(jié)構(gòu)寬度為6,高度為42,顏色通道為1,conv2d 層卷積核大小為3×3,輸出通道數(shù)目范圍設(shè)為(4,8,16,32,64),max_pooling2d層池化大小為2×2,dense_1 層神經(jīng)元個數(shù)為8,激活函數(shù)均為ReLu,dense_2 層神經(jīng)元個數(shù)為2,激活函數(shù)為Sigmoid。
LSTM模型是循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)的一種,由于傳統(tǒng)RNN網(wǎng)絡(luò)參數(shù)共享的設(shè)計,使得傳統(tǒng)RNN在處理長時間序列數(shù)據(jù)時會產(chǎn)生梯度消失或梯度爆炸等問題,LSTM模型通過門控制結(jié)構(gòu)與記憶狀態(tài)的設(shè)計,在一定程度上緩解了這些問題。LSTM 模型的控制門由遺忘門、輸入門與輸出門構(gòu)成,遺忘門負責(zé)減少記憶量,輸入門負責(zé)更新記憶狀態(tài),輸出門負責(zé)輸出當前狀態(tài)的計算結(jié)果。
該文的LSTM 模型使用了圖1 中LSTM 與FNN 部分架構(gòu),Input_2 層輸入數(shù)據(jù)結(jié)構(gòu)時間步長為42,維度為6,lstm層神經(jīng)元個數(shù)范圍設(shè)為(5,25,50,100),激活函數(shù)為ReLu,F(xiàn)NN 部分架構(gòu)與CNN 模型中的FNN 部分架構(gòu)保持一致。
如圖1中注意力機制部分所示,該文將LSTM每一步的輸出矩陣H輸入一層FNN,經(jīng)Softmax函數(shù)計算得到每一步輸出的權(quán)重矩陣W,最后將矩陣H 與矩陣W相乘完成注意力的引入。
該文的實驗環(huán)境為Windows 11 64位操作系統(tǒng),基于Python 3.8.4環(huán)境編程,所有模型構(gòu)建與訓(xùn)練均基于Tensorflow-GPU2.8.0版本。硬件配置為CPU Intel Core i5-10200H,內(nèi)存為16 GB,顯卡NVIDIA GeForce RTX 2060。
該文選取了2021年1月1日至12月31日滬深300指數(shù)成分股k 線數(shù)據(jù),數(shù)據(jù)頻率為5 min,數(shù)據(jù)來源于Baostock 平臺。該文將數(shù)據(jù)集劃分為3 個不相交的時間段,以2021年1月1日至5月31日的數(shù)據(jù)為訓(xùn)練集,并根據(jù)訓(xùn)練集可觀測到的滬深300指數(shù)成分股更新股票池,并剔除了這期間存在停牌的股票,2021 年6 月1日至6月31日的數(shù)據(jù)為驗證集,2021年7月1日至7月31日的數(shù)據(jù)為測試集,完成第一輪各個模型的訓(xùn)練與預(yù)測,按月重新計算各個模型,不斷滾動6 輪,預(yù)測至2021 年12 月31 日。以第一輪中各個模型用到的原始數(shù)據(jù)集為例,數(shù)據(jù)描述性統(tǒng)計如表1所示。
表1 滬深300指數(shù)成分股k線數(shù)據(jù)描述性統(tǒng)計
VAE模型處理后的訓(xùn)練集數(shù)據(jù)描述性統(tǒng)計如表2所示。
表2 訓(xùn)練集數(shù)據(jù)描述性統(tǒng)計
該文的投資策略為:在每個交易日的14∶30 進行交易,并于下一個交易日的14∶30調(diào)倉換股,設(shè)定交易手續(xù)費為2.5‰,4 種預(yù)測模型的輸入數(shù)據(jù)結(jié)構(gòu)均為42×VAE隱空間維度的二維數(shù)組,若股價上漲幅度大于交易手續(xù)費,標簽記為1,否則記為0,輸出為2 分類的概率值,每個交易日選取預(yù)測上漲概率最高的5 支股票構(gòu)成投資組合。
該文的調(diào)參策略為:根據(jù)4 種預(yù)測模型在驗證集上的投資組合收益來確定參數(shù),保存其在驗證集累計收益率最高時的參數(shù),為了保守起見,該文對每一個待調(diào)參數(shù)均進行了10次重復(fù)實驗。
6 輪實驗結(jié)果的整體情況見表3。各個預(yù)測模型在測試集的累計收益率曲線見圖4。
圖4 各個預(yù)測模型累計收益率曲線
表3 各個預(yù)測模型回測結(jié)果
由表3 的回測結(jié)果可以看出,該文使用的兩種復(fù)合預(yù)測模型均獲得了超額收益,其中,基于注意力機制的CNN-LSTM 模型的勝率、準確率、卡瑪比率與累計收益率等指標均較CNN-LSTM 模型有所提高,兩種單一模型均未獲取超額收益,且最大回撤持續(xù)天數(shù)較長。無論從風(fēng)險還是收益的角度來看,基于注意力機制的CNN-LSTM模型表現(xiàn)最優(yōu)。
該文通過對比4 種預(yù)測模型對滬深300 指數(shù)成分股價格趨勢的預(yù)測性能,可以得出以下結(jié)論。
第一,在滬深300指數(shù)成分股市場中,使用復(fù)合模型的價格趨勢預(yù)測性能較單一模型來說更強。
第二,對于滬深300 指數(shù)成分股價格趨勢預(yù)測問題,在金融時間序列數(shù)據(jù)中引入注意力機制可以提高模型的預(yù)測性能。
該文僅僅探索了單層全連接網(wǎng)絡(luò)所構(gòu)建的注意力機制對模型預(yù)測性能的影響,該文后續(xù)將繼續(xù)研究多頭注意力機制對模型預(yù)測性能的影響。