PyFolio概述#
注意
截至至少2017-07-25, pyfolio
API已经发生了变化, create_full_tear_sheet
不再有 gross_lev
作为命名参数。
因此,集成示例不再起作用。
引用自主要的 pyfolio
页面 http://quantopian.github.io/pyfolio/:
pyfolio是由Quantopian Inc.开发的用于金融投资组合绩效和风险分析的Python库。
它与Zipline开源回测库很好地配合使用。
现在它也很好地与 backtrader 配合使用。所需内容:
显然需要
pyfolio
以及它的依赖项(比如
pandas
,seaborn
…)注意
在与版本
0.5.1
集成期间,需要更新依赖项的最新版本,例如从先前安装的0.7.0-dev
更新到0.7.1
的seaborn
,似乎是由于缺少swarmplot
方法。用法
将
PyFolio
分析器添加到cerebro
混合中:cerebro.addanalyzer(bt.analyzers.PyFolio)运行并获取第一个策略:
strats = cerebro.run() strat0 = strats[0]使用您为其命名的名称或将分析器取回的默认名称
pyfolio
来获取分析器。例如:pyfolio = strats.analyzers.getbyname('pyfolio')使用分析器方法
get_pf_items
来获取以后pyfolio
所需的4个组件:returns, positions, transactions, gross_lev = pyfoliozer.get_pf_items()
与
pyfolio
一起工作(这已经超出了 backtrader 的范围)
与 backtrader 无直接关系的一些使用注意事项
pyfolio
的自动绘图在 Jupyter Notebook 之外也可以工作,但在其中 效果最好pyfolio
的数据表输出似乎在 Jupyter Notebook 之外几乎无法工作。它在 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)
查看 分析器参考,了解 PyFolio
分析器以及它内部使用的分析器