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

  • 以及它的依赖项(比如 pandasseaborn …)

    注意

    在与版本 0.5.1 集成期间,需要更新依赖项的最新版本,例如从先前安装的 0.7.0-dev 更新到 0.7.1seaborn ,似乎是由于缺少 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 来获取以后 pyfolio 所需的4个组件:

    returns, positions, transactions, gross_lev = pyfoliozer.get_pf_items()
    
  1. 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 分析器以及它内部使用的分析器