一个触目惊心的数字#
据说华尔街有 90% 的量化策略在回测中表现优异,但实盘中只有不到 10% 能真正赚钱。
为什么回测和实盘的差距这么大?因为回测太容易作弊了——而且很多时候你不是故意的,是不知道自己正在作弊。
这篇文章梳理 7 个量化回测中最常见的致命陷阱,每一个都能让你信心满满地投入真金白银,然后亏到怀疑人生。
陷阱一:过拟合——回测界的万能作弊器#
过拟合是量化圈的”大力丸”:加足够多的参数、试足够多的组合,你总能找到一条完美匹配历史数据的曲线。
它长什么样?#
你用 20 个技术指标(MACD、RSI、布林带、ATR……)加上它们的各种变形和参数组合,在 A 股 3000 多只股票上跑了 10000 次参数搜索,最终找到了一个年化收益 80%、最大回撤不到 5% 的”圣杯”。
恭喜你,你找到的不是圣杯,是噪音里恰好符合历史的一条随机曲线。
如何防范#
- 减少自由度:参数个数越少越好,每增加一个参数,过拟合风险指数级上升
- 样本外测试:至少留出 30% 的样本外数据,只用样本内的最佳参数在样本外验证
- 敏感性分析:微调参数(±10%),策略表现不应该剧烈波动。如果参数 10 和 11 差了一个天一个地,这策略大概率过拟合了

陷阱二:生存偏差——“死人”不会说话#
你回测的是 2026 年 A 股现存的股票。但 2015 年那波牛市里那些暴涨暴跌的股票,可能早就退市了。
问题在哪?#
如果你的回测数据只包含”活到现在”的股票,你的统计会天然偏乐观。退市的股票往往业绩差、大跌,你回测时”恰好”躲过了它们——但你实盘时躲不掉。
真实数据有多严重?#
A 股每年退市的股票约占全市场的 0.5%-1.5%,看起来不多。但如果你回测的是小市值策略,这些退市股对小市值因子的拖累远高于大市值。忽略生存偏差,小市值因子可能会被高估 3%-5% 的年化收益。
解决方案#
- 使用包含退市股票的全量历史数据库(如聚宽、米筐的点权数据)
- 确认你的数据源是否提供”退市终态”的价格数据
- 回测时确保退市股在退市日之后不再产生收益
陷阱三:未来信息泄露——最隐蔽的暗坑#
这是初学者最容易犯、也是最致命的错误。一旦发生,你的整个回测结果全部作废。
典型案例#
- 用年报数据在 3 月做交易:年报的实际披露日是 4 月 30 日。你用 4 月的数据回测 3 月的交易信号,等于提前看到了答案
- 用当日收盘价计算信号后当日交易:收盘价是 15:00 才确定的,你不可能在盘中就知道收盘价
- 用全样本做标准化:计算 Z-score 时用全部历史数据(包括未来的),等于用后视镜做决策
查找方法#
在回测代码中加入”时间戳审计”:
# 对每个交易日的每个数据点,验证时间戳
assert data_point.timestamp < trade_decision.timestamppython一旦发现任何一个数据点的时戳晚于交易时戳,你就是泄露了未来信息,整个回测报废重来。
陷阱四:交易成本——纸面上赚的和口袋里装的不一样#
很多回测代码的开头是这样的:
# 假设零手续费、零滑点、无限流动性
slippage = 0
commission = 0python如果这是真的,我明天就能成为亿万富翁。
真实的交易成本#
对于 A 股个人投资者,不考虑印花税的交易成本大约在 0.05%-0.15% 之间(佣金 + 冲击成本)。如果是小市值股票、高换手策略,冲击成本可能高达 0.3% 以上。
举一个具体的例子:你开发了一个每天换手 20% 的策略(全仓 5 天换一次),年化换手率 50 倍(约 12000%)。交易成本每高 0.05%,年化收益就砍掉 6%。一个号称年化收益 30% 的策略,扣完成本可能只剩 15%。
费用建模建议#
- 佣金:万 2.5(最低 5 元/笔),用
max(成交额 * 0.00025, 5)建模 - 印花税:卖方千 1(A 股),只在卖出时收取
- 滑点:流动性越差、成交额越大,滑点越高。大盘股 0.01%,小盘股 0.1%-0.5%
- 冲击成本:如果你的策略买卖量大到能影响价格,这个需要单独建模

