目前低層級代理已經訓練完了,但是高層級代理還在訓練當中,由於先前提到MacroHFT
的程式碼可能存在一些問題,雖然目前路徑相關的問題應該都已經處理好了,不過還是要等整個訓練完成後,看看是否真的有不錯的效果;在現在訓練尚未完成的時間裡,我正在嘗試把EarnHFT
跑起來。
在最初調研的時候,我在EarnHFT
跟MacroHFT
中做選擇,因為MacroHFT
較新所以選擇了它。這幾天在跑MacroHFT
時我大致了解了MacroHFT
是在EarnHFT
之後針對RL在高頻數據上容易過擬和的問題上提出解決方法;所以在目前MacroHFT
可能有問題的情況下,我已經開始嘗試跑看看EarnHFT
,發現該專案有把Issue的問題都解掉,程式碼看起來也相對完整,所以在嘗試完MacroHFT
之後若是結果不如預期,打算接著去試EarnHFT
。
目前
EarnHFT
的程式碼需要從tardis
抓數據,它提供了抓程式的腳本但沒有提供抓好的資料;由於tardis
真的是挺貴的,所以還是打算先跑完MacroHFT
,確定有需要才繼續去嘗試EarnHFT
;在等待訓練結果的同時,我也正在想辦法弄學校的信箱來用,因為tardis
用學術信箱註冊付費可以便宜個幾千塊,不然以只是想先嘗試跑代碼的情況下,這個付費真的是貴到哭爸。
由於目前在等待MacroHFT
的訓練結果,所以今天更細的了解了一下MacroHFT
的訓練內容包括預設好的這些訓練參數有什麼意義,這邊也做一下筆記。
低層級代理的基礎是選用DDQN,以DDQN為基底做出調整。
在訓練低階代理(low-level agent)的過程中,MacroHFT
引入了KL Divergence Loss,其主要目的是幫助學習一個更好的政策(policy),具體而言是透過將代理的Q值分佈與最佳Q值分佈之間的差異進行衡量:
KL Divergence Loss在低階代理的訓練中扮演著關鍵角色,通過引導學習過程和調整策略,使得代理能夠更有效地適應市場變化,學習到有利的交易策略。這種方法特別適合於高頻交易中需要快速適應市場動態的情境。
引入KL Divergence Loss來增強學習結果的穩健性是此論文的主要貢獻之一,因此alpha=0
的Low Level Agent基本上就是等於直接使用DDQN來學習的結果,較容易有論文提到的過擬合問題,得到的agent也較為不穩定。
此論文的另一個重點就是使用層級架構(HFT)來降低過擬合,低層級會訓練6個不同參數的低層級代理;所有低層級代理在訓練好後會被高層級代理使用。
使用low_level.bat
訓練完成後,我們得到了6個低層級代理(Low Level Agent
),我們可以將這六個低層級代理進行以下分類與解釋:
alpha
值會影響代理在訓練過程中對演示行為的遵循程度。更高的 alpha 值意味著更強的限制,代理將更傾向於遵循演示行為。loss = td_error + alpha * KL_loss
,所以當alpha=0
時,訓練過程會完全忽略KL Divergence
的效果。;相反的如果alpha
值越大,則會放大KL Divergence
的效果。以下是這六個低層級代理的具體差異:
代理編號 | alpha | clf | label |
---|---|---|---|
1 | 1 | slope | label_1 |
2 | 4 | slope | label_2 |
3 | 0 | slope | label_3 |
4 | 1 | vol | label_1 |
5 | 4 | vol | label_2 |
6 | 0 | vol | label_3 |
以趨勢為分類(slope)
以波動性為分類(vol)