国产乱人伦在线播放,99无码精品二区在线视频,最近在线更新8中文字幕免费,精品成人一区二区三区四区

您的位置:首頁 > 互聯(lián)網(wǎng) >

比特幣交易智能體提高收益率 使用Sortino比率作為獎勵指標的收益增加850%

2019-06-13 15:35:31 來源: 區(qū)塊鏈大本營

上個月,AI 工程師 Adam King 結(jié)合人工智能在預(yù)測方面得天獨厚的優(yōu)勢,提出使用深度強化學(xué)習(xí)構(gòu)建加密貨幣自動交易的程序。在展示模型中,程序

上個月,AI 工程師 Adam King 結(jié)合人工智能在預(yù)測方面得天獨厚的優(yōu)勢,提出使用深度強化學(xué)習(xí)構(gòu)建加密貨幣自動交易的程序。在展示模型中,程序的收益率竟達到了驚人的 60 倍(只討論技術(shù),無關(guān)投資建議)。

但在當時,這個展示模型略顯粗糙。雖然能獲得收益,但它并不穩(wěn)定。使用它可能讓你賺得盆滿缽盈,也有可能讓你賠得一無所有,頗有些“富貴險中求”的意味。

不穩(wěn)定的問題一直困擾著 Adam 小哥,經(jīng)過一個月的蟄伏,小哥提出將特征工程和貝葉斯優(yōu)化兩大殺器引入模型。這些改進會奏效么?收益率又能提升多少呢?一起來看看Adam 小哥的最新力作吧!

在上一篇文章中,我們使用深度強化學(xué)習(xí)創(chuàng)建了一個可以賺錢的比特幣自動交易智能體。雖然這個智能體能夠做到自動交易比特幣獲得收益,但它的收益率并沒有讓人眼前一亮,今天我們會大幅度改進這個比特幣交易智能體,從而提高它的收益率。

需要注意的是,本篇文章的目的是測試當下最先進的深度強化學(xué)習(xí)技術(shù)是否能與區(qū)塊鏈相結(jié)合,創(chuàng)造出一個可以盈利的比特幣自動交易智能體。目前看來業(yè)界都還沒有意識到深度強化學(xué)習(xí)在自動交易方面強大的潛力,反而認為它并不是一個“能用來構(gòu)建交易算法的工具”。不過,深度學(xué)習(xí)領(lǐng)域的最新進展已經(jīng)表明,在同一個問題上強化學(xué)習(xí)智能體通常能夠比普通的監(jiān)督學(xué)習(xí)智能體學(xué)習(xí)到更多的特征。

出于這個原因,我做了相關(guān)的實驗來探究基于深度強化學(xué)習(xí)的交易智能體究竟能達到怎樣的收益率,當然了,結(jié)果也可能會是深度強化學(xué)習(xí)有著很強的局限性以至于并不適合做交易智能體,但不去嘗試誰又知道結(jié)果如何呢?

首先,我們將會改進深度強化學(xué)習(xí)模型的策略網(wǎng)絡(luò)( policy network )并使輸入數(shù)據(jù)變得平穩(wěn),以便交易智能體能在很少的數(shù)據(jù)中學(xué)習(xí)到更多的特征。

接下來,我們將使用當下先進的特征工程方法來改善交易智能體的觀察空間,同時微調(diào)交易智能體的獎勵函數(shù)( reward function )以幫助它發(fā)現(xiàn)更好的交易策略。

最后,在訓(xùn)練并測試交易智能體獲得的收益率之前,我們將使用貝葉斯優(yōu)化的方法來尋找能最大化收益率的超參數(shù)

前方高能,系好安全帶,讓我們開始這場干貨滿滿的探索之旅吧。

關(guān)于深度強化學(xué)習(xí)模型的改進

當務(wù)之急是提高深度強化學(xué)習(xí)智能體的盈利能力,換句話說就是要對模型進行一些改進。

循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)

我們需要做的第一個改進就是使用循環(huán)神經(jīng)網(wǎng)絡(luò)來改進策略網(wǎng)絡(luò),也就是說,使用長短期記憶網(wǎng)絡(luò)( Long Short-Term Memory ,LSTM )網(wǎng)絡(luò)代替之前使用的多層感知機( Multi-Layer Perceptron,MLP )網(wǎng)絡(luò)。由于循環(huán)神經(jīng)網(wǎng)絡(luò)隨著時間的推移可以一直保持內(nèi)部狀態(tài),因此我們不再需要滑動“回顧窗口“來捕捉價格變動之前的行為,循環(huán)神經(jīng)網(wǎng)絡(luò)的循環(huán)本質(zhì)可以在運行時自動捕捉這些行為。在每個時間步長中,輸入數(shù)據(jù)集中的新一個數(shù)據(jù)與上一個時間步長的輸出會被一起輸入到循環(huán)神經(jīng)網(wǎng)絡(luò)中。

