DeepTrader: A Deep Reinforcement Learning Approach for Risk-Return Balanced Portfolio Management with Market Conditions Embedding
DeepTrader的算法一共包括上面的綠色、藍色、紫色三部分,對應的是股票打分、市場情緒、投資組合生成器。其中綠色和紫色部分是原來AlphaStock有的結構,作者在原來的attention基礎上加了創新;藍色框里的市場情緒打分是本文額外加的,原來AlphaStock中設定的是多倉和空倉頭寸是相等的,是zero-investment portfolio,而本文認為市場有時候利空有時候利多,所以用一些宏觀市場變量(比如整個股票池中有多少只股票漲)等來計算市場的情緒,據此分配空頭倉位。
整個算法流程就是股票打分器(綠色部分)對股票的漲跌潛力打分并給出投資組合占比,而市場打分器(藍色部分)分配空頭資金量,二者結合一下就是最后的投資組合(紫色部分)。
下面我們來看一下三個部分的具體結構:
由三個關鍵技術組成:時間卷積層(TCN)、空間注意力機制(Spatial Attention)和圖卷積層,分別用于提取各股票的時間特征、股票之間的短期空間關系(相關性)和長期空間關系(因果關系、行業結構等)。
(1)Temporal Convolution Layer.
這一步是在AlphaStock的LSTM-HA那里,用TCN來代替LSTM,獲取股票的時間特征表示。TCN相比RNN類的方法,好處是可以并行計算(計算快),減輕了梯度爆炸和消失的問題。
對TCN不了解的朋友可以看這篇筆記熟悉一下:
隨風:時間序列分析(5) TCN
“實驗表明,RNN 在幾乎所有的序列問題上都有良好表現,包括語音/文本識別、機器翻譯、手寫體識別、序列數據分析(預測)等。
在實際應用中,RNN 在內部設計上存在一個嚴重的問題:由于網絡一次只能處理一個時間步長,后一步必須等前一步處理完才能進行運算。這意味著 RNN 不能像 CNN 那樣進行大規模并行處理,特別是在 RNN/LSTM 對文本進行雙向處理時。這也意味著 RNN 極度地計算密集,因為在整個任務運行完成之前,必須保存所有的中間結果。
CNN 在處理圖像時,將圖像看作一個二維的“塊”(m*n 的矩陣)。遷移到時間序列上,就可以將序列看作一個一維對象(1*n 的向量)。通過多層網絡結構,可以獲得足夠大的感受野。這種做法會讓 CNN 非常深,但是得益于大規模并行處理的優勢,無論網絡多深,都可以進行并行處理,節省大量時間。這就是 TCN 的基本思想?!?/blockquote>圖2 TCN:簡單來說,就是使用了空洞卷積和ResNet結構 我們把第 塊(block)的輸入記作,其中 是股票數量, 是隱藏層特征維度, 為第 塊的時間長度。
沿時間維度進行TCN運算后,TCN的輸出為 。
如圖1綠框部分所示,用TCN提取的股票時間特征 分別被輸入到spatial attention和GCN兩個組件中產生股票短期相關性權重 和長期相關性權重 ,兩者相乘作為股票的最終空間相關性權重。
(2)Spatial Attention Mechanism.
這一步是為了模擬股票之間的短期空間屬性。得到TCN輸出的股票時間特征表示 后,輸入到空間注意力機制中用來產生一個權重,這個權重代表股票間的相關性關系:
是參數,上標 表示前兩個維度的轉置, 是bias向量。
接下來再把每個元素用softmax歸一化一下,用來代表股票i和j的相關性:
(3)Graph Convolution Layer.
圖卷積層用來對股票間的長期空間關系進行建模。
雖然個股的表現具有變化的波動性,但行業(industry)的整體表現通常更能反映未來的經濟形勢熱點。這里用了圖卷積網絡GCN,通過消息傳遞來獲取圖中節點的依賴關系,將邊和節點的信息集成到表示中。
這里關于股票的圖結構的構建,作者實驗了以下幾種方式:
- 股票行業分類
- 股票收益的相關性
- 股票收益的偏相關性
- 因果關系(通過PC算法識別股票之間的因果結構)
仍然是用TCN的輸出 作為輸入,
(1)對于使用股票行業分類方式構建的圖結構:
由于只使用行業分類信息可能會忽略某些依賴關系(比如亞馬遜歸類是零售貿易,但是它也受益于互聯網紅利),為了避免這個問題,這里GCN使用復雜一點的結構:使用Graph WaveNet for Deep Spatial-Temporal Graph Modeling. (arXiv:1906.00121)這篇文章里的公式
其中 , 是GCN中可以學習的參數。 用于捕捉相關性, ,這里 是隨機初始化的可學習的參數,Q是平衡 和 之間信息量的參數。
(2)對于上面說的用后三種方式(收益相關性、偏相關性和因果關系)構建的圖結構來說,我們使用
也就是公式(2)的第二項不需要了,因為依賴關系已經從數據中估計出來了。
這樣我們得到了股票長期相關性權重 。
(4)Stock scoring
現在我們有了兩個權重矩陣 ,使用殘差網絡結構,第l個block的輸出就可以寫為
這里 是殘差連接的意思。
對殘差網絡不熟悉的小伙伴請看這篇介紹:
小小將:你必須要知道CNN模型:ResNet以上(1-4)步描述的就是圖1里面綠框中藍色矩形block的結構,然后我們把這個block結構堆疊L次獲得第L塊的輸出 ,就是最后的股票的時空特征。
最后,我們將 過一個全連接層,得到的最后股票的漲跌潛力打分:這就是股票打分器的最后輸出了。
2. Market Scoring Unit
由于隨機賭博和突發事件,金融數據包含大量不可預測的不確定性。根據歷史觀察來準確判斷股票的漲跌是不可行的。在以往基于RL的投資模型中,投資策略僅僅是基于對每只股票的分析,而忽略了市場的變化。
而順應市場是一個更好的投資策略。當股市下跌時,有經驗的投資者傾向于在賣空上花更多的錢。為了平衡收益和風險,本文提出了市場評分單元。以市場情緒指標為輸入,動態調整資金配置。
這部分就是市場特征過了一個LSTM加一個時間維度上的attention(和AlphaStock的LSTM-HA是一樣的),最終輸出正態分布的期望和方差 ,空倉資金的比例就用 來產生:
用LSTM提取市場變量 的表示
用注意力機制加權來捕捉較早的信息關系
最后的LSTM輸出為 ,然后輸出正態分布的均值和方差
3. Portfolio Generator
和AlphaStock一樣,在獲得股票打分器給出的分數 后,選出前G只股票做多,后G只股票做空,然后使用v的softmax產生投資組合權重,
與AlphaStock不同的是,多了一個市場打分得到的空倉比例 。 這可以看作是在連續動作空間 中選擇一個值,在訓練階段根據正態分布 對 進行采樣,在測試階段 ,然后將這個值固定到[0,1]的范圍內。
以上流程完成后,按照交易流程中規定的流程完成交易周期。
4. Optimization via RL
以上過程用RL來優化,策略 由選股分配組合權重和空倉比例兩部分組成。
(1)第一個是選股分配組合權重:
return rate是
如果初始投資金額是 ,一個軌跡 的累積金額為
股票評分單元的優化目標為跡的對數累積財富最大化:
(2)而市場打分的策略使用高斯策略:
給定reward ,優化目標為
把二者加權求和就是最終的優化目標:
然后用梯度下降更新就可以了。
實驗
為了全面評估DeepTrader,作者對三個知名股指的成分股進行了實驗,旨在回答以下問題:
Q1: DeepTrader的表現如何,尤其是在一些特殊的金融事件中,比如次貸危機呢?
Q2: DeepTrader的關鍵創新【attention、GCN】和【市場評分單元】,是否有必要、提高性能?
Q3: 市場評分單元獎勵函數的選擇,如何影響投資效果?
Q4: GCN的圖結構是否影響投資效果?
Baseline
比較的方法是五種相關的方法,即Market、BLSW (1988), Csm (1993), EIIE(Jiang,2017)和AlphaStock (AS) (Wang et al. 2019)。
- market是一種簡單的買入并持有策略。
- BLSW是一種基于均值回歸的策略(Poterba和Summers 1988)。
- CSM是一種經典的動量策略。
- ElIE和AS是最近發展起來的兩種基于RL的方法。
五種方法中,BLSW,CSM和AS可以進行做空操作。
Ablation
還實現了DeepTrader (DT)的幾個變體簡化版本,其中“N”意味著沒有或從DeepTrader刪除一些組件。
- DT-NS從股票打分單元中去除了空間注意機制和GCN層,
- 而DT-NM則去掉了市場評分單元。
還研究了不同的獎勵函數和圖結構對GCN的影響。默認情況下,我們使用最大回撤MDD作為獎勵函數,股票行業分類產生圖結構。
評價指標
我們在實驗中使用了六個指標,分為三類:
- 1)利潤準則,包括年化收益率(annual Rate of Return, ARR);
- 2)風險準則,包括年化波動率(annual Volatility, AVol)和最大回撤(Maximum DrawDown, MDD);(越低越好)
- 3)風險-收益準則,包括年化夏普比率(ASR)、卡爾瑪比率(CR)、Sortino比率(SoR)。