框架的价值不是「帮你写回测」,而是强制你面对正确的问题:成交价用哪个?成本怎么算?停牌能不能成交?——成熟框架把这些坑内置成了默认答案。本篇按用途给一张地图,并回答「什么时候自己写」。
事件驱动回测框架
Backtrader:个人量化的常青树。事件驱动、broker 抽象贴近真实下单(限价/市价/止损单)、文档社区成熟。适合:中低频股票/期货策略、需要逐 bar 撮合逻辑的场景。短板:性能一般(百万 bar 量级变慢)、多标的组合优化需要自己动手——它假设「策略是个体交易者」,不是「组合管理器」。
Zipline / Zi-Reloaded:Quantopian 遗产,initialize/handle_data 范式与 Pipeline API(横截面因子批量计算)是其精华。适合:美股因子研究、喜欢 Pipeline 声明式风格的研究者。原版停更后用社区维护的 zi-reloaded;A 股数据适配需要自己处理(复权、涨跌停)——框架默认的市场是美股,制度细节的空缺就是偏差的入口。
RQAlpha(米筐开源):国产框架里工程化最好的选择之一,A 股制度细节(T+1、涨跌停、停牌、分红送转)默认正确处理——这是它相对舶来品的决定性优势。风格与 Zipline 相近,可配合米筐的 RQData 使用。适合:A 股中低频策略的严肃回测。判断一个 A 股框架是否合格的三道测试题:跌停日卖出成交吗?分红后持仓股数变吗?次新上市首日能买吗?——RQAlpha 都答对。
JoinQuant/聚宽 & 米筐平台(在线):云端一体化(数据+研究+回测+模拟盘),jqdata API 在国内个人研究者中普及度最高。适合快速验证 A 股想法、不想搭数据管道的人。注意:平台锁定与导出成本——研究资产尽早沉淀为本地代码与数据,把「平台」降级为「数据源」,否则多年的策略积累锁死在别人手里。
向量化回测框架
VectorBT:整列运算的极简回测(信号矩阵 → 组合模拟),速度比事件驱动快 2–3 个数量级,参数扫描(100 组均线的网格)是它的主场。短板:撮合模型简化(默认下一收盘价成交),成本与制度细节要自己保证正确。适合:因子 idea 的快速筛选、参数稳健性热力图;不适合:精确执行逻辑的最终验证。
正确用法是两级流水:
| |
只用第一级下结论是最常见的自欺——向量化框架的乐观偏差(无成本、理想成交)叠加起来轻松虚增 5–10 个点年化。
专项库(不是回测框架,但常被误当框架)
QuantLib:固定收益与衍生品定价的工业级库(利率曲线构建、波动率曲面、奇异期权、债券久期凸性)。C++ 内核 Python 绑定。适合做衍生品/固收的人;股票多因子研究者用不到——别为了「专业感」引入两倍于策略代码的依赖。
PyPortfolioOpt:组合优化的教科书级实现:均值-方差、Black-Litterman、层次风险平价(HRP)、收缩协方差,全部几行调用。适合把组合构建 章的方法直接落地。短板:约束表达力弱于专业优化器——复杂的行业/换手/暴露约束要用 cvxpy 自建(见约束优化 )。
其他值得认识的:qlib(微软开源,ML 量化流水线,见机器学习策略
)、empyrical/quantstats(绩效指标计算)、riskfolio-lib(组合优化进阶)、arctic(时序存储,见调度与数据库
)。
选型决策与自建的分界线
| 你的阶段 | 推荐 |
|---|---|
| 第一个回测,学习概念 | Backtrader 或聚宽(在线) |
| A 股日频多因子,要制度正确性 | RQAlpha / 聚宽 + 本地 VectorBT 海选 |
| 参数扫描、因子海选 | VectorBT + 自定义成本模型 |
| 期权/固收定价 | QuantLib |
| 组合权重计算 | PyPortfolioOpt / cvxpy |
什么时候自己写引擎? 三个信号同时出现:框架的撮合假设与你交易的制度细节持续冲突(如集合竞价、批量撮合);你需要在回测内做实时组合优化;框架成为研究吞吐的瓶颈。在此之前,「自研回测引擎」是工程快感、不是研究产出——把同样的时间投入因子研究,期望收益高得多(见回测框架设计 :即便自建,也该先读懂框架处理了哪些偏差)。
关联阅读:回测偏差大全 是评估任何框架的检查表——框架默认处理了哪几条、没处理哪几条;数据工程 决定框架之外你仍要自建的数据层。