因而長短期記憶網(wǎng)絡(luò)可以一直維持一個內(nèi)部狀態(tài)。在每個時間步長中,智能體會新記住一些新的數(shù)據(jù)關(guān)系,也會忘掉一些之前的數(shù)據(jù)關(guān)系,這個內(nèi)部狀態(tài)也就會隨之更新。

循環(huán)神經(jīng)網(wǎng)絡(luò)會接收上一個時間步長的輸出

循環(huán)神經(jīng)網(wǎng)絡(luò)如何處理上一個時間步長的輸出與這一個時間步長的輸入

長短期記憶網(wǎng)絡(luò)實現(xiàn)代碼 LSTM_model.py

介于循環(huán)神經(jīng)網(wǎng)絡(luò)對于內(nèi)部狀態(tài)得天獨厚的優(yōu)勢,在這里,我們使用長短期記憶網(wǎng)絡(luò)策略更新了近端策略優(yōu)化 PPO2 模型

數(shù)據(jù)平穩(wěn)性

在上一篇文章中我曾指出比特幣交易的數(shù)據(jù)是非平穩(wěn)的(Non-Stationary,即存在一些趨勢,而不能僅僅看作是隨機的波動),因此,任何機器學(xué)習(xí)模型都難以預(yù)測未來。

平穩(wěn)時間序列是平均值,方差和自相關(guān)系數(shù)(與其自身的滯后相關(guān))都恒定的時間序列。

而且,加密貨幣價格的時間序列有著很明顯的趨勢和季節(jié)效應(yīng)(季節(jié)效應(yīng)是指與季節(jié)相關(guān)聯(lián)的股市非正常收益,是股市中的一種“異像”,是與市場有效性相悖的情況),這兩者都會影響算法對時間序列預(yù)測的準確率,所以在這里,我們需要使用差分和變換的方法來處理輸入數(shù)據(jù),從現(xiàn)有的時間序列中構(gòu)建一個正常的數(shù)據(jù)分布來解決這個問題。

從原理上來說,差分過程就是給任意兩個時間步長內(nèi)加密貨幣幣價的導(dǎo)數(shù)(即收益率)做差值。在理想情況下,這樣做可以消除輸入時間序列中存在的趨勢,但是,差分處理對季節(jié)效應(yīng)并不奏效,處理后的數(shù)據(jù)仍然具有很強的季節(jié)效應(yīng)。這就需要我們在差分處理之前進行對數(shù)處理來消除它,經(jīng)過這樣的處理最終我們會得到平穩(wěn)的輸入時間序列,如下方右圖所示。

從左到右分別為:

加密貨幣的收盤價,差分處理后的收盤價,對數(shù)處理和差分處理后的收盤價

對數(shù)處理和差分處理的代碼 diff_and_log_time_series.py

處理后的輸入時間序列平穩(wěn)性如何,我們可以使用增廣迪基-福勒檢驗( Augmented Dickey-Fuller test )驗證一下。

運行以下代碼:

增廣迪基-福勒檢驗的代碼 adfuller_test.py

我們得到的 p 值為 0.00 ,這意味著我們拒絕假設(shè)檢驗中的零假設(shè)并確認處理后的輸入時間序列是平穩(wěn)的。

我們可以運行上面的增廣迪基-福勒檢驗代碼來檢驗輸入時間序列的平穩(wěn)性。

在完成了這項工作之后,接下來我們將使用特征工程的方法進一步優(yōu)化交易智能體的觀察空間。

特征工程

為了進一步提升交易智能體的收益率,我們需要做一些特征工程。

特征工程是使用該領(lǐng)域知識來生成額外的輸入數(shù)據(jù)從而優(yōu)化機器學(xué)習(xí)模型的過程。

具體到交易智能體,我們將在輸入數(shù)據(jù)集中添加一些常見且有效的技術(shù)指標,以及 Python 數(shù)據(jù)分析程序庫 StatsModels 中季節(jié)效應(yīng)預(yù)測模型 SARIMAX 的輸出。這些技術(shù)指標會為我們的輸入數(shù)據(jù)集帶來一些相關(guān)的,但可能會滯后的信息,這些信息能大大提升交易智能體預(yù)測的準確性。這些優(yōu)化方法的組合可以為交易智能體提供一個非常好的觀察空間,讓智能體學(xué)習(xí)到更多的特征,從而獲得更多的收益。

