分析仪详细说明 – backtrader中文教程
年利润
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
经纪人文档将其设置为
True
或False
用于特定行为
-“get_analysis“()
返回一个 OrderedDict ,其中包含时间段的键和相应的滚动 Calmar 比率
– “calmar“最新计算的calmar比率()
提款
class backtrader.analyzers.DrawDown()
此分析器计算交易系统回撤统计数据,例如以 %s 和美元为单位的回撤值、以 %s 和美元为单位的最大回撤、回撤长度和回撤最大长度
参数:
fund
(默认None
)如果
None
经纪商的实际模式(fundmode – True/False)将被自动检测以决定回报是基于总资产净值还是基于基金价值。请参阅set_fundmode
经纪人文档将其设置为
True
或False
用于特定行为
-“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
经纪人文档将其设置为
True
或False
用于特定行为
-“get_analysis“()
返回一个字典(带有 .notation 支持和 subdctionaries),其中包含回调统计作为值,以下键/属性可用:
drawdown
– 回撤值 0.xx %maxdrawdown
– 以货币单位表示的回撤值maxdrawdownperiod
– 回撤长度
– 这些在运行期间作为属性()可用
dd
maxdd
maxddlen
总杠杆
class backtrader.analyzers.GrossLeverage()
该分析器在时间范围内计算当前策略的总杠杆
参数:
fund
(默认:None
)如果
None
经纪商的实际模式(fundmode – True/False)将被自动检测以决定回报是基于总资产净值还是基于基金价值。请参阅set_fundmode
经纪人文档将其设置为
True
或False
用于特定行为
– 获取分析()
返回一个字典,其中返回作为值,每个返回的日期时间点作为键
PositionsValue
class backtrader.analyzers.PositionsValue()
该分析器报告当前数据集的位置值
参数:
- 时间范围(默认值:
None
)如果None
那么将使用系统的第一个数据的时间范围 - 压缩(默认:
None
)仅用于次日时间范围,例如通过指定“TimeFrame.Minutes”和 60 作为压缩来处理每小时时间范围
如果那么将使用系统的第一个数据
None
的压缩 - 标头(默认值:
False
)将初始键添加到保存带有数据名称的结果的字典中(’Datetime’ 作为键
- 现金 (默认:
False
)包括实际现金作为额外位置(标题“现金”将用作名称)
– 获取分析()
返回一个字典,其中返回作为值,每个返回的日期时间点作为键
PyFolio
class backtrader.analyzers.PyFolio()
该分析器使用 4 个子分析器来收集数据并将其转换为兼容的数据集pyfolio
儿童分析仪
TimeReturn
用于计算全球投资组合价值的回报
PositionsValue
用于计算每个数据的位置值。它将
headers
和cash
参数设置为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
实例中addata
,resampledata
或replaydata
firstopen
(默认:True
)在跨越时间框架边界时跟踪以下回报
data
时,例如Years
:- 以上一年的最后
close
一年作为参考价格来查看当年的回报
问题在于第一次计算,因为数据**没有上一个**收盘价。因此,当此参数为
True
开盘价时,将用于第一次计算。这要求数据馈送具有
open
价格(因为close
将使用标准 [0] 符号而不参考字段价格)否则将使用初始关闭。
- 以上一年的最后
fund
(默认:None
)如果
None
经纪商的实际模式(fundmode – True/False)将被自动检测以决定回报是基于总资产净值还是基于基金价值。请参阅set_fundmode
经纪人文档将其设置为
True
或False
用于特定行为
– 获取分析()
返回一个字典,其中返回作为值,每个返回的日期时间点作为键
期间统计
class backtrader.analyzers.PeriodStats()
计算给定时间范围内的基本统计数据
参数:
timeframe
(默认值:Years
)如果没有,将使用系统中第一个数据的时间范围
通过
TimeFrame.NoTimeFrame
考虑整个数据集,没有时间限制compression
(默认:1
)仅用于次日时间范围,例如通过指定“TimeFrame.Minutes”和 60 作为压缩来处理每小时时间范围
如果那么将使用系统的第一个数据
None
的压缩fund
(默认:None
)如果
None
经纪商的实际模式(fundmode – True/False)将被自动检测以决定回报是基于总资产净值还是基于基金价值。请参阅set_fundmode
经纪人文档将其设置为
True
或False
用于特定行为
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
经纪人文档将其设置为
True
或False
用于特定行为
– 获取分析()
返回一个字典,其中返回作为值,每个返回的日期时间点作为键
返回的 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
)如果
convertrate
是True
,SharpeRatio将在timeframe
选择中交付。在大多数情况下,夏普比率以年化形式交付。将
riskfreerate
年费率转换为月费率、周费率或日费率。不支持次日转换stddev_sample
(默认:False
)如果将其设置为
True
标准偏差,则将计算将平均值中的分母减少1
. 如果考虑到并非所有样本都用于计算,则在计算标准偏差时使用此选项。这被称为Bessels 修正daysfactor
(默认:None
)的旧命名
factor
。None
如果设置为和timeframe
is以外的任何其他值TimeFrame.Days
,则将假定这是旧代码并且将使用该值legacyannual
(默认:False
)使用
AnnualReturn
回报分析器,顾名思义,它只适用于年份fund
(默认:None
)如果
None
经纪商的实际模式(fundmode – True/False)将被自动检测以决定回报是基于总资产净值还是基于基金价值。请参阅set_fundmode
经纪人文档将其设置为
True
或False
用于特定行为
– 获取分析()
返回一个字典,键为“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
实例中addata
,resampledata
或replaydata
firstopen
(默认:True
)在跨越时间框架边界时跟踪以下回报
data
时,例如Years
:- 以上一年的最后
close
一年作为参考价格来查看当年的回报
问题在于第一次计算,因为数据**没有上一个**收盘价。因此,当此参数为
True
开盘价时,将用于第一次计算。这要求数据馈送具有
open
价格(因为close
将使用标准 [0] 符号而不参考字段价格)否则将使用初始关闭。
- 以上一年的最后
fund
(默认:None
)如果
None
经纪商的实际模式(fundmode – True/False)将被自动检测以决定回报是基于总资产净值还是基于基金价值。请参阅set_fundmode
经纪人文档将其设置为
True
或False
用于特定行为
– 获取分析()
返回一个字典,其中返回作为值,每个返回的日期时间点作为键
交易分析仪
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
经纪人文档将其设置为
True
或False
用于特定行为
– 获取分析()
返回一个字典,其中返回作为值,每个返回的日期时间点作为键
返回的 dict 包含以下键:
vwr
: 可变性加权回报