先前在FinRL
的入門學習中,已經嘗試建構了一套針對日線設計的自動交易系統,然而在使用了以後,我認為離我想要達成的目標有些出入;因此我還沒有更詳細的進入到FinRL
的DRL策略中進行更細節的了解,我想要稍微修改一下方向,朝向更高頻的交易去學習,並建構相關的自動交易系統。
今天我花了一些時間找了相關的論文;目前我找了兩篇主題較接近,年份也較新的論文,並且有提供程式碼,我打算照順序嘗試,哪篇可以建構出接近我理想的交易環境,就更細的研讀下去。
第一篇是MacroHFT:
在開始執行程式前,先大概了解一下MacroHFT想解決什麼問題,以及設計交易策略的方向是符合我尋找的方向。
數據上除了使用最常見的OHLCV數據
以外似乎還需要限價單數據(LOB)
;我目前只有撰寫抓取OHLCV數據
的程式,限價單數據(LOB)
之後要想辦法取得。
不過由於MacroHFT的github目前看起來很新,使用過的人也不多,估計用起來應該會有很多問題,因此打算先跑起來看看,再考慮進一步的問題。
如果找到的這幾篇較新的paper程式碼都不能用的話,應該會去嘗試星星數較多,也更多人使用過的專案如tensortrade之類的;不過總之,先試試看再說。
基於哪些先前的研究做出改進
MacroHFT 基於強化學習(RL)和分層強化學習(HRL)的相關研究進行改進,針對加密貨幣市場高頻交易中現有方法的局限進行優化:
-
現有RL方法的局限:之前的方法通常只基於市場趨勢進行分類,忽略了市場波動性(volatility)的重要性,導致交易策略過於單一,難以應對市場的劇烈波動。
-
分層強化學習的缺點:過去的HRL方法(如EarnHFT)主要關注在單一時間點選擇一個子代理進行交易,導致決策片面,尤其是在波動劇烈的市場中,策略容易過度偏向單一方向,從而降低獲利能力。
想解決的問題
-
避免過擬合與片面決策:現有RL方法在面對加密貨幣市場的高頻交易時容易過擬合,難以針對不同的市場情境進行有效的策略調整。此外,單個代理在應對市場波動時的決策過於片面,容易導致重大損失,尤其在極端市場環境下尤為明顯。
-
應對多變的市場動態:MacroHFT試圖通過引入市場趨勢與波動性指標,並使用記憶增強的方式,幫助模型更好地處理快速變化的市場條件,避免一味依賴單一策略。
貢獻點
-
市場分解與子代理訓練:提出了基於市場趨勢和波動性指標的市場分解方法,並針對不同市場動態訓練多個專門的子代理。
-
條件自適應的低層策略優化:使用條件自適應的雙深度Q網絡(Double DQN)來訓練子代理,使得模型能根據市場條件進行策略的動態調整。
-
記憶增強的高層策略優化:引入記憶增強機制,通過存儲和檢索相似情境中的經驗,來幫助高層代理在面對市場波動時做出更為穩健的決策。
如何訓練模型?模型的輸入輸出
-
模型架構:
-
低層MDP(Markov Decision Process):針對不同市場動態訓練多個子代理,處理市場的微觀結構(如限價單、OHLCV數據等),並根據當前頭寸和市場技術指標進行交易決策。
-
高層MDP:高層代理根據多個子代理的Q值評估結果生成一個加權的混合策略,最終做出交易決策。
-
輸入:
-
低層狀態:由限價單數據(LOB)、OHLCV數據以及技術指標構成。
-
高層狀態:包括來自低層的狀態特徵、回溯窗口中的市場趨勢與波動性指標,以及當前頭寸。
-
輸出:
-
低層行動:子代理根據市場狀態決定交易行動,如買入或賣出。
-
高層行動:高層代理通過混合多個子代理的策略生成最終的交易決策。
-
獎勵:
-
低層獎勵:基於當前與下一時間步的淨值變化來計算。
-
高層獎勵:與低層獎勵相同,基於整體淨值變化。
訓練需要的label
-
市場趨勢與波動性標籤:市場數據被分段並根據市場趨勢(如牛市、熊市)和波動性(如高波動性、低波動性)進行標籤化,這些標籤幫助模型在不同市場情境中進行策略的適配。
-
Q值標籤:通過動態規劃算法計算的最優Q值用於訓練代理的決策網絡,保證模型在各種市場條件下能持續獲利【12†source】 。