技術(shù)分析

為了選擇技術(shù)指標,我們將比較 Python 技術(shù)分析庫 ta 中可用的所有 32 個指標( 58 個特征)的相關(guān)性。可以使用數(shù)據(jù)分析工具 pandas 來計算相同類型的各個指標(如動量,體積,趨勢,波動率)之間的相關(guān)性,然后在每種類型中僅選擇最不相關(guān)的指標作為特征。這樣,就可以在不給觀察空間帶來過多噪音干擾的情況下,最大程度地發(fā)掘這些技術(shù)指標的價值。

使用 Python 高級可視化庫 seaborn 做出的比特幣數(shù)據(jù)集上技術(shù)指標相關(guān)性的熱力圖

結(jié)果顯示,波動率指標以及一些動量指標都是高度相關(guān)的。在刪除所有重復(fù)的特征(每個類型中相關(guān)性的絕對平均值大于 0.5 的特征)之后,我們將剩余的 38 個技術(shù)特征添加到交易智能體的觀察空間中。

在代碼中,我們需要創(chuàng)建一個名為 add_indicators(添加指標)的函數(shù)來將這些特征添加到數(shù)據(jù)幀中,為了避免在每個時間步長中重復(fù)計算這些特征,我們只在交易智能體環(huán)境初始化的過程中調(diào)用 add_indicators 函數(shù)。

交易智能體環(huán)境初始化的代碼 initialize_env.py

在這里,初始化交易智能體環(huán)境,在進行數(shù)據(jù)平穩(wěn)性處理之前將特征添加到了數(shù)據(jù)幀中。

統(tǒng)計分析

接下來我們需要添加預(yù)測模型。

由于季節(jié)效應(yīng)自回歸移動平均模型(Seasonal Auto Regressive Integrated Moving Average,SARIMA)可以在每個時間步長中快速計算價格的預(yù)測值,在平穩(wěn)數(shù)據(jù)集中運算非常準確,因此我們使用它來進行加密貨幣幣價預(yù)測。

除了上述這些優(yōu)點之外,該模型實現(xiàn)起來非常簡單,它還可以給出預(yù)測值的置信區(qū)間,通常情況下這比單獨給出一個預(yù)測值能提供更多的信息。就比如說,當置信區(qū)間較小時,交易智能體就會更相信這個預(yù)測值的準確性,當置信區(qū)間很大時交易智能體就知道要承擔更大的風險。

加入 SARIMA 預(yù)測模型的代碼 add_sarimax_predictions.py

這里我們將 SARIMAX 預(yù)測模型和置信區(qū)間添加到交易智能體的觀察空間中。

現(xiàn)在我們已經(jīng)使用性能更好的循環(huán)神經(jīng)網(wǎng)絡(luò)更新了策略,并使用特征工程的方法改進了交易智能體的觀察空間,是時候優(yōu)化其他的部分了。

獎勵優(yōu)化

有些人可能會覺得上一篇文章中的獎勵函數(shù)(即獎勵資產(chǎn)總價值不斷增加)已經(jīng)是最好的解決方案了,但是,通過進一步的研究我發(fā)現(xiàn)獎勵函數(shù)還有提升的空間。雖然我們之前使用的簡單獎勵函數(shù)已經(jīng)能夠獲得收益,但它給出的投資策略非常不穩(wěn)定,往往會導(dǎo)致資產(chǎn)的嚴重損失。為了改善這一點,除了考慮利潤的增加以外,我們還需要考慮其他獎勵的指標。

獎勵指標的一個簡單改進就是,不僅僅獎勵在比特幣價格上漲時持有比特幣帶來的利潤,還獎勵在比特幣價格下跌時拋售比特幣而避免的損失。就比如說,我們可以獎勵智能體買入比特幣而總資產(chǎn)增加的行為,以及賣出比特幣避免總資產(chǎn)減少的行為。

雖然這種獎勵指標在提高收益率方面非常出色,但這樣做并沒有考慮到高回報帶來的高風險。投資者早已發(fā)現(xiàn)這種簡單投資策略背后存在的漏洞,并將其改進成一種風險可調(diào)節(jié)的獎勵指標。

基于波動率的獎勵指標

