iT邦幫忙

2024 iThome 鐵人賽

DAY 22
0

目前低層級代理已經訓練完了,但是高層級代理還在訓練當中,由於先前提到MacroHFT的程式碼可能存在一些問題,雖然目前路徑相關的問題應該都已經處理好了,不過還是要等整個訓練完成後,看看是否真的有不錯的效果;在現在訓練尚未完成的時間裡,我正在嘗試把EarnHFT跑起來。

在最初調研的時候,我在EarnHFTMacroHFT中做選擇,因為MacroHFT較新所以選擇了它。這幾天在跑MacroHFT時我大致了解了MacroHFT是在EarnHFT之後針對RL在高頻數據上容易過擬和的問題上提出解決方法;所以在目前MacroHFT可能有問題的情況下,我已經開始嘗試跑看看EarnHFT,發現該專案有把Issue的問題都解掉,程式碼看起來也相對完整,所以在嘗試完MacroHFT之後若是結果不如預期,打算接著去試EarnHFT

目前EarnHFT的程式碼需要從tardis抓數據,它提供了抓程式的腳本但沒有提供抓好的資料;由於tardis真的是挺貴的,所以還是打算先跑完MacroHFT,確定有需要才繼續去嘗試EarnHFT;在等待訓練結果的同時,我也正在想辦法弄學校的信箱來用,因為tardis用學術信箱註冊付費可以便宜個幾千塊,不然以只是想先嘗試跑代碼的情況下,這個付費真的是貴到哭爸。


由於目前在等待MacroHFT的訓練結果,所以今天更細的了解了一下MacroHFT的訓練內容包括預設好的這些訓練參數有什麼意義,這邊也做一下筆記。

解析低層級代理的訓練參數

低層級代理的基礎是選用DDQN,以DDQN為基底做出調整。

KL Divergence Loss

在訓練低階代理(low-level agent)的過程中,MacroHFT引入了KL Divergence Loss,其主要目的是幫助學習一個更好的政策(policy),具體而言是透過將代理的Q值分佈與最佳Q值分佈之間的差異進行衡量:

1. KL Divergence的作用

  • 指導學習:KL Divergence作為一種損失函數,量化了當前策略的行為與理想策略(最佳Q值)之間的差異。通過最小化這個差異,代理能夠學習到更接近理想策略的行為,進而提高其在特定市場情況下的表現。
  • 防止過擬合:透過引入KL Divergence,訓練過程中對當前策略的調整不僅依賴於當前的獎勵信號,也考慮了與理想策略的對比,這有助於防止代理對訓練數據的過擬合。

2. 訓練過程中的影響

  • 調整策略的靈活性:KL Divergence的引入使得代理能夠根據當前的市場狀況及其持倉進行適當的調整。這意味著在市場波動較大時,代理能夠迅速適應新的市場條件,調整其交易策略以減少損失或獲取利潤。
  • 強化學習的適應性:透過結合上下文特徵(如市場趨勢和波動性)及當前持倉,KL Divergence促進了低階代理的學習,使其能夠在不同的市場條件下生成更具適應性的交易策略。

3. 輸出結果

  • 學習到的策略:最終,透過這種訓練過程,低階代理將學會在不同市場條件下採取合適的行動,這些行動能夠最大化其獲得的獎勵,同時也能夠有效管理風險。

4. 影響的具體例子

  • 如果alpha=0:KL Divergence的影響被完全忽略,代理的學習將完全依賴於直接的獎勵信號,這可能導致其無法適應快速變化的市場條件。
  • 如果alpha增大:KL Divergence的權重增加,則對學習過程的影響增強,代理更可能學習到一個穩健的策略,這種策略能夠充分利用市場的變化,以獲得更高的獲利潛力。

KL Divergence Loss在低階代理的訓練中扮演著關鍵角色,通過引導學習過程和調整策略,使得代理能夠更有效地適應市場變化,學習到有利的交易策略。這種方法特別適合於高頻交易中需要快速適應市場動態的情境。

引入KL Divergence Loss來增強學習結果的穩健性是此論文的主要貢獻之一,因此alpha=0的Low Level Agent基本上就是等於直接使用DDQN來學習的結果,較容易有論文提到的過擬合問題,得到的agent也較為不穩定。

此論文的另一個重點就是使用層級架構(HFT)來降低過擬合,低層級會訓練6個不同參數的低層級代理;所有低層級代理在訓練好後會被高層級代理使用。

Low Level Agent

使用low_level.bat訓練完成後,我們得到了6個低層級代理(Low Level Agent),我們可以將這六個低層級代理進行以下分類與解釋:

1. 參數解析

  • alpha: 此參數用於調整訓練中的 KL 散度損失的權重。不同的 alpha 值會影響代理在訓練過程中對演示行為的遵循程度。更高的 alpha 值意味著更強的限制,代理將更傾向於遵循演示行為。
    程式碼中loss = td_error + alpha * KL_loss,所以當alpha=0時,訓練過程會完全忽略KL Divergence的效果。;相反的如果alpha值越大,則會放大KL Divergence的效果。
  • clf: 此參數用於指定使用的特徵分類器。可以是“slope”或“vol”:
    • slope: 代表使用價格趨勢的斜率作為特徵來進行分類。
    • vol: 代表使用價格波動性作為特徵來進行分類。
  • dataset: 在此範例中,所有代理使用的數據集均為 "ETHUSDT"。

2. 六個低層級代理的比較

以下是這六個低層級代理的具體差異:

代理編號 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

具體差異介紹:

  1. 以趨勢為分類(slope)

    • 代理 1 (alpha=1, clf=slope): 這個代理將使用趨勢斜率作為特徵,並且在訓練中對演示行為有適度的強調(alpha=1),意味著它會對演示行為進行一定的限制。
    • 代理 2 (alpha=4, clf=slope): 這個代理對演示行為的強調更高(alpha=4),因此將更強烈地遵循訓練過程中的演示行為,可能使其學習到更穩定的策略,但也可能導致其靈活性降低。
    • 代理 3 (alpha=0, clf=slope): 這個代理將不會對演示行為施加任何限制(alpha=0),它的學習過程將更加自主,能夠自由探索自己的策略。
  2. 以波動性為分類(vol)

    • 代理 4 (alpha=1, clf=vol): 這個代理將使用價格波動性作為特徵,並且對演示行為的限制為中等(alpha=1)。
    • 代理 5 (alpha=4, clf=vol): 這個代理在使用價格波動性作為特徵的同時,強調對演示行為的遵循程度更高(alpha=4),學習策略的靈活性可能會受到限制。
    • 代理 6 (alpha=0, clf=vol): 這個代理在使用價格波動性作為特徵的同時,對演示行為不施加任何限制(alpha=0),它的學習過程將更自主且探索性更強。

3. 影響

  • 學習策略的靈活性: 當 alpha 值較高時,代理在學習過程中會受到演示行為的約束,這可能有助於在不確定的市場環境中穩定學習,但也可能降低探索新策略的能力。相反,較低的 alpha 值則允許代理進行更多探索,但可能會導致更高的學習不穩定性。
  • 特徵分類的影響: 使用不同的特徵(斜率 vs. 波動性)會影響代理的決策過程。斜率可能更適合捕捉趨勢,而波動性則能反映市場的不確定性,這使得這六個代理能夠在不同的市場環境下提供互補的策略。

上一篇
Day 21 - MacroHFT Low Level Agent訓練Debug中
下一篇
Day 23 - 幣安自動化程式:確認餘額、現貨掛賣
系列文
自動交易程式探索30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言