1 引言關(guān)于backtrader,前兩篇推文《【手把手教你】入門量化回測最強(qiáng)神器backtrader(一)》和《【手把手教你】入門量化回測最強(qiáng)神器backtrader(二)》分別介紹了整個框架的組成部分和回測系統(tǒng)的運(yùn)行,以及策略模塊交易日志的編寫和策略參數(shù)的尋優(yōu)。本文在這兩篇文章的基礎(chǔ)上,著重介紹backtrader的Analyzers模塊,并對策略的業(yè)績評價指標(biāo)進(jìn)行可視化分析。Analyzers模塊涵蓋了評價一個量化策略的完整指標(biāo),如常見的夏普比率、年化收益率、最大回撤、Calmar比率等等。Analyzers模塊原生代碼能獲取的評價指標(biāo)如下圖所示,其中TradeAnalyzer和PeriodStats又包含了不少指標(biāo)。由于采用元編程,Analyzers的擴(kuò)展性較強(qiáng),可以根據(jù)需要添加自己的分析指標(biāo),如獲取回測期間每一時刻對應(yīng)的總資金。
2 Python實現(xiàn)代碼01 策略模塊編寫 再次回顧一下交易策略模塊(Strategy)的組成部分。交易策略類代碼通常包含參數(shù)或函數(shù)名如下:(1)params-全局參數(shù),可選:更改交易策略中變量/參數(shù)的值,可用于參數(shù)調(diào)優(yōu)。 (2)log:日志,可選:記錄策略的執(zhí)行日志,可以打印出該函數(shù)提供的日期時間和txt變量。 (3) init:用于初始化交易策略的類實例的代碼。 (4)notify_order,可選:跟蹤交易指令(order)的狀態(tài)。order具有提交,接受,買入/賣出執(zhí)行和價格,已取消/拒絕等狀態(tài)。 (5)notify_trade,可選:跟蹤交易的狀態(tài),任何已平倉的交易都將報告毛利和凈利潤。 (6)next,必選:制定交易策略的函數(shù),策略模塊最核心的部分。 (7)其他,包括start()、nextsstart()、stop()、prenext()、notify_fund()、notify_store()和notify_cashvalue。
下面以技術(shù)分析指標(biāo)RSI(不了解的請自行百度)的擇時策略為例,當(dāng)RSI<30時買入,RSI>70時賣出。為了簡便起見,策略模塊中只包含最核心的交易信號。
02 回測設(shè)置 回測系統(tǒng)設(shè)置與之前一樣,主要是數(shù)據(jù)加載、交易本金、手續(xù)費(fèi)、交易數(shù)量的設(shè)置,此處以tushare的舊接口獲取股票002537的交易數(shù)據(jù)進(jìn)行量化回測。
03 運(yùn)行回測 這里重點(diǎn)是Analyzers模塊的調(diào)用與結(jié)果輸出,調(diào)用模塊是cerebro.addanalyzer(),再從模塊中獲取分析指標(biāo),如夏普比率是bt.analyzers.SharpeRatio,然后是給該指標(biāo)重命名方便之后調(diào)用,即 _name='SharpeRatio'。要獲取分析指標(biāo),需要先執(zhí)行回測系統(tǒng),cerebro.run(),并將回測結(jié)果賦值給變量results,分析指標(biāo)存儲在results[0]里 (strat變量代替),通過strat.analyzers.SharpeRatio.get_analysis()即可獲取相應(yīng)數(shù)據(jù),其他指標(biāo)操作方法類似。
輸出結(jié)果:
04 回測結(jié)果可視化 下面輸出回測圖表,一張大圖上包含了三張圖: (1)資金變動圖:可以看到在實施交易策略的數(shù)據(jù)期內(nèi),資金的盈利/損失。
05 Analyzers模塊指標(biāo)可視化
下面是對Analyzers模塊涵蓋的策略評價指標(biāo)進(jìn)行可視化。通過Analyzers獲取的評價指標(biāo)返回的是字典形式,為更好地展示結(jié)果,本文將其這些分析指標(biāo)的值進(jìn)行表格和圖形化,采用plotly和dash進(jìn)行動態(tài)可視化(也可以使用pyecharts)。 下圖中用到的所有評價指標(biāo)的獲取方法與上述的夏普比率和最大回撤是一樣的,由于這部分內(nèi)容涉及的代碼較多,此處省略(完整代碼見【金融量化】知識星球)。通過圖形和績效評價指標(biāo)可以直觀的看出量化策略的表現(xiàn),輸出結(jié)果如下:
3結(jié)語本文以RSI技術(shù)指標(biāo)構(gòu)建擇時策略為例,著重介紹了Analyzers模塊的調(diào)用方法和結(jié)果報告,并對回測的評價指標(biāo)進(jìn)行可視化。通過上述圖表可見backtrader作為一個本地開源框架的強(qiáng)大之處,只需適當(dāng)?shù)脑O(shè)置,便可得到與量化平臺類似的回測效果。最后,學(xué)習(xí)沒有捷徑,要想全面而深入地學(xué)習(xí)backtrader,最好是研讀其官方文檔。當(dāng)然,編程能力較強(qiáng)的可以直接研究其安裝包的原生代碼,了解各個模塊的構(gòu)成,并進(jìn)行功能擴(kuò)展和數(shù)據(jù)源對接等。 參考資料:backtrader官方文檔和安裝包原生代碼 https://www./docu/ 關(guān)于Python金融量化 |
|