這種風險可調(diào)節(jié)的獎勵指標中的典型就是夏普比率(Sharpe Ratio,又被稱為夏普指數(shù))。它計算的是特定時間段內(nèi)投資組合的超額收益與波動性的比率。具體的計算公式如下:

夏普比率的計算公式:(投資組合的收益-大盤的收益)/投資組合的標準差

從公式中我們可以得出,為了保持較高的夏普比率,投資組合必須同時保證高收益和低波動性(也就是風險)。

作為一種獎勵指標,夏普比率經(jīng)受住了時間的考驗,但它對于自動交易智能體來說并不是很完美,因為它會對上行標準差( upside volatility )產(chǎn)生不利影響,而在比特幣交易環(huán)境中有時我們需要利用上行標準差,因為上行標準差(即比特幣價格瘋狂上漲)通常都是很好的機會窗口。

而使用索提諾比率( Sortino Ratio )可以很好地解決這個問題。索提諾比率與夏普比率非常相似,只是它在風險上只考慮了下行標準差,而不是整體標準差。因此,索提諾比率并不會對上行標準差產(chǎn)生什么不利影響。因而我們給交易智能體的第一條獎勵指標就選擇索提諾比率,它的計算公式如下:

索提諾比率的計算公式:(投資組合的收益-大盤的收益)/投資組合的下行標準差

其他獎勵指標

我們選擇 Calmar 比率作為交易智能體的第二個獎勵指標。到目前為止,我們所有的獎勵指標都沒有考慮到比特幣幣價最大回撤率(drawdown)這個關(guān)鍵因素。

最大回撤率是指比特幣幣價從價格頂峰到價格低谷之間的價值差,用來描述買入比特幣后最糟糕的情況。

最大回撤率對我們的投資策略來說是致命的,因為只需一次幣價突然跳水,我們長時間累積的高收益就會化為烏有。

最大回撤率

為了消除最大回撤率帶來的負面影響,我們需要選用可以處理這種情況的獎勵指標,就比如說選用 Calmar 比率。該比率與夏普比率類似,只是它將分母上投資組合的標準差替換為最大回撤率。

Calmar 比率的計算公式:(投資組合的收益-大盤的收益)/最大回撤率

我們最后一個獎勵指標是在對沖基金行業(yè)中廣泛使用的 Omega 比率。從理論上來說,在衡量風險與收益時,Omega 比率應(yīng)該優(yōu)于 Sortino 比率和 Calmar 比率,因為它能夠在單個指標中使用收益的分布來評估風險。

計算 Omega 比率時,我們需要分別計算在特定基準之上或之下投資組合的概率分布,然后兩者相除計算比率。Omega 比率越高,比特幣上漲潛力超過下跌潛力的概率就越高。

Omege 比率的計算公式

Omega 比率的計算公式看起來很復(fù)雜,不過不要擔心,在代碼中實現(xiàn)它并不難。

代碼實現(xiàn)

雖然說編寫每個獎勵指標的代碼聽起來很有意思且很有挑戰(zhàn)性,但這里為了方便大家的理解,我選擇使用Python 量化金融程序包 empyrical來計算它們。幸運的是,這個程序包中恰好包含了我們上面定義的三個獎勵指標,因而在每個時間步長中,我們只需要將該時間段內(nèi)收益和大盤收益的列表發(fā)給 Empyrical 函數(shù),它就會返回這三個比率。

使用 empyrical 程序包計算三個獎勵指標的代碼 risk_adjusted_reward.py

在代碼中,我們通過預(yù)先定義的獎勵函數(shù)設(shè)置了每個時間步長的獎勵。

到目前為止,我們已經(jīng)確定了如何衡量一個交易策略的成功與否,現(xiàn)在是時候弄清楚哪些指標會帶來較高的收益。我們需要將這些獎勵函數(shù)輸入到自動超參數(shù)優(yōu)化軟件框架 Optuna 中,然后使用貝葉斯優(yōu)化來的方法為輸入數(shù)據(jù)集尋找最優(yōu)的超參數(shù)。

工具集

俗話說,好馬配好鞍。任何一個優(yōu)秀的技術(shù)人員都需要一套好用的工具,否則就會巧婦難為無米之炊。

但我并不是說我們要重復(fù)造輪子,我們應(yīng)該學(xué)會使用程序員前輩用禿頭的代價為我們開發(fā)的工具,這樣他們的工作也算沒有白費。對于我們所開發(fā)的交易智能體,它要用到的最重要的工具就是自動超參數(shù)優(yōu)化軟件框架 Optuna,從原理上來說,它使用了樹結(jié)構(gòu)的 Parzen 窗估計(Tree-structured Parzen Estimators,TPEs)來實現(xiàn)貝葉斯優(yōu)化,而這種估計方法是可以并行化運行的,這使得我們的顯卡有了用武之地,執(zhí)行搜索需要的時間也會大大縮短。簡而言之,

