BackTrade的概念
BackTrade是一个基于Python开发的交易策略回测框架,广泛应用于算法交易策略的开发。 它可以充当系统的时间机器--让开发者在历史数据上模拟交易策略的逐日执行(也可以逐分执行) 核心的作用是两个 ==>一评估在过去市场环境中的表现 ==>二用数据验证策略逻辑是否具备有效性
引入backTrade
如果还未安装,则可以直接使用pip install backtrade 命令进行安装
import backtrader as bt
BackTrade的核心组件
事件驱动架构
模拟真实市场(bar-by-bar)的处理方式,支持复杂的挂单逻辑,如止损、止盈、条件触发
高度灵活性
支持股票,期货,加密货币等多种资产类型
内置技术指标库
原生集成移动平均,MACD,RSI,布林带等主流技术分析指标
多数据源支持
可以接入多个时间周期,或多个交易标的
详尽的性能分析
内置多种Analyzer,自动计算并生成夏普比例,最大回撤,胜率,盈亏比
BackTrade策略类三大核心模块解析
Cerebro(回测引擎大脑)
负责统筹协调数据流,策略执行,经济商撮合和分析器计算的完整生命周期
Data Feed(数据源)
负责将外部数据标准化并持续喂给引擎
Strategy(策略类)
量化研究员编写的核心交易逻辑的地方(定义开仓,平仓,仓位管理和指标计算)
Broker(模拟经济商)
处理订单的路由和撮合,管理账户的虚拟资金,计算佣金和模拟滑点
Analyzer(分析器)
挂在Cerebro上,在回测结束后对策略的资金曲线和交易日志进行多维度绩效计算
对应的绩效报告核心指标解析
模块一: params(参数配置)
使用元组的形式定义策略的全局变量(如周期快慢线 10和30)
模块二: init()(声明和预计算逻辑)
_init_实在回测正式启动前、对象实例化时执行的 这里面不执行任何交易的动作,它的作用是向框架声明需要用到哪些技术指标
模块三: next()(事件驱动的业务逻辑)
next()是策略的心脏。Cerebro引擎在推进历史数据的过程中,每走完一跟K线,就会调用一次next()方法 仓位状态机 发送交易指令前,系统会先判断当前的持仓状态 信号执行 依赖__init__中计算好的self.crossover 信号数值,来操作具体的close和buy
class DoubleMAStrategy(bt.Strategy):
"""双均线金叉/死叉策略"""
params = (('fast', 10), ('slow', 30))
def __init__(self):
self.ma_fast = bt.indicators.SMA(self.data.close, period=self.p.fast)
self.ma_slow = bt.indicators.SMA(self.data.close, period=self.p.slow)
self.crossover = bt.indicators.CrossOver(self.ma_fast, self.ma_slow)
def next(self):
if not self.position:
if self.crossover > 0:
self.buy()
elif self.crossover < 0:
self.close()
对应的绩效报告核心指标解析
如何评判一条策略执行的好还是坏呢,这就需要用到具体的绩效报告来进行分析了 backtrade用了不同维度来进行评判
收益评估
收益评估分为两个维度 总收益率和年化收益率 总收益率计算: (最终资金-初始资金)/初始资金 年化收益率 :CAGR = (1+TotalReturn)^(1/Years) -1 我们看到一些常见的私募机构,券商,公募,都是用年化收益率来评价收益的。因为它有几个特点 几何平均: 反映资金的实际复利增长路径,不同于算术平均 平滑波动: 忽略中间波动,只关注起点和终点的价值变化 跨资产比较: 便于比较不同的持有期的投资表现
风险控制
风险控制里面的评判指标是 最大回撤和卡玛比率 最大回撤 这个指标是最最考验人性的指标。 在遇到极端行情时,个人账户很有可能会回撤40%,50%,很多的投资人可能在还没有回撤到底的时候,就已经提早割肉了 卡玛比率 = CAGR/最大回撤 卡玛比率范围 评级
| 卡玛比率 | 标准 |
|---|---|
| >3.0 | 卓越,风险收益极佳 |
| 2.0 - 3.0 | 优先,风险控制好 |
| 1.0 - 2.0 | 良好,大多数稳健策略的区间 |
| 0.5 - 1.0 | 一般 |
| < 0.5 | 较差,风险过高或收益不足 |
性价比量化
衡量性价比的指标有 夏普比率 它的定义是 每承担1份风险,就能换来几份超额收益。
交易质量
衡量交易质量的 通常有 胜率 和 盈亏比 胜率 = 胜场数/总交易次数 盈亏比 = abs(avg_win / avg_loss)
经典指标矩阵
| 场景 | 适合指标 |
|---|---|
| 趋势跟踪 | 双均线,MACD策略,三重指数均线 |
| 超买超卖 | RSI策略,DKJ策略,顺势策略 |
| 突破系统 | 海龟交易法则,唐奇安通道,放量突破 |
| 波动率 | 布林带策略、ATR通道突破 |
| 均值回归 | 乖离率策略 |