从(至少)2017-07-25 开始,pyfolio API 发生了变化,create_full_tear_sheet 不再有 Gross_lev 作为命名参数。

因此,用于集成的示例不起作用

从http://quantopian.github.io/pyfolio/pyfolio的主页引用:

pyfolio 是由 Quantopian Inc. 开发的用于金融投资组合性能和风险分析的 Python 库。它与 Zipline开源回测库配合得很好

现在它也适用于backtrader。需要什么:

  • pyfolio明显地
  • 及其依赖项(例如pandasseaborn…)
  • 在与 0.5.1 版本集成期间,需要更新最新的依赖包,例如 seaborn 从之前安装的 0.7.0-dev 到 0.7.1,显然是由于缺少 swarmplot 方法

用法

1、PyFolio将分析仪添加到cerebro混合物中:

cerebro.addanalyzer(bt.analyzers.PyFolio)

2、运行并检索第一个策略:

strats = cerebro.run()
strat0 = strats[0]

3、使用您给它的任何名称或将给它的默认名称检索分析器:pyfolio. 例如:

pyfolio = strats.analyzers.getbyname('pyfolio')

4、使用分析器方法get_pf_items检索稍后需要的 4 个组件pyfolio

returns, positions, transactions, gross_lev = pyfoliozer.get_pf_items()

集成是通过查看可用的测试样本完成的`pyfolio` 和相同的标题(或没有)已被复制

5、合作pyfolio(这已经在反向交易者 生态系统之外)

一些与backtrader没有直接关系的使用说明

  • pyfolio自动绘图在Jupyter Notebook之外工作,但 在内部工作得最好
  • pyfolio数据表的输出似乎在Jupyter Notebook之外几乎无法工作。它在笔记本内部工作

如果希望使用,结论很容易pyfolioJupyter 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

参考
查看 PyFolio 分析器的分析器参考以及它在内部使用的分析器

评论被关闭。