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