傅豐,王康
(四川大學計算機學院,成都610065)
投資組合管理[1],是將一定數量的資產配置到不同的金融投資產品中的決策過程。目的是,在風險相同的情況下,最大化收益[2]。傳統的投資組合管理方法可分為“跟隨贏家”、“跟隨輸家”、“模式匹配”和“元學習”四類[3]。機器學習[4]是當今的熱門話題,其中,強化學習與深度學習是它的兩個子領域。本文嘗試采用深度強化學習技術,在股票池中分配資產。采用無模型強化學習算法,不假設先驗知識或建立模型,而是使模型直接與金融環境接觸,讓模型從歷史市場中觀察和學習,最終使累積收益最大化。
在金融市場領域,許多傳統機器學習使用歷史市場數據預測價格變動或者價格趨勢[5]。神經網絡以金融資產的歷史價格作為輸入,輸出下一時間周期金融資產的預測向量。交易決策者根據這個預測價格,采取相應的動作。這是回歸問題,也是一個有監督的學習。這種基于價格預測的算法,其表現性能在很大程度上取決于預測的精確度。但是,要精確地預測未來的股市價格,是非常困難的。股票市場的分布,不一定是一成不變的,而且還受投資者的心理因素、政治因素等影響。將價格預測轉換為相應的動作,還需要額外的邏輯轉換,是不高效的,擴展性較差。
實際上高精度的價格變動預測,往往難以實現,而且投資組合管理目標,就是為了獲得最高的利潤。因此,本文根據歷史市場數據,直接獲得對金融資產的動作行為,即投資組合向量。實驗證明,在不預測未來價格的情況下,可以將上述的無模型算法交易問題轉化為強化學習的問題[6]。Zhengyao Jiang 等人將深度強化學習運用于加密貨幣的投資組合管理中,在1.8 個月的交易周期內,實現了10 倍的回報。這些RL 算法直接輸出交易的動作信號。
無模型深度強化學習面臨著高的樣本復雜度和超參數脆弱性等困境。即使是簡單的任務,也需要大量的數據;為了獲得良好的效果,必須為不同的問題仔細設置超參數。Tuomas Haarnoja 等人引入了基于最大熵框架的SAC(Soft Actor Critic)算法[7]。
強化學習(RL)[8]是機器學習中的一個領域,它主要包含四個元素:智能體、環境、動作、獎勵。強化學習強調如何基于環境而行動,以取得最大化的預期收益。深度學習[9]的快速發展,使得強化學習能夠解決具有高維的狀態-動作空間行為,并因此建立了深度強化學習(DRL)。
無模型深度強化學習面臨著高采樣復雜度和脆弱的收斂性等兩個困境,嚴重依賴調參。在金融股票領域,數據的狀態空間非常龐大,數據之間存在高相關性,因此,限制了強化學習在金融股票領域的應用。所以,我們使用Soft Actor Critic 框架,應用在金融股票領域。SAC 要求actor 同時最大化期望和策略分布的熵[10],與DDPG 相反[11],即在最大化收益的同時鼓勵探索。SAC 的軟策略迭代過程分為軟策略評估和軟策略更新。
軟策略評估為:

Tπ是Bellman backup 算子,且Qk+1=TπQk

軟策略更新為:Zπold( )
st是配分函數。
重復交替使用軟策略評估和軟策略更新,最終策略會收斂到最優。
學習目標是:

超參數α控制最優策略的隨機程度,由下式求解:

