回测过拟合:为什么"历史完美"是危险信号
我的掌握程度:
先掌握这个答案
机制:历史数据=真信号+噪声。回测优化器分不清两者——它忠实地拟合噪声("只有三连阴后才买入"这种规则十有八九是给噪声定制的西装)。信息论直觉:数据的信息量有限,规则越复杂(参数越多、条件越多),可解释它的"合理模型"越多——完美拟合=必然过拟合。四防御:①少规则少参数(奥卡姆剃刀:参数≤3个的朴素策略更可能存活);②参数敏感性(好策略的参数高原,孤峰=过拟合,q-085);③样本外纪律(留一段从未参与任何决策的数据,最后碰一次);④DSR折减(按尝试次数N打折,q-510)。防御边界:①②治"复杂度"、③治"选择偏差"、④治"多重检验"——组合使用而非单选。
先读结论,再核对下方使用边界;数字例题为教学情景,涉及实际行情与规则时请核对原始来源。
从理解到使用
每一笔收益都要有可执行时间线
打印数据截止时间、信号时间、订单时间、成交时间和持仓收益区间。收盘信号不能乘当天完整收益;次日开盘成交也不能无条件拿到整个close-to-close收益。用原始价格判断可成交性,并纳入停牌与涨跌停。
本阶段实战方法 · 回测先过时序、成交与成本三道关
把信号变成策略收益时,每笔收益必须能追溯到当时能下出的订单。
- 画出时间线:数据可得→算信号→下单→成交→持仓收益;收盘信号不能倒用当天完整收益。
- 明确交易价格、T+1可卖数量、停牌涨跌停、仓位上限和实际成交量约束。
- 同时报告毛/净收益、换手、最大回撤、基准和样本外结果;对滑点与费率做压力测试。
使用边界
- 简单shift(1)只解决部分时序问题;次日开盘成交还要区分隔夜和日内收益。
- 成本应按成交金额与买卖方向计提;0.15%是教学情景,不是统一市场费率。
背景 · 从一个困惑说起
q-502防住了"偷看未来",但还有更隐蔽的敌人:不偷看任何一天数据,只是反复修改规则直到历史表现好看——每一次"优化"都在向历史噪声妥协。最终你得到的不是市场规律,而是历史的自画像。
由此产生的问题
回测过拟合的机制(信息论视角:规则复杂度vs数据信息量)?四个实用防御(少规则/敏感性/样本外/DSR)各自的边界?
核心概念
机制:历史数据=真信号+噪声。回测优化器分不清两者——它忠实地拟合噪声("只有三连阴后才买入"这种规则十有八九是给噪声定制的西装)。信息论直觉:数据的信息量有限,规则越复杂(参数越多、条件越多),可解释它的"合理模型"越多——完美拟合=必然过拟合。四防御:①少规则少参数(奥卡姆剃刀:参数≤3个的朴素策略更可能存活);②参数敏感性(好策略的参数高原,孤峰=过拟合,q-085);③样本外纪律(留一段从未参与任何决策的数据,最后碰一次);④DSR折减(按尝试次数N打折,q-510)。防御边界:①②治"复杂度"、③治"选择偏差"、④治"多重检验"——组合使用而非单选。
为什么需要它
①统计必然性:试错式研究下,回测虚高不是"可能"而是数学必然(最高分策略的期望夸大程度随N增长)——防御是纪律不是运气;②职业分水岭:能识别并抵御"再调一下会更好"的诱惑,是从业余到专业的最后一关;③与ML过拟合同源:阶段8的九信号体检是它的模型版——一条思想贯穿两条战线。
实际应用场景
实操守则:写下假设→固定参数→跑一次→记录(好坏都算数)→换下一个假设;"就改一点点再跑一次"前默念DSR:N又+1了。
与之前知识的联系
q-510的DSR是定量工具、q-085(阶段1)的实验日志是行为工具、本题是认知框架——三层防线;q-713(阶段8)把同一斗争推进到ML。
⚠ 常见误解
- 我没有偷看数据所以没过拟合:过拟合不需要"偷看"——反复试错本身就是对历史的隐性拟合
- 样本外验证一劳永逸:样本外被看过一次就"污染"一分(你会忍不住按它调整)——终极样本外要像弹药一样省着用
- 简单策略赚太少、复杂策略赚得多:市场不奖励复杂;复杂度是你在为噪声付账——先问参数有没有必要性证明
🛠 本题实践任务
统计你某次研究里从v1到最终版的所有规则/参数改动次数N;用随机噪声数据复跑你的策略骨架——如果噪声上也能"调出"显著收益,你的流程就有过拟合漏洞。
💡 提示(先自己想5分钟再看)
噪声复跑是最诚实的照妖镜:真实信号在噪声上应该失败,只有"过度可塑"的流程才会两边都赢。
✅ 验收标准
一个诚实的N+一次噪声对照实验。这份自检比任何回测数字都更能提升你的研究可信度。
在你的浏览器内运行。首次需联网下载 Python;支持标准库和 Pyodide 提供的 NumPy、pandas 等包。行情抓取、系统文件访问和部分第三方库请在本地环境运行。输出自检仅比对结果关键词,不代替逻辑审查。
Python · 独立工作线程 · 执行限时10秒
🤖 AI导师
导师会先检查你的前置知识(前视防御、多重检验),再用案例、公式和代码帮助理解。此功能需要先启用服务。