貝葉斯優(yōu)化是一種搜索超參數(shù)空間以找到能最大化給定目標函數(shù)的超參數(shù)的高效解決方案。

也就是說,貝葉斯優(yōu)化能夠有效地改進任何黑箱模型。從工作原理上來說,貝葉斯優(yōu)化通過使用替代函數(shù)( surrogate functions )或是替代函數(shù)的分布對要優(yōu)化的目標函數(shù)進行建模。隨著時間的推移,算法不斷地檢索超參數(shù)空間以找到那些能夠最大化目標函數(shù)的超參數(shù),分布的效果也會逐漸改善。

理論說了這么多,我們要如何把這些技術(shù)應(yīng)用在比特幣自動交易智能體中呢?從本質(zhì)上來講,我們可以使用這種技術(shù)來找到一組最優(yōu)的超參數(shù),使得智能體的收益率最高。這個過程就像是在超參數(shù)的汪洋大海中撈取一根效果最好的針,而貝葉斯優(yōu)化就是帶我們找到這根針的磁鐵。讓我們開始吧。

使用 Optuna 優(yōu)化超參數(shù)并不是什么難事。

首先,我們需要創(chuàng)建一個 optuna 實例,也就是裝載所有超參數(shù)試驗的容器。在每次試驗中我們需要調(diào)整超參數(shù)的設(shè)置來計算目標函數(shù)相應(yīng)的損失函數(shù)值。在實例初始化完成后,我們需要向其中傳入目標函數(shù)然后調(diào)用 study.optimize() 函數(shù)開始優(yōu)化,Optuna 將使用貝葉斯優(yōu)化的方法來尋找能夠最小化損失函數(shù)的超參數(shù)配置。

使用 Optuna 程序庫貝葉斯優(yōu)化的代碼 optimize_with_optuna.py

在這個例子中,目標函數(shù)就是在比特幣交易環(huán)境中訓(xùn)練并測試智能體,而目標函數(shù)的損失值則定義為測試期間智能體平均收益的相反數(shù),之所以給收益值加上負號,是因為平均收益越高越好,而在 Optuna 看來損失函數(shù)越低越好,一個負號剛好解決這個問題。optimize 優(yōu)化函數(shù)為目標函數(shù)提供了試驗對象,代碼中我們可以指定試驗對象中的變量設(shè)置。

優(yōu)化目標函數(shù)的代碼 optimize_objective_fn.py

optimize_ppo2 優(yōu)化智能體函數(shù)和 optimize_envs 優(yōu)化智能體環(huán)境函數(shù)接收試驗對象作為輸入并返回包含要測試參數(shù)的字典。每個變量的搜索空間由 suggest 函數(shù)進行設(shè)置,我們需要在試驗中調(diào)用 suggest 函數(shù)并給函數(shù)中傳入指定的參數(shù)。

比如說,如果設(shè)置參數(shù)在對數(shù)尺度上服從均勻分布,即調(diào)用函數(shù)

trial.suggest_loguniform('n_steps',16,2048),

相當于給函數(shù)了一個 16-2048 之間的 2 的指數(shù)次方(如16,32,64,…,1024,2048)的新浮點數(shù)。

再者,如果設(shè)置參數(shù)在普通尺度上服從均勻分布,即調(diào)用函數(shù)

trial.suggest_uniform('cliprange',0.1,0.4),

相當于給函數(shù)一個 0.1 到 0.4 之間的新浮點數(shù)(如0.1,0.2,0.3,0.4)。

相信你已經(jīng)看出來了其中的規(guī)律,就是這樣來設(shè)置變量:

suggest_categorical('categorical',['option_one','option_two']),其中 categorical 為設(shè)置變量的策略, option_one 和 option_two 分別為變量的兩個選項,在剛才的函數(shù)中這兩個選項為變量的范圍,弄懂了這個相信下面的代碼就難不倒你了。

化交易智能體的代碼 optimize_ppo2.py

優(yōu)化交易環(huán)境的代碼 optimize_envs.py

