注意
從(至少)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