深度學習技術在股票交易上的應用研究調查

機器之心發表於2016-08-08

深度學習技術因在影像分類和語音識別上的突破而受到了廣泛的關注。然而,它在金融上的應用看起來還並不普遍。此調查覆蓋了作者發現的與系統化交易(systematic trading)有關的研究。文中提到的相關論文可點選此處進行下載。

文中縮寫:

  • DBN = 深度信念網路

  • LSTM = 長短期記憶網路

  • MLP = 多層感知器

  • RBM = 受限玻爾茲曼機

  • ReLU = 修正線性單元

  • CNN = 卷積神經網路

限價委託單薄模型(Limit Order Book Modeling)

Sirignano(2016)提出了一種預測限價委託單薄變化的方法。他開發了一個「空間神經網路(spatial neural network)」,該網路可以利用區域性空間結構的優勢,比標準的神經網路更具可解釋性、也更具計算效率。他模擬了在下一狀態變化時最好的出價和要價。

架構:每個神經網路有 4 層。標準的神經網路每個隱藏層有 250 個神經元,而該空間神經網路有 50 個。他在隱藏層神經元上使用雙曲正切啟用函式。

訓練:他在 2014 年至 2015 年的 489 支股票的委託單薄上訓練並測試了該網路(每支股票有一個單獨的模型)。他使用了來自納斯達克的  Level III 限價委託單薄資料,這些資料有著納秒級別的十進位制精度。訓練包括了 50 TB 的資料,並且使用了 50 個 GPU 組成的叢集。他總結了 200 個特徵:現價委託單薄在首個 50 非零買入和賣出(bid/ask)水平的價格和大小。他使用 dropout 防止過擬合,並在每個隱藏層之間使用批規範化( batch normalization)來防止內部的協變數轉變(covariate shift)。最後,使用 RMSProp 演算法完成訓練。RMSProp 類似於帶有動量的隨機梯度下降,但它通過一個過去梯度的移動平均(running average)對梯度進行規範化。他使用了一個自適應學習速率——在任何時候,當訓練錯誤率隨著訓練時間增加時,這個學習速率就會按一定的常數因子下降。他使用一個被一個驗證集強加的提前停止(early stopping)來減少過擬合。在訓練時為了減少過擬合,他也用了一個  l^2 懲罰機制。

結果:他的結果顯示限價委託單薄展現出了一定程度的區域性空間結構。他能提前 1 秒預測委託單薄,也能預測下一次買入/賣出變化的時候。這一空間神經網路超過了標準的神經網路和沒有線性特徵的邏輯迴歸。這兩種神經網路都比邏輯迴歸的錯誤率低 10%。

基於價格的分類模型

1.Dixon 等人(2016)使用一個深度神經網路預測 43 種大宗商品和外匯期貨在接下來 5 分鐘的價格變化。

架構:他們的輸入層有 9896 個神經元,輸入由滯後的價格差別和合同間的協動構成的特徵。網路中有 5 層學習到的全連線層。4 個隱藏層中的第一層有 1000 個神經元,而且後面的每層逐次減少 100 個神經元。輸出層有 129 個神經元(每一類 {-1,0,1} 對應 3 個神經元,乘以 43 個合同)。

訓練:他們使用標準的帶有隨機梯度下降的反向傳播方法進行訓練。他們通過使用 mini-batching(依次在數個訓練樣本上計算梯度,而非單個樣本) 加速訓練過程。他們使用一個英特爾 Xeon Phi 協處理器進行訓練,而非使用英偉達 GPU 。

結果:總體上,他們報告在三類分類上實現了 42% 的準確率。他們做了一些前行訓練(walk-forward training),而非傳統的回測(backtest)。他們的箱形圖(boxplot)展示了一些來自每一合同 mini-backtest 的普遍積極的夏普比率。他們沒有把交易成本或者交叉買入/賣出差價考慮在內。他們所有的預測和特徵都基於每 5 分鐘最後時刻的中間價位。

2.Takeuchi 和 Lee(2013)想要通過預測哪支股票將有比中值更高或更低的月度收益(monthly returns)來加強動量效應( momentum effect)。