代碼寫好后,我們在一臺高性能服務(wù)器上以 CPU/顯卡協(xié)同運算的方式運行了優(yōu)化函數(shù)。在設(shè)置中,Optuna 創(chuàng)建了一個 SQLite 數(shù)據(jù)庫,我們可以從中加載優(yōu)化的實例。該實例記錄了測試過程中性能最好的一次試驗,從中我們可以推算出智能體交易環(huán)境中最優(yōu)的超參數(shù)集。

加載 optuna 實例的代碼 load_optuna_study.py

到這里,我們已經(jīng)改進了模型,改進了特征集,并優(yōu)化了所有的超參數(shù)。但俗話說,是騾子是馬得拉出來遛遛。

那么,交易智能體在新的獎勵指標下表現(xiàn)如何呢?

在訓(xùn)練過程中,我分別使用了利潤、Sortino 比率、Calmar 比率和Omega 比率四個獎勵指標來優(yōu)化智能體。接下來我們需要在測試環(huán)境中檢驗?zāi)姆N獎勵指標訓(xùn)練出來的智能體收益最高,當然了,測試環(huán)境中的數(shù)據(jù)都是智能體在訓(xùn)練過程中從未見到過的比特幣價格走勢,這樣保證了測試的公平性。

收益比較

在查看結(jié)果之前,我們需要知曉一個成功的交易策略是什么樣的。出于這個原因,我們將針對一些常見且有效的比特幣交易策略進行基準測試。令人震驚的是,在過去的十年中一個最有效的比特幣交易策略就是買入并持有,而另外兩個不錯的交易策略則是使用簡單但有效的技術(shù)分析來生成買入/賣出信號,從而指導(dǎo)交易。

1、買入并持有

這種交易策略指盡可能多地購買比特幣并一直持有下去(也就是區(qū)塊鏈社區(qū)中的江湖黑話“ HODL ”)。雖然說這種交易策略并不是特別復(fù)雜,但在過去這樣做賺錢的機率很高。

2、相對強弱指數(shù)分歧(Relative Strength Index(RSI) divergence )

當相對強弱指數(shù)持續(xù)下跌且收盤價持續(xù)上漲時,這就是需要賣出的信號,而當相對強弱指數(shù)持續(xù)上漲且收盤價持續(xù)下跌時,就是需要買入的信號。

3、簡單移動平均線( Simple Moving Average,SMA )交叉

當長期簡單移動平均線超過短期簡單移動平均線時,這就是需要賣出的信號,而當短期簡單移動平均線超過長期簡單移動平均線時,就是需要買入的信號。

你可能會問,為什么要做這些簡單的基準測試呢?這樣做是為了通過比較證明我們的強化學(xué)習(xí)交易智能體可以在比特幣市場上發(fā)揮作用,如果智能體的收益連這些簡單的基準收益都超不過,那么我們就相當于花費了大量的開發(fā)時間和顯卡算力來進行了一場天馬行空的科學(xué)實驗。現(xiàn)在,讓我們來證明事實并非如此。

實驗結(jié)果

我們的數(shù)據(jù)集選用從加密貨幣數(shù)據(jù)網(wǎng)站 CryptoDataDownload 上下載的每小時收盤價位置價值( OHCLV )數(shù)據(jù),其中前 80% 的數(shù)據(jù)用來訓(xùn)練智能體,后 20% 作為全新的數(shù)據(jù)進行測試,以了解智能體的收益能力。當前這種簡單的交叉驗證形式足以滿足我們的需求,而如果這個比特幣自動交易智能體真的走向生產(chǎn)就緒,我們就可以使用全部的數(shù)據(jù)集進行訓(xùn)練,然后在每天新產(chǎn)生的數(shù)據(jù)集上進行測試。

廢話不多說,我們來看看結(jié)果。

可以看到,使用 Omega 比率作為獎勵指標的智能體在測試階段并沒有讓人眼前一亮的交易

使用 Omega 比率作為獎勵指標的智能體在超過 3500 小時的交易時間里資產(chǎn)的總價值

分析智能體所進行的交易我們可以發(fā)現(xiàn),很明顯 Omega 比率這種獎勵指標產(chǎn)生了過度交易(over-trade)的交易策略,以至于智能體未能抓住市場機會獲得收益。

使用 Calmar 比率作為獎勵指標的智能體與使用 Omega 比率作為獎勵指標的智能體相比略有改進,但最終結(jié)果非常相似??雌饋硐袷俏覀兺度肓舜罅康臅r間和精力,只是為了讓事情變得更糟......

使用 Calmar 比率作為獎勵指標的智能體在超過 3500 小時的交易時間里資產(chǎn)的總價值

