當前位置:
首頁 > 新聞 > LSTM Networks 應用於股票市場探究

LSTM Networks 應用於股票市場探究

雷鋒網按:本文原作者BigQuant,本文原載於知乎專欄。雷鋒網已獲得授權轉載。

LSTM Networks 應用於股票市場探究

摘要:BigQuant平台上的 StockRanker 演算法在選股方面有不俗的表現,模型在 15、16 年的回測收益率也很高 (使用默認因子收益率就達到 170% 左右)。然而,StockRanker 在股災時期回撤很大 (使用默認因子回撤 55%),因此需要擇時模型,控制 StockRanker 在大盤走勢不好時的倉位。 LSTM(長短期記憶神經網路) 是一種善於處理和預測時間序列相關數據的 RNN。本文初步探究了 LSTM 在股票市場的應用,進而將 LSTM 對滬深 300 未來五日收益率的預測作為擇時器並與 StockRanker 結合使用,在對回測收益率有較好保證的前提下,較為顯著地降低了 StockRanker 的回撤。

LSTM Networks(長短期記憶神經網路)簡介

LSTM Networks 是遞歸神經網路(RNNs)的一種,該演算法由 Sepp Hochreiter 和 Jurgen Schmidhuber 在 Neural Computation 上首次公布。後經過人們的不斷改進,LSTM 的內部結構逐漸變得完善起來(圖 1)。在處理和預測時間序列相關的數據時會比一般的 RNNs 表現的更好。目前,LSTM Networks 已經被廣泛應用在機器人控制、文本識別及預測、語音識別、蛋白質同源檢測等領域。基於 LSTM Networks 在這些方面的優異表現,本文旨在探究 LSTM 是否可以應用於股票時間序列的預測。

LSTM Networks 應用於股票市場探究

LSTM Networks 處理股票時間序列的流程

本文使用的 LSTM 處理股票序列的流程如圖 2。本文的整體流程均在 BigQuant量化平台上進行,構建 LSTM 模型使用庫主要為 Keras。

數據獲取與處理:對於時間序列,我們通常會以 [X(t-n),X(t-n+1),…,X(t-1),X(t)] 這 n 個時刻的數據作為輸入來預測 (t+1) 時刻的輸出。對於股票來說,在 t 時刻會有若干個 features,因此,為了豐富 features 以使模型更加精確,本文將 n(time series)×s(features per time series) 的二維向量作為輸入。LSTM 對於數據標準化的要求很高,因此本文所有 input 數據均經過 z-score 標準化處理。

LSTM 模型構建:作為循環層的一種神經網路結構,只使用 LSTM 並不能構建出一個完整的模型,LSTM 還需要與其他神經網路層(如 Dense 層、卷積層等)配合使用。此外,還可以構建多層 LSTM 層來增加模型的複雜性。

回測:本文進行的回測分為兩種,一是直接將 LSTM 輸出結果作為做單信號在個股上進行回測,二是將 LSTM 的預測結果作為一種擇時信號,再配合其他選股模型(如 BigQuant 平台的 StockRanker)進行回測。

LSTM Networks 應用於股票市場探究

LSTM 應用股票市場初探

之前我們做過 LSTM 應用於股票市場的初步探究(鏈接地址),使用方法為利用滬深 300 前 100 天的收盤價預測下一天的收盤價。從結果來看,LSTM 對未來 20 天的預測基本上是對過去 100 天收盤價變化的趨勢的總括,因此最終的預測結果以及回測結果都不是很理想。 之後嘗試增加了 features(每日 Open,High,Low,Close,Amount,Volume),效果依然不是很好。

通過對結果進行分析以及閱讀研究一些研報,得到的初步結論為:一是 input 時間跨度太長(100 天的價格走勢對未來一天的價格變化影響很小),而待預測數據時間跨度太短;二是收盤價(Close)是非平穩數據,LSTM 對於非平穩數據的預測效果沒有平穩數據好。

LSTM 對滬深 300 未來五日收益率預測

綜合以上兩點,本文所使用的輸入和輸出為利用過去 30 天的數據預測將來五天的收益。

測試對象:滬深 300