本文將s 定義為金融市場的狀態,即為每日資產的價格。本文中,將s(狀態)設置為每日股票的最高價和收盤價。a 代表強化學習中智能體的動作,在金融領域一般即為[買入,賣出,持有]。用每日持有的各個相應資產權重的差值,代表每日相應的動作,即[買入,賣出,持有];reward 代表相應動作的獎勵。我們的目標即為一個回合結束時,最大化我們的資金。
我們觀測數據為前十天的資產價格,智能體獲得前十天的歷史價格序列,并據此做出投資決策,這個過程將持續到最后一個交易期。智能體的目的就是最大化累積獎勵。
本文僅僅考慮回測交易,即智能體回到歷史市場上的時間點,且不知道任何之后的市場信息,從這個時間點上進行交易。同時,滿足下列條件:①當智能體做出交易決策時,市場允許其根據相應的價格做出交易決策;②智能體投入的資金交易操作等,不會對市場有影響。
本文使用中國市場上的指數數據,目的是判斷強化學習算法能否感知中國股市大盤環境,算法是否對中國股市有效[12]。數據為深證綜指、上證指數、上證50、中證100,股票代碼為‘399106.SZ'、‘000001.SH'、‘000016.SH'、‘000903.SH'。在tushare 平臺上獲取數據。采用現金作為無風險交易數據。時間長度為從2006 年1 月4 日至2019 年11 月14 日。本文中為每日交易且只進行一次交易。按每日各個股價的收盤價進行交易。數據歸一化采用除以最大值的方法進行歸一化。
本文將每日扣除手續費后的收益(分為正收益和負收益)作為強化學習中的reward,輸出的每日各個資產的權重之差,作為強化學習中的action,各個資產的歷史價格矩陣,作為強化學習中的state。
傳統的深度強化學習在金融股票領域的應用,是預測股票的價格,所以輸出的是預測價格向量。本文的網絡輸出的是投資組合中各個金融資產的占總資產的權重。本文算法中的動作,與獎勵沒有明確的映射關系,因此,本文中還可以提供更多的可擴展性。
本文將數據集分成三個部分:訓練集、驗證集、測試集。在訓練集中,神經網絡會調整相應的權重,進行學習。驗證集用于調整超參數,例如網絡的層數、學習率等。測試集用于評估該算法的最終性能。
本文的訓練過程,利用基于梯度的方法,調整神經網絡的權值,使訓練集上的獎勵函數最大。訓練中使用Adam 優化器,學習率設置為千分之一。
本文中訓練集的時間跨度為從2006 年1 月13 日至2017 年2 月4 日,驗證集的時間跨度為從2017 年2月14 日至2018 年6 月25 日,測試集的時間跨度為從2018 年7 月5 日至2019 年11 月14 日。根據驗證集的效果選擇最佳網絡,初始資金設為一萬元人民幣。
本文將模型與以下基準進行對比。一種是將初始資金全部投資于投資組合管理中的一支股票,直至結束;一種是將初始資金全部投資于投資組合管理中的一支直至結束,然后取它們的均值。本文還將算法和policy gradient 進行對比[13]。本文的手續費設置為千分之一。采用SAC 算法的模型,測試結束時獲得了12435 元的資金,年回報率為17.53%[14];采用policy gradient 算法的模型,測試結束時獲得了10580 元人民幣,年回報率為4.18%;將全部資金投資于單個股票并持有至結束的方法,在測試結束時,平均獲得了11457 元人民幣,年回報率為10.49%。
分析結果可以發現,SAC 模型的年回報率最高,動作輸出比較集中于上證50,policy gradient 模型在收益方面低于長期持有平均水平,然而仍然是盈利的,且policy gradient 模型的輸出動作,不會收斂至單一股票,分布相對平均,更加符合投資組合的理念。
本文首次將強化學習中的SAC 算法應用于投資組合領域,即在最大化獎勵的同時也最大化熵,保證穩定性和探索能力。本文提出的模型以原始市場數據、歷史價格作為輸入,直接輸出投資組合中金融資產的權重向量。本文提出的方法,不依賴任何金融理論,因此具有高度的可擴展性。本文將SAC 算法的性能和其他模型進行了比較,在收益、年回報率方面取得了令人滿意的效果。但是,觀察智能體的輸出動作,發現權重比較集中于一支股票上,這與投資組合的初衷背道而馳。而policy gradient 雖然在收益、年回報率方面較低,但動作相對比較分散,符合投資組合的初衷。
本文工作的局限在于,無法使用歷史數據來完全模擬真實的在線交易。未來可以在如何有選擇性、有針對性地挑選優質股票,以及添加金融市場信息等方面做改進。