在深度學(xué)習(xí)的世界中,無論您的模型多么先進,沒有充分對業(yè)務(wù)充分理解和干凈的數(shù)據(jù)都不會走得太遠。這個事實在金融領(lǐng)域尤其如此,在我們的數(shù)據(jù)集中,只存在股票的開盤價,最高價,最低價,調(diào)整后的收盤價和交易量的5個變量。 在第一幅圖中,不難發(fā)現(xiàn)這些原始數(shù)據(jù)值不足以訓(xùn)練機器學(xué)習(xí)模型。高度相關(guān)的變量乍看起來似乎很有希望,但是相關(guān)系數(shù)極高的缺點是實際上沒有那么多的信息。數(shù)據(jù)集基本上有五個數(shù)字,它們對模型說的完全相同,這使得模型很難理解允許機器學(xué)習(xí)交易者獲利的市場波動的復(fù)雜性。 數(shù)據(jù)的相關(guān)性顯示在下面的分散矩陣內(nèi),其中對角線是變量分布的估計值。 技術(shù)分析:這是一個數(shù)學(xué)工具箱,用來將嘈雜的原始金融數(shù)據(jù)轉(zhuǎn)換成可理解、清晰的信號,量化資產(chǎn)的動量、波動性、交易量和其他一般趨勢。幸運的是,TA是一個很棒的python庫,擁有所有這些指標,并允許對數(shù)據(jù)進行簡單的實驗。我們花費了大量時間來查找指標的不同組合,并對數(shù)據(jù)集進行自己的更改,以確保我們擁有最佳的數(shù)據(jù)集。 我們可以看到將相對強度指標(RSI)(其唯一輸入為收盤價)相對于下面的原始收盤價得出了顯著結(jié)果。 但是,在數(shù)學(xué)金融領(lǐng)域,一個重大謬論是存在一些功能的完美組合,這些功能可以為您'預(yù)測'市場。與數(shù)據(jù)科學(xué)和機器學(xué)習(xí)中的許多方法一樣,這個工具實際上只在數(shù)據(jù)轉(zhuǎn)換階段提供幫助。這一事實在許多項目中得到了體現(xiàn),因為最終您只需要相信您目前擁有的組合已經(jīng)足夠好,可以讓模型學(xué)習(xí)。因此,我們確定了兩個動量指標,即經(jīng)典相對強度和另一個被有趣地命名為awesome指標,以及兩個趨勢指標,移動平均收斂散度和Aroon指標。 動量指標很有用,因為它們試圖量化股票在先前價格的背景下的走勢。這可能對代理人有所幫助,因為它可以嘗試了解動量增加通常是股價可能上漲的好兆頭,并且可以自信地持有股票直到動量開始減少。另一方面,趨勢指標通常形成動量指標的超集,因為趨勢跟蹤通常涉及動量和移動平均值的計算。通常,我們嘗試獲取動量生成的不容易量化的值,并將其轉(zhuǎn)換為百分比,其中正數(shù)和負數(shù)表示各自的趨勢。這種設(shè)置將進一步幫助代理了解股票走勢的能力,并希望了解趨勢和動量都開始上升時獲利的可能性很高。 一個關(guān)鍵的發(fā)現(xiàn)是在我們的數(shù)據(jù)上應(yīng)用了信號處理濾波器,該濾波器在固定數(shù)量的點之間插入多項式以顯著平滑數(shù)據(jù)。這是很重要的,因為我們使用的技術(shù)分析功能在本質(zhì)上仍具有相當高的噪聲和連續(xù)性,因此更平滑的數(shù)據(jù)將使模型具有更清晰的信息并在環(huán)境中做出更好的決策。下圖通過顯著消除了許多容易造成模型混亂的隨機運動,證明了濾波器對開盤價的巨大平滑作用。 在特征被挑選出來之后,還有一個預(yù)處理的關(guān)鍵操作,即對我們的數(shù)據(jù)進行標準化。盡管很容易忽略,但是忘記進行標準化會嚴重影響模型性能。更有趣的是,由于財務(wù)數(shù)字是無界的,因此沒有直接的方法來選擇如何規(guī)范化我們的數(shù)據(jù),這與像素值介于0到255之間的圖像不同。例如,簡單的滾動窗口z得分計算可以很好地解決此問題。很好,因為z分數(shù)會將我們的所有數(shù)據(jù)轉(zhuǎn)換為大約-3到3的合理范圍。 確定輸入后,我們就進入了超參數(shù)調(diào)整和模型優(yōu)化的階段。在大多數(shù)深度學(xué)習(xí)應(yīng)用程序中,模型具有多個可調(diào)超參數(shù),即我們可以指定訓(xùn)練時使用的模型的變量。這些參數(shù)的變化可以說是對模型性能的最重要的結(jié)果,因為模型訓(xùn)練中的關(guān)鍵時刻受這些值控制。 我們能夠了解近端策略優(yōu)化(PPO)框架背后的機制,以幫助實驗,調(diào)整和改進現(xiàn)有模型的超參數(shù)。在此過程中,我們能夠深入了解某些超參數(shù)與代理獲得的獎勵之間的關(guān)系。這使我們能夠真正了解代理是否真正在學(xué)習(xí)。通過我們的探索,我們能夠發(fā)現(xiàn)我們的模型從股票交易中學(xué)到的一些有趣的見解。 為了測試不同的超參數(shù)值與模型性能之間的關(guān)系,我們決定采用科學(xué)的方法。這種方法涉及我們一次只更改一個超參數(shù)來測試代理的性能。通過確保所有其他超參數(shù)保持恒定,我們能夠找出最有效地允許我們的代理學(xué)習(xí)的每個超參數(shù)的范圍。我們還通過使用種子控制了每個試驗中訓(xùn)練的數(shù)據(jù)的隨機性。這樣可以確保模型性能的任何變化都可以歸因于指定的參數(shù),而不是其他無關(guān)的變量。 默認參數(shù)值: 'n_steps': 1024, 'gamma': 0.9391973108460121, 'learning_rate': 0.0001, 'ent_coef': 0.0001123894292050861, 'cliprange': 0.2668120684510983, 'noptepochs': 5, 'lam': 0.8789545362092943 Nsteps:此超參數(shù)告訴我們每個環(huán)境在更新模型之前要運行的步驟數(shù)。這從根本上決定了單一學(xué)習(xí)經(jīng)歷對政策更新的影響程度。如果nsteps較低,則意味著該策略將不斷變化,并適應(yīng)可能由隨機機會造成的經(jīng)驗。因此,當模型的n_steps低時,每種學(xué)習(xí)經(jīng)歷可能會對策略更改產(chǎn)生更大的影響。但是,與此有關(guān)的一個問題是,它可能導(dǎo)致相對不穩(wěn)定的策略,該策略可能永遠不會收斂到最佳狀態(tài)。因此,通過調(diào)整超參數(shù)找到合適的平衡可以幫助獲得更好的代理交易性能。 Gamma:接下來,我們繼續(xù)修改伽瑪值。這是折扣因子,基本上意味著它會削弱下一個獎勵在政策上的權(quán)重。通過對此進行調(diào)整,我們可以優(yōu)化新政策與舊政策之間的差異。這使我們的代理可以朝著其最大目標邁出較小的步伐,而不會受到最新經(jīng)驗的過度影響。 Entropy coefficient:我們還試圖調(diào)整熵系數(shù),該熵系數(shù)充當正則項并給策略增加隨機性。探索是強化學(xué)習(xí)中找到一個好的策略的至關(guān)重要的一點,如果策略收斂得太快,代理可能會發(fā)現(xiàn)自己陷入重復(fù)執(zhí)行相同次優(yōu)操作的局部最大值中??梢酝ㄟ^調(diào)整熵系數(shù)來糾正此行為,以防止過早收斂并鼓勵探索。 Lambda:Lambda是用于減少Generalized Advantage Estimator(GAE)中方差的平滑參數(shù)。 GAE使用每個時間步驟的獎勵來估算采取特定行動后,代理的狀況會好轉(zhuǎn)多少。 Lambda通過確保策略不會過度適應(yīng)特定的狀態(tài)-操作對,幫助穩(wěn)定這種學(xué)習(xí)。 關(guān)鍵發(fā)現(xiàn) 在運行和微調(diào)每個列出的超參數(shù)后,我們得出了一些有趣的結(jié)論。首先,較高的nstep值范圍似乎會產(chǎn)生更健康的獎勵和優(yōu)勢曲線。這意味著,當我們的代理在更新模型之前在每個環(huán)境中采取更多步驟時,它將學(xué)習(xí)更有效的交易策略。因為當nsteps參數(shù)較高時,模型的表現(xiàn)似乎更好,這可能意味著最佳策略是一種策略,即交易員購買股票并持有較長時間。這可能表明,我們在交易時可以采取的最佳策略是買入一只股票并持有它,而不是在更高的頻率上進行微交易的股票。 除了從調(diào)整n_steps超參數(shù)中獲得的一些有趣的見解外,我們還發(fā)現(xiàn)在我們的模型中g(shù)amma的最佳值相對較高,性能最大化可達0.99。gamma值代表折扣率,因此會影響我們根據(jù)最新經(jīng)驗更新策略的程度。這個超參數(shù)在較大值上的成功意味著,在改變策略時,新體驗會得到輕微的權(quán)衡。這意味著代理只稍微優(yōu)先考慮短期回報。 加入熵正則化有助于減少梯度估計中固有的噪聲。通過調(diào)整熵系數(shù),我們發(fā)現(xiàn)將默認值調(diào)整到較高的0.01會導(dǎo)致更穩(wěn)定的情節(jié)獎勵增加,并產(chǎn)生更健康的優(yōu)勢曲線。在1e-3到1e-5的較小范圍內(nèi),我們看到熵損失迅速崩潰,這表明agent的策略過于迅速地變得確定性。相反,當熵系數(shù)過高的值(0.1 - -0.5),我們看到這一集獎勵壓扁和熵的減少損失,表明我們的代理無法學(xué)習(xí)由于高的概率熵系數(shù)是持有所有可能的行動幾乎是相同的。對于我們的代理來說,擁有一個相當高的熵系數(shù)值有助于防止由于短期市場趨勢而采取行動,因為它們并不總是轉(zhuǎn)化為長期收益。 在改變lambda超參數(shù)時,我們發(fā)現(xiàn)它有一個很高的最優(yōu)值范圍為0.99 ~ 0.999。當lambda設(shè)置為0時,GAE就變成了一步優(yōu)勢估計器,它在進行策略更新時只考慮當前狀態(tài)。這類政策有很高的偏見。另一方面,如果我們讓lambda為1,GAE成為基線蒙特卡羅估計器,它可能會受到高方差的影響。有一個較高的lambda值表明在模型中注入一些偏差對我們的代理來說是重要的,但它確實有價值的長期回報。最大的增長是當我們的代理不受市場短期波動的影響,而是專注于長期的增量收益。 在進行了充分的超參數(shù)調(diào)整后,我們能夠使用真實的市場數(shù)據(jù)生成我們的政策交易運行,每天政策可以買進、賣出或持有股票?;疑狞c表示持有,黃色表示買入,綠色表示賣出。在下面的測試運行中,我們可以看到,總的來說,該政策在持有購買的資產(chǎn)幾天來產(chǎn)生一些利潤方面做得很好,但它也經(jīng)歷了縮水,損失了一些利潤。這個測試運行是使用本文前面建議的超參數(shù)生成的。盡管超參數(shù)設(shè)置較強,但模型中仍存在大量波動性,這表明強模型訓(xùn)練性能與實時模型結(jié)果并不完全相關(guān)。這個結(jié)果通常是金融建模中反復(fù)出現(xiàn)的主題。盡管如此,我們的智能體知道除了最大化我們的目標函數(shù),沒有其他目標,卻能夠盈利,這無疑是強化學(xué)習(xí)的一個了不起的壯舉。 總體而言,我們在這家PPO股票交易員上的工作使我們能夠深入研究最先進的強化學(xué)習(xí)研究,同時還致力于利用我們的知識來解決實際問題。 盡管問題非常復(fù)雜,但是我們每個人都能夠執(zhí)行最適合我們每個技能的任務(wù),并隨后與團隊的其他成員分享我們的結(jié)果以改善模型的性能。 |
|