第十讲 了解backtrade

2 阅读4分钟

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通道突破
均值回归乖离率策略