周鑫
(四川大學計算機學院,成都610065)
股票市場復雜多變,高風險與高收益并存。而預測股市走勢,一直是廣大股民和眾多投資機構所關注的問題。但是由于股票市場具有極大的不穩定性和復雜性,且漲跌在一定程度上已經違背了價格序列所蘊含的統計規律信息。目前已有的方法策略均未能很好地進行預測。本文主要針對大多數的股票價格和指數的波動并不是很顯著,同時考慮到資產的穩定增長,提出一種新的解決方案。
早期的股票預測算法主要對K 線圖和其他技術指標進行分析,并預測股票走勢,例移動平均線(MA)、隨機指標(KDJ)、平滑異同移動平均線(MACD)、相對強弱指標(RSI)和能量潮(OBV)等。如劉葉玲等人[1]利用RSI、KDJ 和5 日平均線建立了非線性回歸預測模型。隨著數據挖掘、機器學習理論的完善和深度學習強大的擬合性能,越來越多的研究者希望用人工智能算法綜合考慮各方面因素,對股票市場的交易給出一些建議。如Shunrong Shen 等人[2]、鄔春學等人[3]、程昌品等人[4]利用支持向量機(SVM)、Ballings 等人[5]利用集成學習的方法對股票市場進行預測。Kai Chen 等人[6]、Selvin 等 人[7]、Nguyen 等人[8]利用深度學習方法建模。但是現有的方法不能很好地解決股票走勢預測的問題,原因包括:①對于股票價格相對平穩的階段,完全按照預測的結果進行高頻交易會因為手續費導致虧損。②對股票價格大幅的漲跌的階段,預測的準確性對總收益有巨大的影響。
基于上述分析,本文提出強上漲預測模型模型,主要的改進點有:①將問題定義為三分類任務。目前一般將預測股指趨勢轉換為有監督的二分類任務,即上漲和下跌。定義為三分類任務能有效減少由在股票震蕩階段頻繁交易產生的手續費用。②使用代價敏感損失函數。通過加大對大幅漲跌階段判斷錯誤的樣例的懲罰力度,提高對大幅漲跌階段的學習效果。
本文的目標是在預測高頻指數強上漲趨勢時保證預測不要出現嚴重錯誤——即將強下跌趨勢預測為上漲。為了比較本文提出的模型和過去股票趨勢預測問題常用的模型在這一任務上的效果,本文共使用了3種深度學習模型進行實驗。除了本文作者提出的用于預測使用Spatial Dropout 和Conv1D[9]的模型外,還有傳統的使用CNN 層的模型、使用LSTM 層的模型和不使用代價敏感的損失函數的相似模型作為基線。
在股價預測任務中,我們定義x1,x2,x3,...xt,...作為指數序列,每一天的時間步中,本文共用了5 個指標xt=(ot,ht,lt,ct,vt),其中包括開盤價(ot),最高價(ht),最低價(lt),收盤價(ct),交易量(vt),簡稱為OHLCV。
本文使用的數據為2013 年1 月4 日到2017 年12月13 日的滬深300(CSI300)指數5 分鐘OHLCV 數據(開盤價、最高價、最低價、收盤價、交易量),其中60%為訓練集,20%為驗證集,20%為測試集。輸入深度學習模型用于預測的時間窗口為60 個,在時間窗口內按特征進行Z-Score 歸一化。時間窗口的標簽有三類,分別為強上漲,震蕩和強下跌。本文將每一個時間步的收盤價和它后一個時間步的收盤價的變化率按從高到低排序,前15%標記為強上漲,后15%標記為強下跌,如公式(1)所示,其余標記為震蕩。在3 個集合上都使用同樣的方法進行數據預處理。

Lt代表xt的標簽,代表tforward時間步(本文tforward的值設置為1,即下一個時間步)后股票指數的對數收益,訓練集中的樣本按照其未來回報rt以降序方式排序;在排好序的樣本中前15%被標記為+1,即強上漲。后百分之15%被標記為-1,其余的樣例被標記為0。
本文作者提出的模型由三部分組成,分別為Spatial Dropout 模塊,Conv1D 模塊和全連接層模塊。模型結構如圖1 所示。接下來筆者將說明為何使用這樣的網絡結構。
眾所周知,深度學習模型很容易在訓練的過程中產生過擬合,一般而言,應對過擬合的方法有兩種——正則化和Dropout。正則化的原理是在損失函數中添加模型參數項,而Dropout 的原理是在訓練時讓部分輸入數據失效,避免模型對一些在任務中貢獻較大的神經元產生依賴,從而過擬合。Spatial Dropout 和普通的Dropout 不同如圖2 所示,在訓練的過程中,它會將上一層傳來的多通道的數據依照指定的概率Dropout 其中幾個通道的完整輸入,而不是隨機讓輸入失效。本文決定使用Spatial Dropout,因為在指數趨勢預測中,使用的數據僅有五個特征,在這種情況下,Spatial Dropout 相比普通的Dropout 可以讓我們的模型更好地學會利用剩余Channel 的特征的組合實現更魯棒的預測能力。在測試的時候,Spatial Dropout 層不會工作,模型會使用所有的特征。這相當于一個另類的集成方法,在一定程度上可以提高模型的性能。

圖1 指數強上漲趨勢預測模型圖