如果僅使用利潤作為獎勵指標效果如何呢?在上一篇文章中這種獎勵指標被證明有點失敗,這次做的所有修改和優(yōu)化能否化腐朽為神奇呢?

在為期四個月的測試周期內(nèi),使用利潤作為獎勵指標的智能體平均收益達到賬戶初始金額的350%。你可能已經(jīng)被這個結(jié)果嚇呆了。這應(yīng)該就是強化學(xué)習(xí)能達到的巔峰了吧,對吧?

使用利潤作為獎勵指標的智能體在超過 3500 小時的交易時間里資產(chǎn)的總價值

并不是這樣的。使用 Sortino 比率作為獎勵指標的智能體平均收益達到了賬戶初始金額的850%。當我看到這個數(shù)字時,我都不敢相信自己的眼睛,以至于我立馬回去檢查代碼中是否存在問題。但經(jīng)過徹底的檢查后,很明顯代碼中沒有任何錯誤,也就是說這些智能體已經(jīng)知道如何進行比特幣交易。

使用 Sortino 比率作為獎勵指標的智能體在超過 3500 小時的交易時間里資產(chǎn)的總價值

看起來使用 Sortino 比率作為獎勵指標的智能體學(xué)習(xí)到了在最小化持有比特幣風險的前提下低價買入和高價賣出的重要性,同時它們還躲過了過度交易和投資不足兩大陷阱。雖然說智能體學(xué)到的具體交易策略我們不得而知,但是我們可以清楚地看到智能體已經(jīng)學(xué)會通過交易比特幣獲得收益了。

如果你不信,請看下圖。

使用 Sortino 比率作為獎勵指標的智能體正在交易比特幣,

其中綠色的三角形表示買入信號,紅色的三角形表示賣出信號。

現(xiàn)在,我并沒有被實驗成功的興奮沖昏頭腦。我清楚地知道比特幣自動交易智能體還遠遠沒有達到生產(chǎn)就緒。話雖如此,但這些結(jié)果比我迄今為止看到的任何交易策略都要令人印象深刻。而且令人震驚的是,我們并沒有告訴智能體關(guān)于加密貨幣市場如何運作、如何在加密貨幣市場上賺錢這樣的先驗知識,而是僅靠智能體重復(fù)地試驗和試錯就達到了這么好的效果,不過,這里經(jīng)過了很多很多次的試驗和試錯。

寫在最后

在本篇文章中,我們優(yōu)化了基于強化學(xué)習(xí)的比特幣自動交易智能體,讓它在交易比特幣時做出更好的決策,從而獲得更多的收益!在這個過程中我們花費了大量的時間和精力,也遇到了很多的困難,我們把困難分解細化再逐個攻破,最終完成了智能體的優(yōu)化,其中具體的操作步驟如下:

使用循環(huán)神經(jīng)網(wǎng)絡(luò)升級現(xiàn)有模型,即升級成使用平穩(wěn)性數(shù)據(jù)的長短期記憶網(wǎng)絡(luò);

使用領(lǐng)域知識和統(tǒng)計分析進行特征工程,為智能體提供了 40 多個用來學(xué)習(xí)的新特征;

將投資的風險引入智能體的獎勵指標,而不只是關(guān)注利潤;

使用貝葉斯優(yōu)化來尋找模型中最優(yōu)的超參數(shù);

使用常見的交易策略進行基準測試,以確保智能體的收益可以跑贏市場。

從理論上來說,這個高收益的交易智能體已經(jīng)做得很不錯了。

但是,我收到了相當多的反饋,他們聲稱交易智能體只是在學(xué)習(xí)擬合曲線,因此,面對生產(chǎn)環(huán)境中的實時數(shù)據(jù),交易智能體永遠不可能獲得收益。雖然我們在不同數(shù)據(jù)集上訓(xùn)練/測試智能體的方法應(yīng)該能夠解決這個問題,但是模型確實會有過度擬合數(shù)據(jù)集的可能,并且可能不會很好地推廣到實時數(shù)據(jù)。話雖這么說,但在我看來這些交易智能體學(xué)習(xí)到的遠遠不只是簡單的曲線擬合,因此,我認為它們能夠在實時交易的場景中獲得收益。

為了檢驗這個想法,接下來的一段時間里我會把這些基于強化學(xué)習(xí)的智能體帶到生產(chǎn)環(huán)節(jié),為此,我們首先要更新智能體的運行環(huán)境以支持以太幣、萊特幣等其他加密貨幣,然后我們將升級智能體讓它可以在加密貨幣交易所 Coinbase Pro 上實時交易。

