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