張晉陽
(四川大學計算機學院,成都 610065)
金融市場的歷史數據充滿了許多噪聲和不穩定性,所以金融市場預測是一種非常具有挑戰性的應用[1-2]。大部分成功的方法是當市場處于牛市或熊市的時候給訓練數據打上標簽[3-4]。然而金融市場的表現會依賴于一些外部的因素,例如市場趨勢、政治事件,等等,這些可能會造成訓練機器學習分類器時造成過度擬合[5-6]。本文旨在通過強化學習的方法來減少過度擬合,以及最大化回報函數。為了實現這個目標,本文使用相同訓練數據對Q-learning agent 訓練多次,然后根據不同agent 生成的金融市場的交易信號來優化最終的交易決策。實驗結果會和傳統的買賣策略進行對比,也會對結果進行定量和定性的分析。
本文使用強化學習中的Deep Q-learning 算法用于股票的日內交易[5]。根據每次訓練迭代的結果使用混合的Deep Q-learning 策略,并且在一些特定的場景和交易周期,探索了不同的日內交易信號的組合[6]。強化學習中的智能體agent 通過不斷學習來達到更好的交易表現。
本文通過配置智能體agent 來實現一個經典的日內交易策略,即買/賣特定的股票期貨,并且在每個交易日市場收盤前,期貨交易必須平倉。根據本文的交易策略,智能體agent 在每個交易日中必須執行的動作如下:
(1)做多:買進股票期貨,并在交易日結束前賣出所買進的股票期貨;
(2)做空:賣出股票期貨,并在交易日結束前買進所賣出的股票期貨;
(3)觀望:在交易日結束前不進行任何買進/賣出動作。
本文交易策略的目標:假設給定股票期貨在每個交易日的價格趨勢的預測(股票期貨在該交易日上漲/下跌),通過在每個交易日采取不用的交易動作,來最大化在每個交易日的經濟回報。因此,在智能體agent假設交易日股票期貨的價格上升,智能體agent 執行做多動作。相反,智能體agent 假設交易日股票期貨的價格下降,智能體agent 執行做空動作。如果智能體agent 對股票期貨的價格變化趨勢不確定或者股票期貨的價格維持不變,智能體agent 執行觀望動作。
本文使用的方法是基于Double Q-Learning(DQL)agents,使用Deep Q Networks(DQN),通過網絡權重的學習和訓練階段錯誤的反向傳播來更新Q 表。在測試場景,DQN 處理輸入(狀態),并且為接下來每個動作返回Q 值,然后選擇執行在當前狀態Q 值最高的那個動作。
本文的方法考慮了在環境中不同epoch 中訓練的多個DQN agents[7]。當我們使用DRL 預測股票價格時,我們需要提前了解金融市場的復雜性,以便我們更加合理地設計智能體agents 的動作空間。為了達到這樣的目標,股票期貨交易的多個DQN 代理可以配置多個動作組合,這些動作組合可以適用于不同的市場。本文提出了下列的動作組合:
(1)做多agent(Only-Long)。最終的agent 由多個agents 組成(即在不同epoch 訓練的agent),并且在使用訓練集數據在訓練階段中,所有的日內交易的動作為做多或者觀望。為了模擬真實世界的交易,本文將我們要預測的某一天的歷史價格數據作為輸入,使用已經預訓練好的agent 來預測接下來的動作,生成一個日志文件,這個日志文件中包含了agent 在不同epoch中每個交易日的交易決策。最后,通過threshold 閾值函數生成agent 在每個交易日最終的交易決策。
(2)做空agent(Only-Short)。最終的agent 和做多agent 類似,不同的只是各個agents 的日內交易的動作為做空或者觀望,并且最終的agent 由threshold 閾值函數生成每個交易日的交易決策。
(3)做多+做空agent(Long+Short)。該agent 以上面的做多agent 和做空agent 的結果作為輸入,將它們最終的交易決策組合在一起。如果做多agent 和做空agent 的交易決策未達成一致或者均建議觀望,則做多+做空agent 選擇的動作為觀望。
(4)全局agent(Full)。最終的agent 由多個單獨的做多+做空agent 組成,相比于做多agent 和做空agent,它是由做多+做空agent 在不同epoch 中訓練得到的交易決策通過threshold 閾值函數生成每個交易日的交易決策。
以一個agent 配置的過程為例,解釋了本文提出的方法如何工作的。如果已經訓練好了一個做多agent,我們可以訓練一些強化學習agents,根據最高的回報獎勵來選擇觀望或者做多動作,然后將每個代理的輸出應用到過去的交易日的數據中。通過選擇一個合適的threshold 閾值,agent 從多個強化學習agents 得出的最頻繁的交易決策中選擇相對應的交易動作或者保持觀望。
這樣agent 的配置過程中,依然需要考慮到不同金融市場的特殊性。例如,S&P500 指數從歷史上看有一個顯著的增長趨勢,從交易回報上看,日內交易可能沒那么重要。除此之外,我們還可以通過改變threshold閾值來轉變我們交易的風格。例如,做出更加保守或者具有隨機性的交易行為。例如,在長期投資中,選擇更多觀望的交易動作來避免市場比較危險時虧損。另外,在短期投資中,我們假設不會發生市場危機,我們希望保證大多數agents 能夠捕獲股票期貨交易行為的本質。
標準普爾500 指數(S&P500),時間粒度為小時的價格數據集,如表1 所示。市場價格信息通常以市場點的形式顯示,如標準普爾500 指數市場的點值為50美元(USD)。

