注意
從(至少)2017-07-25pyfolio 開始,API已更改,不再 create_full_tear_sheet 具有 gross_lev 作為命名參數的參數。
因此,集成示例不起作用
pyfolio參考 http://quantopian.github.io/pyfolio/ 主頁:
pyfolio is a Python library for performance and risk analysis of financial portfolios developed by Quantopian Inc. It works well with the Zipline open source backtesting library
現在,它也適用於 backtrader。需要什麼:
-
pyfolio明顯地 -
以及它的依賴關係(例如
pandas,seaborn...注意
在與版本
0.5.1集成期間,需要更新依賴項的最新包,例如seaborn從以前安裝0.7.0-dev到0.7.1的包,顯然是由於缺少該方法swarmplot
用法
-
將
PyFolio分析儀添加到混合物中cerebro:cerebro.addanalyzer(bt.analyzers.PyFolio)
-
執行並檢索1st 策略:
strats = cerebro.run() strat0 = strats[0]
-
使用您指定任何名稱或將為其提供的預設名稱檢索分析器:
pyfolio。例如:pyfolio = strats.analyzers.getbyname('pyfolio') -
使用 analyzer 方法
get_pf_items檢索稍後所需的 4 個pyfolio元件:returns, positions, transactions, gross_lev = pyfoliozer.get_pf_items()
!!!注意
The integration was done looking at test samples available with `pyfolio` and the same headers (or absence of) has been replicated
-
pyfolio合作(這已經在backtrader生態系統之外)
一些與backtrader沒有直接關係的用法說明
-
pyfolio自動繪圖在Jupyter Notebook之外工作,但在內部效果最好 -
pyfolio數據表的輸出似乎在Jupyter Notebook之外幾乎不起作用。它在筆記本內部工作
如果願意的話pyfolio ,結論很容易:在 Jupyter Notebook中工作
示例代碼
代碼將如下所示:
...
cerebro.addanalyzer(bt.analyzers.PyFolio, _name='pyfolio')
...
results = cerebro.run()
strat = results[0]
pyfoliozer = strat.analyzers.getbyname('pyfolio')
returns, positions, transactions, gross_lev = pyfoliozer.get_pf_items()
...
...
# pyfolio showtime
import pyfolio as pf
pf.create_full_tear_sheet(
returns,
positions=positions,
transactions=transactions,
gross_lev=gross_lev,
live_start_date='2005-05-01', # This date is sample specific
round_trips=True)
# At this point tables and chart will show up
參考
查看分析儀的Analyzers參考PyFolio以及分析儀內部使用哪些analyzers