這將會是一個激動人心的實驗,請不要錯過它。

需要強調(diào)的是,本篇文章中所有的方法和投資策略都是出于教育目的,不應(yīng)被視為投資建議。我們的比特幣自動交易智能體也遠遠沒有達到實際生產(chǎn)層面,所以請管好自己的錢包。(作者: CSDN APP)

 

關(guān)鍵詞: 比特幣 交易智能體 Sortino

精選 導(dǎo)讀

募資55億港元萬物云啟動招股 預(yù)計9月29日登陸港交所主板

萬科9月19日早間公告,萬物云當日啟動招股,預(yù)計發(fā)行價介乎每股47 1港元至52 7港元,預(yù)計9月29日登陸港交所主板。按發(fā)行1 167億股計算,萬

發(fā)布時間: 2022-09-20 10:39
管理   2022-09-20

公募基金二季度持股情況曝光 隱形重倉股多為高端制造業(yè)

隨著半年報披露收官,公募基金二季度持股情況曝光。截至今年二季度末,公募基金全市場基金總數(shù)為9794只,資產(chǎn)凈值為269454 75億元,同比上

發(fā)布時間: 2022-09-02 10:45
資訊   2022-09-02

又有上市公司宣布變賣房產(chǎn) 上市公司粉飾財報動作不斷

再有上市公司宣布變賣房產(chǎn)。四川長虹25日稱,擬以1 66億元的轉(zhuǎn)讓底價掛牌出售31套房產(chǎn)。今年以來,A股公司出售房產(chǎn)不斷。根據(jù)記者不完全統(tǒng)

發(fā)布時間: 2022-08-26 09:44
資訊   2022-08-26

16天12連板大港股份回復(fù)深交所關(guān)注函 股份繼續(xù)沖高

回復(fù)交易所關(guān)注函后,大港股份繼續(xù)沖高。8月11日大港股份高開,隨后震蕩走高,接近收盤時觸及漲停,報20 2元 股。值得一提的是,在7月21日

發(fā)布時間: 2022-08-12 09:56
資訊   2022-08-12

萬家基金再添第二大股東 中泰證券擬受讓11%基金股權(quán)

7月13日,中泰證券發(fā)布公告,擬受讓齊河眾鑫投資有限公司(以下簡稱齊河眾鑫)所持有的萬家基金11%的股權(quán),交易雙方共同確定本次交易的標的資

發(fā)布時間: 2022-07-14 09:39
管理   2022-07-14

央行連續(xù)7日每天30億元逆回購 對債市影響如何?

央行12日再次開展了30億元逆回購操作,中標利率2 10%。這已是央行連續(xù)7日每天僅進行30億元的逆回購縮量投放,創(chuàng)下去年1月以來的最低操作規(guī)

發(fā)布時間: 2022-07-13 09:38
資訊   2022-07-13

美元指數(shù)創(chuàng)近20年新高 黃金期貨創(chuàng)出逾9個月新低

由于對美聯(lián)儲激進加息的擔憂,美元指數(shù)11日大漲近1%創(chuàng)出近20年新高。受此影響,歐美股市、大宗商品均走弱,而黃金期貨創(chuàng)出逾9個月新低。美

發(fā)布時間: 2022-07-13 09:36
資訊   2022-07-13

美股三大股指全線下跌 納斯達克跌幅創(chuàng)下記錄以來最大跌幅

今年上半年,美股持續(xù)回落。數(shù)據(jù)顯示,道瓊斯指數(shù)上半年下跌15 3%,納斯達克綜合指數(shù)下跌29 5%,標普500指數(shù)下跌20 6%。其中,納斯達克連續(xù)

發(fā)布時間: 2022-07-04 09:51
推薦   2022-07-04

融資客熱情回升 兩市融資余額月內(nèi)增加超344億元

近期A股走強,滬指6月以來上漲4%,融資客熱情明顯回升。數(shù)據(jù)顯示,截至6月16日,兩市融資余額1 479萬億元,月內(nèi)增加344 67億元,最近一個半

發(fā)布時間: 2022-06-20 09:41
資訊   2022-06-20

4個交易日凈買入超百億元 北向資金持續(xù)流入A股市場

北向資金凈流入態(tài)勢延續(xù)。繼6月15日凈買入133 59億元后,北向資金6月16日凈買入44 52億元。自5月27日至今,除6月13日以外,北向資金累計凈

發(fā)布時間: 2022-06-17 09:37
推薦   2022-06-17