數據選擇和處理:

  • input 的時間跨度為 30 天,每天的 features 為 ["close","open","high","low","amount","volume"] 共 6 個,因此每個 input 為 30×6 的二維向量。

  • output 為未來 5 日收益 future_return_5(future_return_5>0.2, 取 0.2;future_return_5

  • 訓練數據:滬深 300 2005-01-01 至 2014-12-31 時間段的數據;測試數據:滬深 300 2015-01-01 至 2017-05-01 時間段數據。

  • 模型構建:鑒於數據較少(訓練數據約 2500 個,預測數據約 500 個),因此模型構建的相對簡單。模型共四層,為一層 LSTM 層 + 三層 Dense 層(圖 3)。

  • 回測:得到 LSTM 預測結果後,若 LSTM 預測值小於 0,則記為 - 1,若大於 0,記為 1。

每個模型做兩次回測,第一次回測(後文簡稱回測 1)為直接以 LSTM 預測值在滬深 300 上做單:若 LSTM 預測值為 1,買入並持有 5day(若之前已持倉,則更新持有天數),若 LSTM 預測值為 - 1,若為空倉期,則繼續空倉,若已持有股票,則不更新持有天數;

第二次回測(後文簡稱回測 2)為以 LSTM 為擇時指標,與 StockRanker 結合在 3000 只股票做單:若 LSTM 預測值為 1,則允許 StockRanker 根據其排序分數買入股票,若 LSTM 預測值為 - 1,若為空倉期,則繼續空倉,若已持有股票,則禁止 StockRanker 買入股票,根據現有股票的買入時間,5 天內清倉;

LSTM Networks 應用於股票市場探究

1)future_return_5 是否二極化處理比較

對於 future_return_5 的處理分為兩種情況,一種為直接將 future_return_5 作為 output 進行模型訓練,二是將 future_return_5 二極化(future_return_5>0, 取 1;future_return_5

兩種處理方法的回測情況如圖 4,圖 5。由於模型每次初始化權重不一樣,每次預測和回測結果會有一些差別,但經過多次回測統計,直接將 future_return_5 作為 output 進行模型訓練是一個更好的選擇。在本文接下來的討論中,將會直接將 future_return_5 作為 output 進行模型訓練。

LSTM Networks 應用於股票市場探究

LSTM Networks 應用於股票市場探究

2) 在權重上施加正則項探究

神經網路的過擬合:在訓練神經網路過程中,「過擬合」 是一項盡量要避免的事。神經網路 「死記」 訓練數據。過擬合意味著模型在訓練數據的表現會很好,但對於訓練以外的預測則效果很差。原因通常為模型 「死記」 訓練數據及其雜訊,從而導致模型過於複雜。本文使用的滬深 300 的數據量不是太多,因此防止模型過擬合就尤為重要。

訓練 LSTM 模型時,在參數層面上有兩個十分重要的參數可以控制模型的過擬合:Dropout 參數和在權重上施加正則項。Dropout 是指在每次輸入時隨機丟棄一些 features,從而提高模型的魯棒性。它的出發點是通過不停去改變網路的結構,使神經網路記住的不是訓練數據本身,而是能學出一些規律性的東西。正則項則是通過在計算損失函數時增加一項 L2 範數,使一些權重的值趨近於 0,避免模型對每個 feature 強行適應與擬合,從而提高魯棒性,也有因子選擇的效果;(若希望在數學層面了解正則項更多知識,參考《機器學習中防止過擬合的處理方法》) 。在 1) 的模型訓練中,我們加入了 Dropout 參數來避免過擬合。接下來我們嘗試額外在權重上施加正則項來測試模型的表現。

回測結果如圖 6,加入正則項之後回測 1 和回測 2 的最大回撤均有下降,說明加入正則項後確實減輕了模型的過擬合。比較加入正則項前後回測 1 的持倉情況,可以看到加入正則化後空倉期更長, 做單次數減少 (19/17),可以理解為:加入正則項之後,模型會變得更加保守。

正則項的問題:經過試驗, 對於一個 LSTM 模型來說,正則項的參數十分重要,調參也需要長時間嘗試,不合適的參數選擇會造成模型的預測值偏正分布 (大部分預測值大於 0) 或偏負分布,從而導致預測結果不準確,而較好的正則參數會使模型泛化性非常好 (圖 6 所用參數訓練出來的模型的預測值屬於輕度偏正分布)。本文之後的討論仍會基於未加權重正則項的 LSTM 模型。

LSTM Networks 應用於股票市場探究

3) 雙輸入模型探究

除了傳統的 Sequential Model(一輸入,一輸出) 外,本文還嘗試構建了 Functional Model(支持多輸入,多輸出)。前面提到的 features 處理方法丟失了一項重要的信息:價格的高低。相同的 input 處在 3000 點和 6000 點時的 future_return_5 可能有很大不同。因此,本文嘗試構建了 "二輸入一輸出" 的 Functional Model: 標準化後的 features 作為 input 輸入 LSTM 層, LSTM 層的輸出結果和一個指標 - label(label=np.round(close/500)) 作為 input 輸入後面的 Dense 層,最終輸出仍為 future_return_5(圖 7)。

