BACKTRADER · 开源 Python 回测框架

Backtrader

事件驱动回测 · 史上最流行的 Python 回测框架之一

22,839 Star · GPL-3.0 · 123 个内置指标 · 17 个分析器
Daniel Rodriguez 2015 开源 · 纯 Python 无 C 扩展

22.8kGitHub Stars
123内置指标
17分析器
4实盘券商
向下探索

项目总览

什么是 Backtrader?

纯 Python 的事件驱动回测框架

核心定位

Backtrader 是 Daniel Rodriguez(@mementum)开发的纯 Python 事件驱动回测框架,2015 年 1 月开源。最初只是一个单文件 bt.py, 后来成长为功能最全的 Python 回测框架之一,官方描述为「Python Backtesting library for trading strategies」。

一个有趣的彩蛋:版本号末段数字即内置指标数量——1.0.0.21 = 21 个指标起步, 到 1.9.76.123 时达到 123 个指标。原项目 2023 年起实质停维,社区 fork backtrader2 续命。

属性详情
开发者Daniel Rodriguez(GitHub @mementum)
GitHubmementum/backtrader · 22,839 Star · 5,236 Fork
许可证GPL-3.0
最新版本1.9.78.123(2023-04-19)
架构事件驱动 + 向量化(runonce / runnext 双模式)
Python 兼容官方声明 3.2–3.7;实践 3.8–3.11 最稳
维护状态原项目 2023 停维,backtrader2 fork 续命

核心能力

功能最全面的回测框架

指标 / 分析器 / 数据源 / 实盘一应俱全

📐
技术指标
123 个内置
SMA/EMARSI/MACDATR/BOLLTA-Lib 集成
📊
分析器
17 个
SharpeRatioDrawDownTradeAnalyzer
🔌
实盘对接
4 券商
Interactive BrokersOandaVisualChart
订单类型

内置 Market、Limit、Stop、StopLimit、StopTrail、OCO、Bracket、MarketOnClose 等订单类型, 支持做多/做空、自定义佣金、滑点、成交量填充、资金模式(fund mode)。 cerebro.plot() 一键绘图,支持 HTML/PDF/JSON 报告生成。


API 结构

组件化架构 · Cerebro 总指挥

策略 / 指标 / 分析器 / 数据源自由组合

1 安装
pip install backtrader
pip install backtrader[plotting]   # 含 matplotlib 绘图
2 典型策略骨架
import backtrader as bt

class MyStrategy(bt.Strategy):
    def __init__(self):
        self.sma = bt.indicators.SimpleMovingAverage(self.data.close, period=20)
    def next(self):
        if self.data.close[0] > self.sma[0]:
            self.buy()   # 金叉买入

cerebro = bt.Cerebro()
cerebro.addstrategy(MyStrategy)
cerebro.adddata(bt.feeds.PandasData(dataname=df))
cerebro.broker.setcash(100000)
cerebro.run()
cerebro.plot()
核心对象

Cerebro(引擎)· Strategy(策略)· DataFeed(数据)· Broker(券商)· Analyzer(分析器)· Indicator(指标)· Observer(观察者)· Sizer(仓位管理)。 索引约定:0 = 当前,负数 = 过去,正数 = 未来。


黄金搭档

Backtrader 回测 + xtquant 数据/实盘

免费行情 + 回测 + 交易的完整闭环

为什么是黄金搭档

xtquant(迅投 QMT)提供 xtdata 行情 + xttrader 实盘, 但本身不支持回测——这正是它与 Backtrader 互补的关键。 组合闭环:免费行情(xtdata)+ 回测(backtrader)+ 实盘(xttrader), 实现「免费 + 回测 + 交易」完整链路,被社区称为「平民量化黄金搭档」。

免费行情(xtdata)+ 回测(backtrader)+ 实盘(xttrader)——平民量化黄金搭档 —— 国内量化社区共识

优缺点与边界

架构优秀,但原项目已停维

学习价值高,速度是短板

类别事项说明
优点架构清晰组件化设计,策略/指标/分析器可自由定制
优点功能最全指标/分析器/订单/多数据多周期/实盘一应俱全
优点文档完善中英文文档齐全,社区庞大
局限回测速度慢纯 Python 逐 bar 执行,大规模回测耗时明显
局限原项目停维2023 起实质停维,依赖社区 fork 续命
局限依赖兼容新版 matplotlib 需特殊处理

用 Backtrader 学懂事件驱动回测

适合复杂策略、多资产组合、教学学习、实盘对接。 要速度/大规模参数寻优,可配合 vectorbt。

🐙 GitHub 📚 中文文档 ◂ 返回总览