架構:他們使用一個由堆疊 RBM 組成的自動編碼器提取來自股票價格的特徵,然後他們將特徵送入一個前饋神經網路分類器。每個 RBM 包含由對稱鏈(symmetric links)連線的可見單位層和隱藏單位層。第一層有 33 個單位,用於輸入來自某個時候一支股票的特徵。對每個月 t 而言,特徵包括 t-2 月到 t-13 月 12 個月份的特徵,以及對應 t 月的近似 20 天的回報。他們通過計算關於所有股票每個月或每天的橫切面(cross-section)的 z-得分,正則化每個回報特徵。編碼器最終層的隱藏單位的數量急劇縮減,強迫降維。輸出層有 2 個單位,對應股票是否低於或高於月度收益的中間值。最終層的大小依次為 33-40-4-50-2。

訓練:在預訓練期間,他們將資料集分割成更小的、非重疊性的 mini-batches。然後,他們展開 RBM 形成一個編碼解碼器,使用反向傳播對其進行精調。他們考慮了所有在 NYSE、AMEX 或納斯達克上交易的價格高於 5 美元的股票。他們在 1965 年至 1989 年的資料上進行訓練(848,000 支股票的每月樣本),並在 1999 年至 2009 年的資料上進行測試(924,300 支股票的每月樣本)。一些訓練資料被保留,作為層的數量和每層單位的數量的驗證。

結果:他們總體的準確率大約是 53%。但他們考慮到預測前面十分之一股票和後面十分之一股票之間的差別時,他們得到每月 3.35% 的收益,或者每年 45.93% 的收益。

3.Batres Estrada(2015)預測哪個標準普爾 500 指數的股票在哪天將有高於中值的回報,而且他的研究看起來受到了 Takeuchi 和 Lee(2013)論文的影響。

架構:他使用一個 3 層 DBN 結合到一個 MLP。在每個隱層有 400 個神經元,而且他使用到了 S 形啟用函式。輸出層是一個帶有兩個輸出神經元的 Softmax 層,進行的是二元分類(中值之上或之下)。DBN 由堆疊 RBM 組成,每個進行連續的訓練。

訓練:他首先預訓練了 DBN 模組,然後使用反向傳播精調整個 DBN-MLP。輸入包括 33 個特徵:t-2 至 t-13 月的月度對數收益率,20 支股票在 t 月的每日對數收益率,以及元月效應的指示變數。這些特徵使用每個時間段的 Z 得分進行正則化。他使用了 1985 年至 2006 年的標準普爾 500 指數資料集,並按 70%、15% 和 15% 的比例分開分別用作訓練、驗證和測試。他使用驗證資料選擇層數、神經元數和正則化引數,也是使用 early-stopping 防止過擬合。

結果:他的模型有 53% 的準確率,超過了正則化邏輯迴歸以及一些 MLP 基線。

4.Sharang 和 Rao(2015)使用一個在技術指標上訓練的 DBN 交易一系列美國中期國債期貨。

架構:他們使用一個包含 2 個堆疊 RBM 的 DBN。第一個 RBM 是 Gaussian - Bernoulli(15 個節點),第二個 RBM 是 Bernoulli(20 節點)。DBN 產生隱藏的特徵,他們嘗試將這些特徵輸入進 3 個不同的分類器:正則化邏輯迴歸、支援向量機以及一個有 2 個隱層的神經網路。他們預測如果 5 天內投資組合上升則結果是 1,反之是 -1。

訓練:他們使用一個對比差異演算法訓練 DBN。他們基於開倉、走高、走低、收盤利益和體量資料計算訊號,這些資料最早的是 1985 年的,2008 年金融危機期間的一些點被移除了。他們使用 20 個特徵:在不同時間段計算得到的「日常趨勢」,然後進行規範化。所有的引數使用一個驗證資料集進行選擇。當訓練神經網路分類器時,他們提到在 mini-batch 梯度下降訓練期間使用一個動量引數將每次更新的係數收縮到一半。

結果:使用 PCA 構建的投資組合對第一主成分沒有什麼影響。這種投資組合是對工具的人工延展,所以真正的交易是在 ZF 和 ZN 合同之間的差價完成的。所有的輸入價格是中間價,意味著買賣差價被忽略了。結果看起來是有益的,三種分類模型的準確率比隨機預測器高 5%-10%。

5.Zhu 等人(2016)使用震盪箱理論( oscillation box theory)基於 DBN 做交易決策。震盪箱理論表示,一個股票價格將在某個時間段在固定範圍內震盪。如果價格超出了這個範圍,然後它就進入了一個新的震盪箱。作者想要預測震盪箱的邊界。他們的交易策略是當價格超出了上邊界則買入股票,它低於下邊界時則賣出股票。

