
回测陷阱:过拟合、幸存者偏差与未来函数
识别和修复三个回测陷阱——过拟合、幸存者偏差、未来函数——带具体的检测测试和预防规则。
交互工具在翻译视图中可能无法使用。
回测陷阱:过拟合、幸存者偏差与未来函数
三个偏差污染大多数回测。每个有具体的特征和具体的预防。学会在它们 costing 真钱之前识破。
过拟合(Overfitting)
系统拟合的是样本里的噪音而不是底层 edge 时就过拟合了。症状:
- 回测 Sharpe 超过 2.5 且有大量调过的参数。
- 参数最小变化就崩性能。
- 系统被反复优化直到"work"。
检测:每个参数扰动 10%。Sharpe 掉超 25% 就是过拟合。再换个完全不同的市场或标的测;真 edge 能泛化,拟合的系统不行。
预防:自由参数限到 3-4 个。用稳健参数(比如 50 周期 MA 能用,47 周期就可疑)。永远留 20-30% 样本外数据,开发时别碰。
幸存者偏差(Survivorship Bias)
测试标的池排除了退市或破产标的时就有幸存者偏差。"2010 年买入标普 500 成分股"用今天的成分来回测会高估收益,因为漏了那些失败被踢出的公司。
检测:查你的标的列表今天跟回测开始时是否一致。重建不了时点成分,你就有幸存者偏差。
预防:用时点成分数据。美股要付费源(CRSP、Compustat 或无幸存者偏差的供应商)。期货用按正确展期逻辑构造的连续合约,不是拼接价。永远别在当前指数成分上回测选股策略。
未来函数(Look-Ahead Bias)
未来函数用了交易时点还不可得的信息。它最常见也最致命,因为它造出看似完美的回测,实盘就崩。
常见来源:
- 用当根 K 线收盘决定是否在收盘进场。
- 用全序列算的指标(比如居中移动平均)而不是因果版本。
- 用修订后的经济数据;初值和修订值不同。
- 用今天的拆股调整价去算拆股还没发生时的过去信号。
检测:按严格时间顺序逐根 K 线跑回测,每个指标只用截至前一根收盘的数据重算。跟你的快速回测比对。明显偏离说明有未来函数。
预防:信号在"移位"基础上写代码,t 时刻用的任何值必须从截至 t-1 的数据算。审计入场规则里任何"今日收盘"的用法。经济数据用首次发布的,不用修订的。
最终测试
不优化、用实盘数据跑 50 笔。实盘远低于回测预期,三个偏差里几乎肯定有一个在。加资金前重审代码。看着太好的回测通常是错的;少数诚实的回测看着朴素。
实时行情
打开完整图表 →相关市场数据由 TradingView 提供。
我的笔记
登录后可在本文保存笔记并与社区分享。
相关内容
相关术语
Trading Plan
trading-psychologyA written set of rules covering what you trade, when you enter, when you exit, how much you risk, and how you review trades. It removes decisions from the heat of the moment.
Edge
trading-psychologyA repeatable reason your trades should make money over a large sample, paired with risk management. A few lucky wins are not an edge.
Journaling
trading-psychologyWriting down every trade's setup, entry, exit, size, emotion, and the result, so you can review patterns and improve over time.
下一篇推荐
Trading System Development Lifecycle: Hypothesis to Deployment
A complete development lifecycle from hypothesis through testing, optimization, and live deployment with concrete gates and kill criteria at each stage.
阅读更多 →Smart Recommendations