年利润

class backtrader.analyzers.AnnualReturn()

该分析器通过查看一年的开始和结束来计算年度回报

参数:

  • (没有任何)

会员属性:

  • rets: 计​​算的年度回报列表
  • ret: 年报字典(key:年份)

获取分析

  • 返回年度回报字典(键:年份)

卡尔马

class backtrader.analyzers.Calmar()

此分析器计算 CalmarRatio 时间范围,该时间范围可能与基础数据参数中使用的时间范围不同:

  • timeframe(默认值:None如果None将使用系统中timeframe一个数据

    通过TimeFrame.NoTimeFrame考虑整个数据集,没有时间限制

  • compression(默认None

    仅用于次日时间范围,例如通过指定“TimeFrame.Minutes”和 60 作为压缩来处理每小时时间范围

    如果那么将使用系统的一个数据None的压缩

  • 没有任何
  • fund(默认None

    如果None经纪商的实际模式(fundmode – True/False)将被自动检测以决定回报是基于总资产净值还是基于基金价值。请参阅set_fundmode经纪人文档

    将其设置为TrueFalse用于特定行为

-“get_analysis“()

返回一个 OrderedDict ,其中包含时间段的键和相应的滚动 Calmar 比率

– “calmar“最新计算的calmar比率()

提款

class backtrader.analyzers.DrawDown()

此分析器计算交易系统回撤统计数据,例如以 %s 和美元为单位的回撤值、以 %s 和美元为单位的最大回撤、回撤长度和回撤最大长度

参数:

  • fund(默认None

    如果None经纪商的实际模式(fundmode – True/False)将被自动检测以决定回报是基于总资产净值还是基于基金价值。请参阅set_fundmode经纪人文档

    将其设置为TrueFalse用于特定行为

-“get_analysis“()

返回一个字典(带有 .notation 支持和 subdctionaries),其中包含回调统计作为值,以下键/属性可用:

  • drawdown– 回撤值 0.xx %
  • moneydown– 以货币单位表示的回撤值
  • len– 回撤长度
  • max.drawdown– 最大回撤值 0.xx %
  • max.moneydown– 以货币单位表示的最大回撤值
  • max.len– 最大回撤长度

TimeDrawDown

class backtrader.analyzers.TimeDrawDown()

此分析器计算所选时间范围内的交易系统回撤,该时间范围可能与基础数据参数中使用的不同:

  • timeframe(默认值:None如果None将使用系统中timeframe一个数据

    通过TimeFrame.NoTimeFrame考虑整个数据集,没有时间限制

  • compression(默认:None

    仅用于次日时间范围,例如通过指定“TimeFrame.Minutes”和 60 作为压缩来处理每小时时间范围

    如果那么将使用系统的一个数据None的压缩

  • 没有任何
  • fund(默认None

    如果None经纪商的实际模式(fundmode – True/False)将被自动检测以决定回报是基于总资产净值还是基于基金价值。请参阅set_fundmode经纪人文档

    将其设置为TrueFalse用于特定行为

-“get_analysis“()

返回一个字典(带有 .notation 支持和 subdctionaries),其中包含回调统计作为值,以下键/属性可用:

  • drawdown– 回撤值 0.xx %
  • maxdrawdown– 以货币单位表示的回撤值
  • maxdrawdownperiod– 回撤长度

– 这些在运行期间作为属性()可用

  • dd
  • maxdd
  • maxddlen

总杠杆

class backtrader.analyzers.GrossLeverage()

该分析器在时间范围内计算当前策略的总杠杆

参数:

  • fund(默认None

    如果None经纪商的实际模式(fundmode – True/False)将被自动检测以决定回报是基于总资产净值还是基于基金价值。请参阅set_fundmode经纪人文档

    将其设置为TrueFalse用于特定行为

– 获取分析()

返回一个字典,其中返回作为值,每个返回的日期时间点作为键

PositionsValue

class backtrader.analyzers.PositionsValue()

该分析器报告当前数据集的位置值

参数:

  • 时间范围(默认值:None如果None那么将使用系统的第一个数据的时间范围
  • 压缩(默认None

    仅用于次日时间范围,例如通过指定“TimeFrame.Minutes”和 60 作为压缩来处理每小时时间范围

    如果那么将使用系统的一个数据None的压缩

  • 标头(默认值False

    将初始键添加到保存带有数据名称的结果的字典中(’Datetime’ 作为键

  • 现金 (默认: False)

    包括实际现金作为额外位置(标题“现金”将用作名称)

– 获取分析()

返回一个字典,其中返回作为值,每个返回的日期时间点作为键

PyFolio

class backtrader.analyzers.PyFolio()

该分析器使用 4 个子分析器来收集数据并将其转换为兼容的数据集pyfolio

儿童分析仪

  • TimeReturn

    用于计算全球投资组合价值的回报

  • PositionsValue

    用于计算每个数据的位置值。它将 headerscash参数设置为True

  • Transactions

    用于记录每笔交易的数据(大小、价格、价值)。将headers参数设置为True

  • GrossLeverage

    跟踪总杠杆(策略投资了多少)

参数:

这些透明地传递给孩子

* 时间范围(默认值:`bt.TimeFrame.Days`)

  如果为“无”,则系统第一条数据的时间范围为
  用过的

* 压缩(默认值:1\`)

  如果 `None` 则系统的第一个数据的压缩将是
  用过的

两者timeframe和均按照其处理每日compression数据的默认行为进行设置,并对其进行上采样以获得年度回报等值。pyfolio

– 获取分析()

返回一个字典,其中返回作为值,每个返回的日期时间点作为键

get_pf_items()

返回一个由 4 个元素组成的元组,可用于进一步处理

`pyfolio`

回报、头寸、交易、总杠杆

因为这些对象旨在用作pyfolio 此方法的直接输入,所以进行本地导入pandas以将内部 反向交易结果转换为pandas DataFrames 这是例如预期的输入,pyfolio.create_full_tear_sheet

pandas如果未安装该方法将中断

日志返回滚动

class backtrader.analyzers.LogReturnsRolling()

该分析器计算给定时间范围和压缩的滚动回报

参数:

  • timeframe(默认值:None如果None将使用系统中timeframe一个数据

    通过TimeFrame.NoTimeFrame考虑整个数据集,没有时间限制

  • compression(默认None

    仅用于次日时间范围,例如通过指定“TimeFrame.Minutes”和 60 作为压缩来处理每小时时间范围

    如果那么将使用系统的一个数据None的压缩

  • data(默认None

    参考资产来跟踪而不是投资组合价值。

    注意:此数据必须已添加到cerebro实例中 addataresampledatareplaydata

  • firstopen(默认True

    在跨越时间框架边界时跟踪以下回报data时,例如Years

    • 以上一年的最后close一年作为参考价格来查看当年的回报

    问题在于第一次计算,因为数据**没有上一个**收盘价。因此,当此参数为True 开盘价,将用于第一次计算。

    这要求数据馈送具有open价格(因为close 将使用标准 [0] 符号而不参考字段价格)

    否则将使用初始关闭。

  • fund(默认None

    如果None经纪商的实际模式(fundmode – True/False)将被自动检测以决定回报是基于总资产净值还是基于基金价值。请参阅set_fundmode经纪人文档

    将其设置为TrueFalse用于特定行为

– 获取分析()

返回一个字典,其中返回作为值,每个返回的日期时间点作为键

期间统计

class backtrader.analyzers.PeriodStats()

计算给定时间范围内的基本统计数据

参数:

  • timeframe(默认值:Years如果没有,将使用系统中第一个数据的时间范围

    通过TimeFrame.NoTimeFrame考虑整个数据集,没有时间限制

  • compression(默认:1

    仅用于次日时间范围,例如通过指定“TimeFrame.Minutes”和 60 作为压缩来处理每小时时间范围

    如果那么将使用系统的一个数据None的压缩

  • fund(默认None

    如果None经纪商的实际模式(fundmode – True/False)将被自动检测以决定回报是基于总资产净值还是基于基金价值。请参阅set_fundmode经纪人文档

    将其设置为TrueFalse用于特定行为

get_analysis返回包含键的字典:

  • average
  • stddev
  • positive
  • negative
  • nochange
  • best
  • worst

如果该参数zeroispos设置为True,则没有变化的期间将被计为正数

回报

class backtrader.analyzers.Returns()

使用对数方法计算的总回报、平均回报、复合回报和年化回报

看:

参数:

  • timeframe(默认None

    如果None将使用系统中timeframe一个数据

    通过TimeFrame.NoTimeFrame考虑整个数据集,没有时间限制

  • compression(默认None

    仅用于次日时间范围,例如通过指定“TimeFrame.Minutes”和 60 作为压缩来处理每小时时间范围

    如果那么将使用系统的一个数据None的压缩

  • tann(默认None

    用于年化(标准化)的期间数

    即:

    • days: 252
    • weeks: 52
    • months: 12
    • years: 1
  • fund(默认None

    如果None经纪商的实际模式(fundmode – True/False)将被自动检测以决定回报是基于总资产净值还是基于基金价值。请参阅set_fundmode经纪人文档

    将其设置为TrueFalse用于特定行为

– 获取分析()

返回一个字典,其中返回作为值,每个返回的日期时间点作为键

返回的 dict 以下键:

  • rtot: 总复合回报
  • ravg:整个期间的平均回报(特定时间范围)
  • rnorm: 年化/归一化回报
  • rnorm100: 以 100% 表示的年化/标准化回报

夏普比率

class backtrader.analyzers.SharpeRatio()

该分析器使用无风险资产(即利率)计算策略的夏普比率

参数:

  • timeframe: (默认: TimeFrame.Years)
  • compression(默认1

    仅用于次日时间范围,例如通过指定“TimeFrame.Minutes”和 60 作为压缩来处理每小时时间范围

  • riskfreerate(默认值:0.01 -> 1%)

    以年度计算(见convertrate下文)

  • convertrate(默认True

    riskfreerate年费率转换为月费率、周费率或日费率。不支持次日转换

  • factor(默认None

    如果None,无风险利率从年度 到选定时间范围的转换因子将从预定义的表格中选择

    天数:252,周数:52,月数:12,年数:1

    否则将使用指定的值

  • annualize(默认False

    如果convertrateTrueSharpeRatio将在timeframe选择中交付。

    在大多数情况下,夏普比率以年化形式交付。将riskfreerate年费率转换为月费率、周费率或日费率。不支持次日转换

  • stddev_sample(默认False

    如果将其设置为True标准偏差,则将计算将平均值中的分母减少1. 如果考虑到并非所有样本都用于计算,则在计算标准偏差时使用此选项。这被称为Bessels 修正

  • daysfactor(默认None

    的旧命名factorNone如果设置为和timeframeis以外的任何其他值TimeFrame.Days,则将假定这是旧代码并且将使用该值

  • legacyannual(默认False

    使用AnnualReturn回报分析器,顾名思义,它只适用于年份

  • fund(默认None

    如果None经纪商的实际模式(fundmode – True/False)将被自动检测以决定回报是基于总资产净值还是基于基金价值。请参阅set_fundmode经纪人文档

    将其设置为TrueFalse用于特定行为

– 获取分析()

返回一个字典,键为“sharperatio”,保存比率

夏普比率_A

class backtrader.analyzers.SharpeRatio_A()

夏普比率的扩展,直接以年化形式返回夏普比率

以下参数已从SharpeRatio

  • annualize(默认True

序列号

class backtrader.analyzers.SQN()

SQN 或 SystemQualityNumber。由 Van K. Tharp 定义,用于对交易系统进行分类。

  • 1.6 – 1.9 低于平均水平
  • 2.0 – 2.4 平均
  • 2.5 – 2.9 好
  • 3.0 – 5.0 优秀
  • 5.1 – 6.9 好极了
  • 7.0 – 圣杯?

公式:

  • SquareRoot(NumberTrades) * 平均(TradesProfit) / StdDev(TradesProfit)

当交易次数 >= 30 时,scn 值应该被认为是可靠的

– 获取分析()

返回带有键“sqn”和“trades”(考虑的交易数量)的字典

时间返回

class backtrader.analyzers.TimeReturn()

此分析器通过查看时间范围的开始和结束来计算回报

参数:

  • timeframe(默认值:None如果None将使用系统中timeframe一个数据

    通过TimeFrame.NoTimeFrame考虑整个数据集,没有时间限制

  • compression(默认None

    仅用于次日时间范围,例如通过指定“TimeFrame.Minutes”和 60 作为压缩来处理每小时时间范围

    如果那么将使用系统的一个数据None的压缩

  • data(默认None

    参考资产来跟踪而不是投资组合价值。

    注意:此数据必须已添加到cerebro实例中 addataresampledatareplaydata

  • firstopen(默认True

    在跨越时间框架边界时跟踪以下回报data时,例如Years

    • 以上一年的最后close一年作为参考价格来查看当年的回报

    问题在于第一次计算,因为数据**没有上一个**收盘价。因此,当此参数为True 开盘价,将用于第一次计算。

    这要求数据馈送具有open价格(因为close 将使用标准 [0] 符号而不参考字段价格)

    否则将使用初始关闭。

  • fund(默认None

    如果None经纪商的实际模式(fundmode – True/False)将被自动检测以决定回报是基于总资产净值还是基于基金价值。请参阅set_fundmode经纪人文档

    将其设置为TrueFalse用于特定行为

– 获取分析()

返回一个字典,其中返回作为值,每个返回的日期时间点作为键

交易分析仪

class backtrader.analyzers.TradeAnalyzer()

提供关闭交易的统计数据(还保留未平仓交易的数量)

  • 总开仓/平仓交易
  • 连续赢/输当前/最长
  • 盈亏总额/平均
  • 赢/输数/总盈亏/平均盈亏/最大盈亏
  • 多头/空头计数/总盈亏/平均盈亏/最大盈亏
    • 赢/输数/总盈亏/平均盈亏/最大盈亏
  • 长度(市场上的酒吧)
    • 总计/平均/最大/最小
    • 赢/输总/平均/最大/最小
    • 多头/空头总计/平均/最大/最小
    • 赢/输总/平均/最大/最小

注意:分析器对字段使用“自动”字典,这意味着如果不执行任何交易,则不会生成统计信息。

在这种情况下,返回的字典中将有一个字段/子字段get_analysis,即:

  • dictname[‘total’][‘total’] 的值为 0(该字段也可以使用点符号 dictname.total.total

交易

class backtrader.analyzers.Transactions()

该分析器报告系统中每个数据发生的事务

它查看订单执行位以在每个周期中Position从 0 开始。next

结果在 next 期间用于记录交易

参数:

  • headers(默认值True

    将初始键添加到保存带有数据名称的结果的字典中

    这个分析器被建模以促进与它的集成, pyfolio并且标题名称取自用于它的样本

  • 'date', 'amount', 'price', 'sid', 'symbol', 'value'

– 获取分析()

返回一个字典,其中返回作为值,每个返回的日期时间点作为键

可变性加权回报

class backtrader.analyzers.VWR()

可变性加权回报:对数回报更好的 SharpeRatio

别名:

  • 可变性加权回报

看:

参数:

  • timeframe(默认值:None如果None然后将报告整个回测期间的完整回报

    通过TimeFrame.NoTimeFrame考虑整个数据集,没有时间限制

  • compression(默认None

    仅用于次日时间范围,例如通过指定“TimeFrame.Minutes”和 60 作为压缩来处理每小时时间范围

    如果那么将使用系统的一个数据None的压缩

  • tann(默认None

    用于平均回报年化(标准化)的期间数。如果None,则将使用标准t值,即:

    • days: 252
    • weeks: 52
    • months: 12
    • years: 1
  • tau(默认2.0

    计算因子(见文献)

  • sdev_max(默认0.20

    最大标准偏差(见文献)

  • fund(默认None

    如果None经纪商的实际模式(fundmode – True/False)将被自动检测以决定回报是基于总资产净值还是基于基金价值。请参阅set_fundmode经纪人文档

    将其设置为TrueFalse用于特定行为

– 获取分析()

返回一个字典,其中返回作为值,每个返回的日期时间点作为键

返回的 dict 包含以下键:

  • vwr: 可变性加权回报