架構:他們使用一個由堆疊 RBM 構成的 DBN 以及一個最後的反向傳播層。

訓練:他們使用 block Gibbs sampling (塊吉布斯取樣)方法以一種無監督的方式貪婪地訓練從低到高的每一層。然後,以監督方式訓練反向傳播層,它將精調整個模型。他們選擇標準普爾 500 指數中的 400 支股票進行測試,而且測試集覆蓋 2004 到 2005 年間的 400 天。他們使用了開倉、走高、走低、收盤價格,還有技術分析指標,作為全部的 14 個模型輸入。一些指標通過使用灰色關聯分析(gray relation analysis)或灰色關聯度在預測中更具影響。

結果:在他們的交易策略中,每筆交易收取 0.5% 的交易成本,併為 stop-loss 和交易率增加了一些引數。我並未完全理解結果圖,但報告稱有極大的收益。

基於文字的分類模型

1.Rönnqvist 和 Sarlin (2016) 使用新聞文章來預測銀行危機。具體來說,他們創造了一種分類器來評價一個給定的句子是否暗示了危機(distress)或安寧(tranquility)。

架構:他們在這篇論文中使用了兩個神經網路。第一個用於語義的預訓練,以減少維度。為了做到這一點,他們在文字上執行一個滑動視窗(sliding window),該視窗會取出一個包含 5 個詞的序列然後學習預測下一個詞。他們使用了一種前饋拓撲(feed-forward topology),其中一旦學習到了連線權重,中間的投射層(projection layer)就會提供語義向量。他們也將句子的 ID 包括到了該模型的輸入中,以提供上下文語境和預測下一個詞的資訊。他們使用了二進位制霍夫曼編碼(binary Huffman coding)將句子 ID 和 詞對映到輸入層中的啟用模式(activation pattern),這能依據頻率粗糙地對詞進行組織。他們說帶有固定上下文大小的前饋拓撲在句子序列的建模上比迴圈神經網路更加高效。他們沒有使用百萬計的輸入(一個詞一個輸入),而是使用了來自已經學到的語義模型的 600 個輸入。其第一層有 600 個節點 ,中間層有 50 個修正線性隱藏節點,而輸出層有兩個節點(危機/安寧)。

訓練:他們的訓練使用了在 2007-2009 年金融危機中在 101 家銀行上觀察到的 243 個危機事件。他們使用了 71.6 萬個提及銀行的句子,這些句子選自危機期間或之後路透社(Reuters)的 660 萬篇新聞文章。

結果:他們使用一種自定義的「有用性(Usefulness)」度量來評估他們的分類模型。評估通過交叉驗證完成,併為每一個分類都分配了 N 家銀行。他們將危機的數量聚集到了不同的時間序列,但卻沒有繼續深入去考慮創造一種交易策略。

2.Fehrer 和 Feuerriegel (2015)訓練了一個基於新聞頭條預測德國股票收益的模型。

架構:他們使用了一種遞迴自編碼器,在每一個自編碼器上都有一個用於估計概率的附加 softmax 層。他們執行了三類預測 {-1, 0, 1} 來預測下一天與新聞頭條相關的股票的收益。

訓練:他們使用高斯噪聲(aussian noise)對權重進行了初始化,然後通過反向傳播進行更新。他們使用了一個英語的 ad-hoc 新聞釋出資料集,其覆蓋了 2004-2011 年之間關於德國市場的 8359 個頭條新聞。

結果:他們的遞迴自編碼器有 56% 的準確度,這比更傳統的隨機森林建模方法 53% 的準確度更好。他們沒有開發交易策略,公開發布了一個他們的程式碼 Java 實施系統。

3.Ding 等人 (2015) 使用從新聞頭條中提取出的結構化資訊預測每天標準普爾 500 指數的運動。他們使用 OpenIE 處理頭條來獲取結構化的時間表徵(執行器、動作、物件、時間)。他們使用一個神經張量網路通過成倍地結合事件引數(event argument)來學習它們的語義組合性(semantic compositionality),而不是像標準神經網路那樣只是絕對量地學習。

架構:他們結合了短期和長期的事件影響,使用了一個 CNN 來執行輸入事件序列的語義組合。他們在卷積層之上使用了一個最大池化層,這讓該網路可以僅保留由卷積層生成的最有用的特徵。他們有一個單獨用於長期和中期事件的卷積層。這兩個層與用於短期事件的輸入層一起將資訊饋送到一個隱藏層,然後再饋送到兩個輸出節點。