圖2 Channel Dropout和普通Dropout
在卷積核的選取上,本文使用一層Conv1D 層。Conve1D 的卷積核為1×5,將輸入的同一個時間步的5個特征映射為40 個特征,抽取深層信息。基于先驗知識,本文認為預測指數的趨勢,需要首先處理同一個時間步的OHLCV 信息,然后在考慮跨時間步處理數據。這與傳統的CNN 圖像分類任務不同,圖像的像素點與它周邊的像素點可以認為屬于同一個流形,因此比較適合使用n×n 的二維卷積層處理信息。
同樣是基于金融領域的先驗知識——三浪理論,本文曾考慮后續使用n×1 的卷積核進一步提取跨時間步的更高維度的特征。然而,在驗證過程中本文作者發現增加跨時間步的卷積層并不能提高模型在本文提出的任務上的效果。本文認為,三浪理論在高頻數據中的有效性并沒有得到證實,可能三浪理論并不適用于高頻指數數據。因此,本文作者最終決定僅用一層Conv1D 作為卷積層。
在全連接層模塊參數的選擇上,本文使用超參數網格搜索,最終確定使用兩層全連接層,第一層神經元數目為250,第二層神經元數目為100 的全連接層效果最好,輸出層神經元數目為3,使用多分類任務中常用的Softmax 激活函數。
模型的損失函數使用代價敏感的交叉熵損失函數[10]。為了完成本文提出的任務——不將強下跌趨勢預測為強上漲,本文作者在損失函數中含有強下跌輸出的因子增加了放大系數α,α選擇為1.25。本文作者希望模型在損失函數中對強下跌類別添加懲罰后可以降低將強下跌類分類為強上漲類的概率。代價敏感的損失函數公式如下:

CNN 基線模型使用類似于AlexNet 的模型結構,擁有三層卷積層和兩層全連接層和一層輸出層,兩層全連接層超參數與1.2 中提出的模型的全連接層的超參數相同。三層卷積層卷積核為都為3×3,將輸入特征從5 個channel 映射到64 個channel。
LSTM 基線模型使用兩個LSTM 層和兩個Dropout層,兩層LSTM 層分別將輸入數據的channel 映射到32和64,兩個Dropout 層的Keep Probability 為0.8,最后由兩層全連接層和一層輸出層輸出各個類別的概率。
為了判斷代價敏感的損失函數是否提高了模型在本文提出的任務上的效果,構建和1.2 小節中提出的強上漲趨勢預測模型結構完全相同,只有損失函數使用傳統的交叉熵損失函數的模型作為基線模型之一。
CNN 基線模型和LSTM 基線模型使用的損失函數與1.2 中提出的代價敏感的損失函數相同。
首先介紹實驗數據集、評價方法和實驗環境,其次對實驗結果進行了分析。
本文使用的數據和數據的預處理、打標簽方式見1.1 小節,數據集的具體分布和時間窗口內股指數據的圖形化展示如表1 和圖3 所示。

表1 CSI300 5min 數據集的分布

圖3 時間窗口內的股指數據
由于本文的目的在預測高頻指數強上漲趨勢時保證預測不要出現嚴重錯誤,因此,傳統評價股指預測效果的評價指標如準確率不適合評判本文提出的模型在這一任務上的效果。本文提出了一種適用于評價此任務的評價指標:強上漲預測勝率。這一評價指標的定義如下:

其中correctoflabelup 表示模型將輸入的時間窗口的標簽預測為強上漲時這個時間窗口真的是強上漲類別的數目,erroroflabelup 表示模型將標記為強下跌的時間窗口數據的標簽錯誤預測為強上漲的數目。
本文提出的模型和基線模型都使用TensoFlow2.0+Keras 框架構建和訓練,優化器使用Adam 優化器,學習率都為0.0001。所有模型的參數都使用正態分布初始化,每個模型在訓練過程中都隨機打亂了訓練集數據的順序。由于數據集的不平衡特性,在訓練時,為每個類別分配了相應比例的權重提高訓練效果。
強上漲趨勢預測模型和不使用代價敏感的模型在CSI300 5 分鐘數據集上的生成的混淆矩陣如圖4所示。

圖4 本文模型和基線模型實驗結果生成的混淆矩陣
四種模型在訓練集和測試集上的強上漲預測勝率如表2 所示。

表2 CSI300 5min 數據集驗證結果
本節對本文模型使用的代價敏感的交叉熵損失函數在本文任務上的作用進行分析。
強上漲趨勢預測模型和基線模型唯一的不同點在于是否使用了代價敏感的損失函數。然而圖4 中,強上漲趨勢預測模型的強上漲趨勢的預測勝率實現了顯著的提高,由52%附近提升到了60%。這說明使用代價敏感的交叉熵損失函數有效降低了將數據集中的強下跌標簽誤分類為強上漲標簽的概率,充分說明了代價損失函數在本文提出的任務上提高勝率的有效性。
本節討論本文提出的模型結構在本文任務上的優越性。
如表2 所示,本文提出的強上漲預測模型和傳統CNN 和LSTM 模型對比,本文模型在CSI300(滬深300指數)數據集上的勝率比兩種基線模型都要高5%左右。這充分說明了本文提出的模型使用的Spatial Dropout 層的效果,也說明了不考慮跨時間步生成特征的Conv1D 效果要優于傳統的n×n 的卷積核。
本文提出了在預測高頻指數強上漲趨勢時保證預測不要出現嚴重錯誤的任務,并設計了一個新的深度學習模型用于完成這一任務。在滬深300 指數5 分鐘數據上取得了比兩種傳統的基線模型在這一任務上更加優越的結果。
本文的研究結果也具有一定的現實意義。由于金融市場交易成本的存在,每次交易都要付出交易額固定比例的金錢,在非強上漲的市場區間進行買入和賣出很難獲得較高的收益。因此,理想的投資策略之一是預測未來會出現強上漲時買入金融資產。只要強上漲預測勝率足夠高,這一投資策略就能獲利。但是,高頻指數的強上漲趨勢上漲點數較小,還不足以使得投資者由此獲利。未來將嘗試在波動更大,更難預測單上漲點數也更大的股票數據上進行實驗,實施模擬交易觀察是否可以取得高于大盤走勢的收益。