LSTM Networks 應用於股票市場探究

回測結果如圖 8。由回測結果可以看出,加入指示標後的 LSTM 模型收益率相對下降,但是回撤更小。LSTM 預測值小於 0 的時間段覆蓋了滬深 300 上大多數大幅下跌的時間段, 雖然也錯誤地將一些震蕩或上漲趨勢劃歸為下跌趨勢。或許這是不可避免的,俗話說高風險高回報,風險低那麼回報也不會非常高,高回報和低風險往往不可兼得。

LSTM Networks 應用於股票市場探究

結論與展望

本文通過探究性地應用 LSTM 對滬深 300 未來五日收益率進行預測,初步說明了 LSTM Networks 是可以用在股票市場上的。由於 LSTM 更適用於處理個股 / 指數,因此,將 LSTM 作為擇時模型與其他選股模型配合使用效果較好。利用 LSTM 模型對滬深 300 數據進行預測並將結果作為擇時信號,可以顯著改善 stockranker 選股模型在回測階段的回撤。

展望:由於個股數據量較少,LSTM 模型的可擴展程度和複雜度受到很大制約,features 的選擇也受到限制(若 input 的 features 太多,而 data 較少的話,會使一部分 features 不能發揮出應有的作用,也極易造成過擬合)。將來我們希望能在個股 / 指數的小時或分鐘數據上測試 LSTM 的性能。另外,將探究 LSTM 模型能否將屬於一個行業的所有股票 data 一起處理也是一個可選的方向。

說明:由於每次訓練 LSTM 模型權重更新情況不同以及 Dropout 的隨機性,LSTM 模型的每次訓練訓練結果都會有差異。

附:

提示:由於 LSTM 涉及參數眾多,目前我們還不能保證 LSTM 模型的穩定性, 本文所附回測結果均為多次訓練模型後選取的較為理想的情況,目的是說明 LSTM 是可以應用於股票市場的以及將其作為擇時模型是可能的。本文所述以及提供的代碼僅供探究及討論,若要形成一個在股票市場比較實用的 LSTM 模型,還需要在 features 選擇、模型構建、模型參數選擇以及調優等方面花費大量精力。

源代碼:

LSTM Networks 應用於股票市場探究之 Sequential Model

LSTM Networks 應用於股票市場探究之 Functional Model

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 雷鋒網 的精彩文章:

彭博分析師稱:2030年電動汽車價格將全面低於燃油車
秦蒼科技數據科學家沈贇:AI在消費金融產品優化以及風險控制中的應用(附PPT+視頻) | 硬創公開課
專利糾紛和解之後,蘋果諾基亞秒牽手
騰訊首款VR遊戲《獵影計劃》給我們帶來了哪些驚喜?

TAG:雷鋒網 |

您可能感興趣

Merlin拋售全部Spotify股票 YouTube推出全新付費服務YouTube Premium
谷歌實物股票 Google Stock
傳統股票交易所進軍「幣圈」,德國B?rse Stuttgart將推出加密貨幣交易應用Bison
戴爾正考慮出售旗下 Pivotal、VMware 公司股票,或再次進行 IPO
Michael Moro:BTC是一種類似於股票市場的不相關資產
投行New Street將蘋果股票評級調高至中性
2.11 VR掃描:帕胖擔任Reddit上Oculus板塊的管理員;蘋果、Valve和LG認購eMagin股票
OLED微顯示器製造商eMagin發行股票 蘋果、Valve和LG紛紛認購
巴菲特Berkshire Hathaway加持蘋果、高盛和兩大航空公司股票
Pure Storage 2QFY19巨虧卻股票創新高,Cisco前掌門錢伯斯加盟Rubrik
投行Loop Capital維持PayPal股票持有評級
加密貨幣挖礦影響AMD股票,Nvidia高估GPU需求
python 利用SVM預測股票漲跌
蘋果、Valve和LG認購eMagin千萬美元股票,OLED廠商我們不一樣
投行Pivotal將Snap股票評級降至持有
Celine設計團隊出走Loewe,開雲公布股票回購計劃
行業分析師:FaceBook在FAANG股票中最令人擔憂
對未來信心十足 Adidas將推股票回購計劃;堅持「即秀即買」 Tommy Hilfiger新政見效
如何在Mac上快速從Safari URL欄獲取股票價格?
Hermès Birkin│比股票還值得投資的愛馬仕鉑金包