核心结论: 过拟合就是策略把某一段历史行情里的“偶然噪声”当成长期规律。结果常常是历史回测很漂亮,换一个时期或进入实盘便失效。
一个简单例子
你把快均线从2日试到50日、慢均线从20日试到300日,再组合不同止损、止盈和仓位,共测试20,000套参数,最后挑出“19日+63日”且夏普率2.5。
这不一定说明19和63存在真正规律。试验次数足够多时,即使所有策略都没有预测能力,也可能碰巧选出一个历史冠军。若18/63、19/62都很差,换到下一年也亏损,19/63很可能只是“记住了历史答案”。
先区分三个问题
| 问题 | 含义 |
|---|---|
| 过拟合 | 策略学到了历史噪声,换数据后失效 |
| 未来数据泄漏 | 决策时使用了当时不可能知道的数据 |
| 回测假设过于乐观 | 忽略滑点、成交困难、手续费和延迟 |
例如,用明天收盘价决定今天买入是未来数据泄漏。通过未来数据检查,只能说明没有发现某类“偷看答案”,不能证明策略没有过拟合。
七步过拟合体检
1. 做真正的样本外测试
训练期 验证期 最终测试期
研究和调整参数 → 选择方案 → 只测试一次
2018—2021 2022 2023—2024
最终测试期应提前封存。一旦看过结果并据此修改策略,这段数据就不再是真正的样本外数据。时间序列也不能随意随机打乱。
2. 做滚动前向验证 Walk-forward
2018—2020训练 → 2021测试
2019—2021训练 → 2022测试
2020—2022训练 → 2023测试
2021—2023训练 → 2024测试
观察多数测试段是否仍有正期望,夏普是否全面崩塌,回撤是否突然放大,以及是否只能在单一牛市、年份或品种赚钱。
3. 检查参数附近是否存在“稳定平台”
稳健策略通常不是只有一个精确参数有效,而是附近一片区域仍然可用。理想结果不是尖锐的最高峰,而是一块较宽、较平稳的高地。
4. 记录一共试过多少方案
保存所有逻辑、参数、品种、周期、过滤条件和被淘汰结果。测试10,000个方案后只展示最好一个,普通夏普率会高估可信度。进阶可用缩水夏普率和PBO修正多重测试问题。
5. 做成本和成交压力测试
测试正常、1.5倍和2倍手续费与滑点;下一根K线成交;更差成交价;限价单未成交;资金费率、借贷成本和容量限制。成本稍增就从暴赚变亏损,说明优势很脆弱。
6. 检查利润是否过度集中
删除盈利最大的5笔、删除表现最好的一个月,按牛熊震荡、年份、品种、做多做空拆分。如果删掉少量交易就转亏,不能单独证明过拟合,但说明结果不稳健。
7. 做模拟盘前向测试
历史回测
↓
样本外 / Walk-forward
↓
模拟盘 Dry-run
↓
对比信号、成交和收益差异
↓
才考虑极小资金验证
常见过拟合警报
- 回测收益异常高、曲线异常平滑,经济逻辑却说不清。
- 测试大量方案,但只报告最后一个。
- 样本内夏普很高,样本外接近0或变负。
- 参数稍改,结果立即崩溃。
- 主要利润来自少数交易、单一年份或单一品种。
- 扣除真实成本后不再盈利。
- 不断查看样本外数据并继续修改。
- 回测与模拟盘的信号或成交差异明显。
核心结论: 不能用一个指标证明“绝对没有过拟合”。样本外测试的目的不是证明策略一定赚钱,而是努力推翻它;在没有未来数据、记录全部试验、通过多轮Walk-forward、参数附近稳定、扣除压力成本且模拟盘没有明显背离时,只能说过拟合风险得到了一定控制。
参考与来源状态:
研究关系
前置知识0
暂无已建立的前置知识
相关内容3
此内容取代0
暂无已建立的此内容取代
取代此内容0
暂无已建立的取代此内容
