一、回测框架概述:什么是回测、核心价值、与实盘的区别、常见框架对比
1.1 什么是回测?说白了就是给策略「开历史倒车」
回测,英文叫 Backtesting。你想想看,一个交易策略能不能赚钱,总不能直接拿真金白银去试吧?回测就是干这个的——用历史数据模拟策略在过去的表现。
我个人习惯把回测理解为「时光机测试」。你把策略放到过去几年的行情里跑一遍,看它赚了多少、亏了多少、最大回撤是多少。如果连历史行情都跑不通,那实盘基本没戏。
回测的本质定义: 在历史数据上,按照预设的交易规则,模拟执行买卖操作,并统计最终的收益、风险等绩效指标。
我在项目中遇到过不少新手,上来就问:「回测收益高是不是就能实盘了?」嗯,这里要打个问号。回测只是第一步,它帮你筛掉明显不靠谱的策略,但绝不是「圣杯」。
1.2 回测的核心价值——为什么要花时间做这件事?
说白了,回测的价值就三点:验证、优化、避坑。
- 验证策略逻辑: 你的策略假设对不对?比如「均线金叉买入」这个逻辑,在历史上到底有没有超额收益?跑一遍就知道了。
- 量化风险指标: 最大回撤、夏普比率、胜率……这些数字不会骗人。我见过一个策略回测年化 80%,但最大回撤 60%,这种你敢上实盘吗?
- 参数优化参考: 均线用 20 日还是 60 日?止损设 5% 还是 10%?回测能给你一个大概的方向。
我的经验: 回测最大的价值不是「证明策略能赚钱」,而是「证明策略在什么情况下会亏钱」。把风险看清楚,比看收益重要得多。
1.3 回测与实盘的区别——为什么回测赚钱,实盘亏钱?
这是所有做量化的人都会遇到的问题。我刚开始做回测时也踩过这个坑——回测曲线漂亮得不行,一上实盘就变脸。为什么会这样?
核心区别在于:回测是理想世界,实盘是现实世界。
| 对比维度 | 回测 | 实盘 |
|---|---|---|
| 成交价格 | 通常用收盘价或开盘价,假设能立即成交 | 有滑点、买卖价差,大单还会冲击市场 |
| 交易成本 | 容易忽略或低估手续费、印花税 | 每一笔都有真实成本,高频交易更明显 |
| 流动性 | 默认想买就能买,想卖就能卖 | 小市值股票可能挂单半天成交不了 |
| 未来信息 | 容易「偷看」未来数据(常见坑) | 只能看到过去,无法预知下一秒 |
| 心理因素 | 机器自动跑,没有情绪 | 连续亏损时,人容易手动干预 |
我曾经踩过的坑: 做回测时用了「当日收盘价」作为买入信号,同时又用「当日收盘价」计算成交。这相当于提前知道了收盘价再决定买卖——典型的未来函数。回测收益翻倍,实盘直接腰斩。嗯,从那以后我对数据对齐格外小心。
1.4 常见回测框架对比——选哪个?
市面上回测框架不少,我挑几个主流的说说。每个框架都有自己的脾气,选对了能省不少事。
| 框架 | 语言 | 特点 | 适合场景 |
|---|---|---|---|
| Backtrader | Python | 功能全面,社区活跃,文档完善 | 个人研究、中小型策略 |
| Zipline | Python | Quantopian 出品,数据管道设计优秀 | 学术研究、原型验证 |
| vn.py | Python | 国内生态,支持期货、期权实盘 | 国内期货、CTA 策略 |
| QuantConnect (LEAN) | C#/Python | 云平台,支持多资产,数据丰富 | 团队协作、多市场策略 |
| 自研框架 | 任意 | 完全可控,灵活度高 | 特定需求、高频交易 |
我个人习惯用 Backtrader 做快速验证,遇到复杂需求就自己搭框架。你想想看,如果只是写个双均线策略,用 Backtrader 十分钟就搞定了;但如果你想做订单簿级别的回测,那还是得自己写。
我的建议: 刚开始别纠结选哪个框架。先拿一个上手跑通,把回测的整个流程走一遍。等你踩过几个坑,自然就知道该换什么了。
1.5 回测框架的核心知识体系
下面这张图是我自己梳理的回测框架核心结构。你把它看懂了,后面搭建框架就有了骨架。
这张图把回测框架拆成了四个层次:数据层负责喂数据,策略层负责出信号,执行层负责模拟交易,评估层负责算绩效。每一层都有自己要注意的坑,后面我们会一个一个拆开讲。
记住一句话: 回测框架不是「写代码让策略跑起来」就完事了。真正的功夫在数据对齐、成本模拟、避免未来函数这些细节上。细节决定回测的可信度。