Skip to main content
回测陷阱:过拟合、幸存者偏差与未来函数
blog 中级 · ~1 min read

回测陷阱:过拟合、幸存者偏差与未来函数

识别和修复三个回测陷阱——过拟合、幸存者偏差、未来函数——带具体的检测测试和预防规则。

· Lead Editor · · ~1 min read
#trading-systems#backtesting
本文为英文。需要查看中文翻译吗?

交互工具在翻译视图中可能无法使用。

回测陷阱:过拟合、幸存者偏差与未来函数

三个偏差污染大多数回测。每个有具体的特征和具体的预防。学会在它们 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 提供。

分享:
𝕏 f in r/
·
📝

我的笔记

登录后可在本文保存笔记并与社区分享。

✓ 已核查事实 审阅人 Timi Chen, 编辑顾问 · 发布于: 2026-07-01 · 编辑政策
由 Marcus Cole 起草 · 由 Timi Chen 于 2026-07-01 审核 · 最后检查于 2026-07-01

教育内容 · 非财务建议 · 风险自担

相关内容

相关术语

下一篇推荐

trading-systemsbacktesting 2026-07-01

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