数据挖掘偏差:过拟合的"历史学名"与三道防线
我的掌握程度:
先掌握这个答案
家族分工:过拟合=模型对噪声的拟合(机制层);数据挖掘偏差=研究流程对同一数据的反复挖掘(流程层);多重检验=统计上的必然假阳性(数学层)——同一病灶的三个科室。三道防线:①预注册(研究前写死假设与规则——q-600协议的核心条款):把"探索"变"验证";②诚实N(记录全部尝试次数——q-510 DSR的输入):报告时按N折减("这是第47次尝试"应是报告第一行);③白噪声基准(q-507的噪声实验制度化):你的研究流程在纯随机数据上能"发现"多少显著——流程的测谎仪。三防线的层次:①防未试之先、②记已试之事、③测流程本身——层层递进。
先读结论,再核对下方使用边界;数字例题为教学情景,涉及实际行情与规则时请核对原始来源。
从理解到使用
本阶段实战方法 · 回测先过时序、成交与成本三道关
把信号变成策略收益时,每笔收益必须能追溯到当时能下出的订单。
- 画出时间线:数据可得→算信号→下单→成交→持仓收益;收盘信号不能倒用当天完整收益。
- 明确交易价格、T+1可卖数量、停牌涨跌停、仓位上限和实际成交量约束。
- 同时报告毛/净收益、换手、最大回撤、基准和样本外结果;对滑点与费率做压力测试。
使用边界
- 简单shift(1)只解决部分时序问题;次日开盘成交还要区分隔夜和日内收益。
- 成本应按成交金额与买卖方向计提;0.15%是教学情景,不是统一市场费率。
背景 · 从一个困惑说起
q-507讲了回测过拟合的机制;它有个更老的学名——数据挖掘偏差(data snooping):在同一份历史数据上反复搜索,直到"发现"好看的东西。从1990年代的异象文献到今天的参数寻优器,这是量化行业三十年未愈的慢性病。
由此产生的问题
数据挖掘偏差与过拟合、多重检验的关系(同一家族怎么分工)?三道防线(预注册/诚实N/白噪声基准)怎么落地?
核心概念
家族分工:过拟合=模型对噪声的拟合(机制层);数据挖掘偏差=研究流程对同一数据的反复挖掘(流程层);多重检验=统计上的必然假阳性(数学层)——同一病灶的三个科室。三道防线:①预注册(研究前写死假设与规则——q-600协议的核心条款):把"探索"变"验证";②诚实N(记录全部尝试次数——q-510 DSR的输入):报告时按N折减("这是第47次尝试"应是报告第一行);③白噪声基准(q-507的噪声实验制度化):你的研究流程在纯随机数据上能"发现"多少显著——流程的测谎仪。三防线的层次:①防未试之先、②记已试之事、③测流程本身——层层递进。
为什么需要它
①给方法论命名的好处:知道它叫什么、属于哪科,才能对症下药——概念地图让防御系统化(本课程反复做的"命名"工作的意义);②防线是流程不是意志力:"我会小心"在第四十次尝试时失效——协议、日志、基准是不失效的;③历史纵深:从Lo与MacKinlay(1990)到DSR(2014)再到因子动物园复现危机(2020s)——这条病史证明它不是新手病而是行业结构性风险(你的防线价值因此更高)。
实际应用场景
落地清单:每份研究报告的header三行——假设(预注册版)、尝试数N、噪声基准结果;三行齐了再谈数字——这是本课程试图养成的终极汇报习惯。
与之前知识的联系
q-507(机制)/q-255(多重检验)/q-510(DSR)的统合篇;三防线分别内嵌于q-600(协议)、q-085(实验日志)、q-507(噪声实验)——这一题是它们的索引页。
⚠ 常见误解
- 我只跑了几次不算挖掘:N的计数包括参数变体、样本区间、因子方向的所有组合——诚实计数后多数人会吓一跳
- 预注册太学术不实用:它的最小版就是"跑数前把规则写进注释"——成本一分钟,防的是最贵的那类错误
- 白噪声基准通过了就安全:它测的是流程对"纯噪声"的敏感度——真数据上仍有非平稳等风险;防线是必要的不是充分的
🛠 本题实践任务
为你的研究流程跑一次白噪声基准(50次随机试验的发现率);统计你最近一个月的诚实N;把这两项加进你的报告header模板(三行制)。
💡 提示(先自己想5分钟再看)
发现率的修复路径:减少变体数/提高显著性阈值/要求机制故事——任选两条执行。
✅ 验收标准
一个基准读数+诚实N+新版header。你的研究报告从此自带"防挖掘认证"。
在你的浏览器内运行。首次需联网下载 Python;支持标准库和 Pyodide 提供的 NumPy、pandas 等包。行情抓取、系统文件访问和部分第三方库请在本地环境运行。输出自检仅比对结果关键词,不代替逻辑审查。
Python · 独立工作线程 · 执行限时10秒
🤖 AI导师
导师会先检查你的前置知识(回测过拟合机制、多重检验),再用案例、公式和代码帮助理解。此功能需要先启用服务。