什么是回测?别被漂亮的曲线骗了
刚开始做量化的人,最容易沉迷的一件事,就是盯着那条一路向右上角的回测曲线,觉得自己找到了圣杯。然后一上实盘,亏得怀疑人生。
这篇讲清楚:回测到底是什么,以及它是怎么骗你的。
一、回测是什么?
回测(backtest),就是拿历史数据,检验一个策略如果回到过去会表现如何。
比如你有个想法:「买市盈率最低的 20 只股票,每月换一次」。你不能直接拿真金白银去试,而是先用过去 10 年的数据跑一遍,看看这个策略历史上赚不赚钱、最大亏损多少。
二、回测能告诉你什么?
- 大致收益:年化多少、总收益多少
- 风险特征:最大回撤多少、波动大不大
- 稳定性:是每年都赚,还是靠某一年暴赚撑起来的
- 逻辑是否成立:想法是不是一开始就是错的
三、回测最大的谎言:过拟合
这是新手最常掉进去的坑,也是回测曲线为什么「漂亮得可疑」的根本原因。
过拟合的意思是:你不断调整参数,直到策略刚好完美贴合历史数据。比如你试了「20 日、21 日、22 日……均线」,最后发现「23 日均线」历史上收益最高——但这不是规律,是巧合。
过拟合的策略,就是那只碰巧敲对的猴子。
四、还有这几个坑
1. 幸存者偏差
你回测用的股票池,是「今天还在上市的公司」。但那些已经退市、破产的公司被排除在外了。结果就是:你的回测偷偷避开了所有「失败者」,收益自然虚高。
2. 前视偏差(未来函数)
策略在某个时间点,用了当时根本拿不到的信息。比如用当天收盘价决定当天开盘买入——现实中你不可能做到。这种错误会让回测收益高得离谱。
3. 忽略交易成本
回测里「无缝换股」很爽,但现实中有手续费、印花税、滑点。高频策略尤其致命——看似赚钱,实盘被成本吃光。
4. 参数太多
一个策略如果有 10 个可调参数,那你几乎总能调出一组「历史最优」。参数越多,越可能是过拟合。
五、怎么判断一个回测靠不靠谱?
- 样本外测试:用一部分数据开发,另一部分数据验证。如果样本外表现崩了,就是过拟合。
- 看逻辑:这个策略为什么该赚钱?讲不出道理的,别信。
- 看参数敏感度:微调参数收益就大幅变化的,多半是巧合。
- 扣掉成本:先把手续费、滑点算进去,再看还赚不赚钱。
- 看极端年份:牛市谁都赚,重点看熊市和震荡市的表现。
六、过拟合长什么样:一个具体例子
抽象讲「过拟合」很难体会。用数字讲一遍:
然后把同一组参数拿到样本外(策略没见过的后 30% 数据)。
在沪深300 上实测:样本内最优是快 12 / 慢 50,夏普 0.34;
换到样本外,夏普变成 −0.09,在 86 组里排到第 69 名。
同一套规则,在没见过的行情里直接亏钱。
这不是策略不好,而是你挑了它——在几十个候选里,「最幸运」的那个天然会记住噪声。
你可以自己在 回测实验室 里复现这件事:选「双均线」,在「参数敏感性」里扫一遍快线周期,看年化曲线在相邻参数之间跳成什么样。如果曲线是锯齿状的,说明那个「最优点」是运气,不是能力。
七、还有两个容易忽略的细节
1. 交易成本必须建模
一个年换手 20 次的策略,若单次双边成本 0.15%,每年光成本就吃掉 3%。很多「稳定盈利」的回测,扣掉成本后就是负的。 成本至少应包括:佣金、印花税、滑点。高频策略还要加冲击成本。
2. 成交假设要现实
- 信号当天收盘价成交 —— 在 T+1 的 A 股做不到,是常见的隐性作弊。
- 涨停也能买入、跌停也能卖出 —— 现实里排不上队,这类假设会显著虚高收益。
- 忽略停牌 —— 停牌期间你既不能买也不能卖,回测必须体现。
如果收益绝大部分来自 beta,那这个策略其实只是「在大盘上涨时满仓」——它没有超额能力,只是运气好赶上了好行情。
八、给你的建议
如果你刚开始学量化,记住这条心法:
先怀疑,再相信。 看到一条完美曲线,第一反应不该是兴奋,而是问:「我是不是哪里作弊了?」
能问出这句话的人,才可能活到最后。