Backtrader教程:分析仪 - PyFolio

  |  

注意

从(至少)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 明显地

  • 以及它的依赖关系(例如pandasseaborn ...

    注意

    在与版本0.5.1集成期间,需要更新依赖项的最新包,例如 seaborn 从以前安装 0.7.0-dev0.7.1的包,显然是由于缺少该方法 swarmplot

用法

  1. PyFolio 分析仪添加到混合物中 cerebro

    cerebro.addanalyzer(bt.analyzers.PyFolio)
    
  2. 运行并检索1st 策略:

    strats = cerebro.run()
    strat0 = strats[0]
    
  3. 使用您指定任何名称或将为其提供的缺省名称检索分析器:pyfolio。例如:

    pyfolio = strats.analyzers.getbyname('pyfolio')
    
  4. 使用 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
    
  5. 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

推荐阅读

相关文章

Backtrader跨越数字

《backtrader》的发布1.9.27.105纠正了一个疏忽。这是一个疏忽,因为拼图的所有部分都已到位,但启动并不是在所有角落都进行的。 该机制使用一个名为的属性_mindatas,因此让我们将其称为: mindatas。 社区问了这个问题,答案并不是很到位。

Backtrader期货补偿与现货补偿

版本1.9.32.116 增加了对社区中呈现的有趣用例 的支持 以期货开始交易,包括实物交割 让一个指针告诉你一些事情 如果需要, close 现货价格操作,有效地取消实物交割,无论是为了接收货物还是为了必须交付货物(并希望获利)来头寸。

Backtrader教程:分析仪 - PyFolio

注意 从(至少)2017-07-25pyfolio 开始,API已更改,不再 create_full_tear_sheet 具有 gross_lev 作为命名参数的参数。

Backtrader信贷利息

在某些情况下,真实经纪人的现金金额可能会减少,因为资产操作包括利率。例子: 卖空股票 交易所买卖基金包括多头和空头 这意味着不仅交易构成了系统的盈利能力,因为信贷上的利息在帐户上佔有一席之地。 为了涵盖这种情况, backtrader 包括(从发佈1.8.8.96开始)功能来考虑这一点。

Backtrader教程:数据馈送 - 扩展(Extending DataFeed)

GitHub 中的问题实际上是在推动文档部分的完成,或者説明我了解我是否backtrader 具有我从一开始就设想的易用性和灵活性以及在此过程中做出的决定。 在本例中为问题 #9。

Backtrader教程:日志记录 - 编写器

将以下内容写出到流中: csv 流,

Backtrader 多数据范例

社区中的几个主题似乎以如何跟踪订单为导向,特别是当几个data feeds在起作用时,还包括当多个订单一起工作时,

Backtrader教程:安装

要求和版本 backtrader 是独立的,没有外部依赖关系(除非要绘图) 基本要求是: Python 2.7 Python 3.2 / 3.3/ 3.4 / 3.5 pypy/pypy3 如果需要绘图,则其他要求: Matplotlib >= 1.4.

数据多时间帧

有时投资决策是使用不同的时间框架做出的: 每周评估趋势 每天执行条目 或者5分钟对60分钟。 这意味着需要将多个时间帧的数据组合在 backtrader 中以支援此类组合。 对它的本机支持已经内置。

Backtrader按日线交易

似乎在世界某个地方有一种权益(Interest)可以总结如下: 使用每日柱线引入订单,但使用开盘价 这来自工单#105订单执行逻辑与当前数据和#101动态投注计算中的对话 backtrader 尝试尽可能保持现实,并且在处理每日柱线时适用以下前提: 当每日柱被评估时,柱线已经结束 这是有道理的,