表1 數據集結構
本文在S&P500 數據集中分析了大約兩年的短周期數據集(S&P500-S 子數據集),該數據集的詳細情況如表2 所示。

表2 實驗中考慮的期貨市場數據集
本文在S&P500-S 數據集實驗前,使用固定的初始投資為:S&P500-S:102087.50 USD。
索提諾比率(Sortino Ratio,SR)被認為是統計評估交易策略績效的最佳指標之一,因為它提供了相對于假設風險的預期回報率[8]。其公式如下式所示:

其中Rˉ代表交易策略預期的平均回報,rf是無風險利率,σd是收益率的下行標準差,即僅為負收益率的標準偏差,用于估計所考慮策略的波動性(或風險)。這一比率越高,表明股票期貨承擔相同單位下行風險能獲得更高的超額回報率。
在圖1 中,就Sortino Ratio 而言,從總體上來看,在短周期交易場景中,Buy-and-Hold 具有正向的趨勢,但做多agent 明顯優于Buy-and-Hold。

圖1 S&P500-S實驗的Sortino比率每日匯總
在圖2 中,在threshold 閾值在60%-90%范圍中,做多agent 優于Buy-and-Hold,并且在短周期交易場景中獲得了最高的收益。

圖2 S&P500-S實驗的回報率(越高越好)
在圖3 中,隨著交易的進行,能看到做空agent 和做多+做空agent 的表現,它們的凈資產曲線隨時間的變化呈現出正向的走勢,而Buy-and-Hold 在剛開始交易的一段時間走勢卻并不樂觀。此外,做多agent 曲線顯示,隨著時間的推移,交易行為更加可靠,整體收益也一直比其他要高。實際上,做多+做空agent 在交易期間的后半部分表現的更好,在此期間,做空agent 采取更為保守的交易決策(大部分時間選擇觀望),從整體收益來看,最好的表現仍然是做多agent。此外,Full agent 在交易期間的前半部分,做多或者做空決策顯得更為激進,表現比較好,但在交易期間的后半部分無法利用到市場復蘇獲得更高的收益。

圖3 S&P500-S實驗的凈資產(越高越好)
近幾年來,股票期貨交易越來越受人們的歡迎,一些缺乏股票期貨領域專業知識的用戶也希望借助日內股票交易自動化系統在股市致富。本文使用基于獎勵的分類器,針對特定市場的特殊決策組合,形成多個強化學習分類器的最終決策。本文的實驗結果也表明可以通過一個靈活的集成策略來解決不同股票市場的不確定性和混沌行為。與“買入并持有”被動投資策略相比,本文的方法在索蒂諾比率和凈資產曲線方面產生了很好的效果。本文局限在處理的數據只包含過去的價格數據,未來可以與基于新聞的分類系統結合起來,以便更好地考慮外部因素對這些市場的影響。