訓練:他們從路透社和彭博社的新聞裡提取出了 1000 萬個事件。為了進行訓練,他們使用隨機引數替換事件引數的方式來製造虛假的事件。在訓練過程中,他們假設真實事件應該比受損的事件得分更高。當情況不是這樣時,就更新模型的引數。

結果:他們發現結構化事件是比預測股市的詞更好的特徵。他們的方法的效果比基準方法好 6%。他們預測了 S&P 500 指數和 15 支股票的情況,他們給出的表說明他們可以以 65% 的準確度預測標準普爾 500 指數。

波動預測

1.Xiong 等人 (2015)通過對開盤價、走高、走低和收盤價的估計來預測標準普爾 500 指數的日常波動。

架構:他們使用了一個包含一個 LSTM 模組的單一 LSTM 隱藏層。他們使用每日的標準普爾 500 指數的收益和波動作為輸入。他們還囊括了 25 個國內的谷歌趨勢,覆蓋了行業和經濟的主要領域。

訓練:他們使用了每次批處理(batch)帶有 32 個取樣器的 Adam 方法,並使用平均絕對百分誤差(MAPE)作為目標損失函式。他們設定了最大的 LSTM 延遲以便涵蓋 10 個連續的觀察。

結果:結果表明他們的 LSTM 方法比 GARCH、Ridge 和 LASSO 技術的效果都好。

投資組合優化

Heaton 等人(2016) 嘗試創造一種優於生物技術指數 IBB 的投資組合。他們有一個目標:追蹤少數股票和低驗證誤差的指數。他們也嘗試在大規模下跌(drawdown)期間通過反相關(anti-correlated)來跑在指數的前面。他們沒有直接對協方差矩陣建模,而是在深度架構擬合程式中進行訓練,其允許出現非線性。

架構:他們使用了帶有正則化和 ReLU 的自動編碼。他們的自動編碼器有一個帶有 5 個神經元的隱藏層。

訓練:他們使用了 2012-2016 年 IBB 成份股的每週收益資料。他們自動編碼了該指數中的所有股票,並評估了每隻股票和它的自動編碼的版本之間的不同之處。他們也關注了數量不斷變化的其它股票,該數量是通過交叉驗證選擇的。

結果:他們發現追蹤誤差是包括在投資組合中的股票數量的函式,但似乎並沒有和傳統的方法進行比較。他們也使用正收益替代了指數下跌,並找到了追蹤這種修改過的指數的投資組合。

參考文獻:

Batres-Estrada, B. (2015). Deep learning for multivariate financial time series. abstract

Ding, X., Zhang, Y., Liu, T., & Duan, J. (2015, June). Deep learning for event-driven stock prediction. In Proceedings of the Twenty-Fourth International Joint Conference on Artificial Intelligence (ICJAI) (pp. 2327-2333). abstract

Dixon, M. F., Klabjan, D., & Bang, J. H. (2016). Classification-based Financial Markets Prediction using Deep Neural Networks. Available at SSRN 2756331. abstract

Fehrer, R., & Feuerriegel, S. (2015). Improving Decision Analytics with Deep Learning: The Case of Financial Disclosures. arXiv preprint arXiv:1508.01993. abstract

Heaton, J. B., Polson, N. G., & Witte, J. H. (2016). Deep Portfolio Theory. arXiv preprint arXiv:1605.07230. abstract

Rönnqvist, S., & Sarlin, P. (2016). Bank distress in the news: Describing events through deep learning. arXiv preprint arXiv:1603.05670. abstract

Sharang, A., & Rao, C. (2015). Using machine learning for medium frequency derivative portfolio trading. arXiv preprint arXiv:1512.06228. abstract

Sirignano, J. A. (2016). Deep Learning for Limit Order Books. arXiv preprint arXiv:1601.01987. abstract

Takeuchi, L., Lee, Y. (2013). Applying Deep Learning to Enhance Momentum Trading Strategies in Stocks. abstract

Xiong, R., Nicholas, E. P., & Shen, Y. (2015). Deep Learning Stock Volatilities with Google Domestic Trends. arXiv preprint arXiv:1512.04916. abstract

Zhu, C., Yin, J., & Li, Q. (2014). A stock decision support system based on DBNs. Journal of Computational Information Systems, 10(2), 883-893. abstract

相關文章