陷阱五:信号延迟——“看到信号”和”执行交易”之间存在时间差#
这是一个很微妙但非常重要的问题。
假设你的策略基于「开盘价突破 20 日均线」买入。开盘价是 9:30 确定的,你看了一眼确认突破,然后下单。等你真正成交,可能已经 9:31-9:32 了。
高开突破往往是高开的那一瞬间就发生了,价格已经冲上去了。你用开盘价回测能买到,实盘买到的是更高的价格。对于高频策略,这种差距尤其致命。
回测中的正确做法#
在卖出信号触发日和实际执行日之间加入至少 1 个周期的延迟。日频策略用次日开盘价执行,分钟频策略用次分钟价格执行。
陷阱六:数据窥探——当你知道太多就看不准了#
你花了一周时间分析数据、画图、找规律,最后发现”当沪深 300 的 5 日均线金叉 20 日均线,且成交量放大 1.5 倍以上时买入,胜率 70%”。
问题在于:这个规律本身就是你看着同一套数据找到的。你的大脑已经受到了数据窥探偏差(Data Snooping)的影响。
解决方案#
- 用一套数据探索,用另一套数据验证:探索数据永远不能用作验证
- 事前规定假设:在跑数据之前,把你的策略逻辑写下来,不要根据回测结果去”反向推导”规则
- 统一家族误差校正:如果你测试了 100 个策略,即使每个都是随机噪音,按 5% 显著性水平你也会”发现”大约 5 个”有效”策略。要做多重检验校正(Bonferroni 或 FDR)
陷阱七:忽略市场体制转换——牛市策略 ≠ 熊市策略#
量化回测中最让人沮丧的事情是什么?
你花三个月开发了一个策略,2019-2021 年回测年化收益 40%,信心满满投入实盘。结果 2022 年亏了 30%,因为市场从牛市切换到了熊市,你的策略完全失效。
市场体制转换是真实存在的#
A 股从 2015 年到现在,经历了:
- 2015 年:疯牛 + 暴跌
- 2016-2017 年:慢牛(白马股行情)
- 2018 年:单边下跌
- 2019-2020 年:结构牛(消费 + 医药)
- 2021 年:风格切换(新能源 + 周期)
- 2022 年:系统性下跌
- 2023 年:震荡分化
- 2024-2025 年:AI 驱动的结构性行情
你的策略如果在所有区间都赚钱,才可能是真的有效。只在某一段赚钱的策略,可能只是在赌风格——而风格是会变的。
验证方法#
把你的回测区间切成若干个不同市场环境(牛/熊/震荡)的子区间,在每个子区间内分别验证策略表现。理想情况是各个区间都有正收益,至少不出现大幅亏损。
总结:如何做一个诚实的回测#
- 样本外留足:至少 30% 的数据从来不看,只在最终验证时使用一次
- 换一个市场验证:A 股有效的策略,在港股、美股是否也有类似表现?
- 加满交易成本:宁可高估成本而放弃一些机会,也不低估成本而被虚假收益欺骗
- 做交叉验证:在不同时间段、不同股票池上分别测试
- 定期重新评估:实盘跑了 3 个月后,实盘和回测的一致性如何?偏差太大说明你的回测有系统性漏洞
诚实回测是一种习惯,更是一种纪律。量化交易最大的敌人不是亏损,而是你对自己策略的盲目自信。
记住一句话:回测做得越完美,实盘就越容易失望;回测做得越诚实,实盘就越容易给你惊喜。