本节摘要:参数优化是量化研究里最甜蜜的环节——扫一眼参数网格,净值曲线立刻改头换面;它也是最危险的环节——你几乎必然会把噪音拟合成规律。本节讲清过拟合的机理、参数高原与尖峰的判别、滚动前推验证的操作,为下一节的双均线复盘备好全部方法论弹药。
同一组参数,在不同语境下扮演三个角色。作为自由度,每多一个可调参数,策略对历史数据的拟合能力就强一分——这与统计学里"模型越复杂越容易过拟合"是同一条定律。作为假设的一部分,某些参数有明确的经济学含义:均线周期对应信息扩散的速度、止损倍数对应波动率的容忍度,此时参数取值应有先验范围,脱离范围的"最优值"本身就是危险信号。作为工程选择,落在参数高原内部的任何一组临近参数都应该表现相近——如果真是策略逻辑在工作,它不该对参数敏感到小数点。理解三重身份,就理解了优化的正确姿势:不是找到最好的那一组,而是确认逻辑在参数空间里是否连片成立。
假设策略其实毫无预测力,你在两百组参数里挑表现最好的那组——纯粹靠运气,这组的样本内表现也几乎必然可观。试验次数越多,"碰巧最好"越好看。这就是多重检验的陷阱:每一次回测都是一次抽奖,抽得多了,总有一张看起来像中奖。它的推论很反直觉:回测报告里没有展示失败参数的策略,比展示了失败参数的策略更可疑——后者至少让你看到了运气的分布。
判别手段从粗到细有三层。第一层看参数曲面:把夏普比率画成参数的函数,宽缓的高原意味着逻辑在邻域内稳定,尖锐的针峰意味着那是运气的坐标。第二层做扰动测试:把最优参数上下各挪一档,性能若悬崖式下跌,宁可不用。第三层才是样本外验证——把数据在时间上切开,参数只用过去定,未来只用来考试。
滚动前推(Walk-Forward)的流程可以用一句话说清:用过去五年定参数,考未来一年;窗口整体前移,重复多次;把每段"考试"的成绩拼接起来,才是这个策略真正的成绩单。它同时回答两个问题:参数的时效性有多长,以及策略在"参数定型之后"的世界里表现如何。代价是对数据量的要求成倍增长——样本不足时,每段窗口都太短,考试本身的噪音会淹没结论。
滚动前推验证骨架: 窗口 = 5年训练 + 1年测试, 步长 = 1年 对每个滚动位置: best = 在训练段扫描参数, 按既定目标函数选出参数组 score = 在紧随的测试段用 best 参数回测 (不调整任何设置) 记录 (best参数, score) 汇总: 测试段成绩拼接 = 样本外净值 警讯: 各段最优参数跳变剧烈 / 样本外成绩显著劣于样本内
三种验证手段的适用场景对比:
| 手段 | 回答的问题 | 主要局限 |
|---|---|---|
| 参数曲面 | 逻辑是否连片成立 | 高维参数只能逐对切片观察 |
| 扰动测试 | 最优点是否孤立 | 无法发现整片区域共同过拟合 |
| 滚动前推 | 定型后是否依然有效 | 消耗样本大,短窗口噪音高 |
| 蒙特卡洛扰动 | 结论对随机路径的依赖度 | 扰动方式本身引入假设 |
⚠️ 常见坑:把"样本外测试"做了很多轮,每轮失败后回去改策略,直到样本外也好看——这等于把样本外数据用成了训练数据。样本外考试只有一次发布权,反复补考的成绩不算数。
把验证往前推一步:不确定性本身应该进入策略设计。滚动验证给出的不是一条样本外净值,而是一个成绩分布——分布的宽度就是策略表现的不确定度。保守的做法是按分布的下沿做资金规划:如果一个策略在参数定型后的样本外表现分布是"年化跑赢零到八个百分点、可能为负",那么仓位与预期都应该按谨慎端设定,而不是按样本内的漂亮数字。这个思路会在第五章的仓位演练里再次出现:验证的产出不是自信,而是校准后的谦卑。
练习读图。假设某突破策略有两个参数:入场通道宽度与持仓天数。扫描后得到三类典型形态。形态一:曲面在中心区域宽缓隆起,中心与边缘的差距平缓——这是健康的高原,说明逻辑对参数不敏感,选中心附近任意一组即可,不必纠结"最优"。形态二:曲面整体平坦,只有一座孤峰突起——这是最危险的形态:孤立的高点几乎必然是运气坐标,即使它在样本内一骑绝尘。形态三:曲面单调爬升,最优点贴着参数搜索的边界——这往往说明搜索范围设小了,但更重要的提示是:继续扩大概率只会找到拟合更狠的参数,先回来检查逻辑再说。三种形态对应三种决策,读曲面的功夫就是把"哪个参数最好"这个问题,升级成"这个逻辑在参数空间里长什么样"。前者只有数字,后者才有证据。
问:参数少就一定安全吗? 参数少只是降低了过拟合的自由度,不等于免疫——单参数策略在长样本上反复搜索,照样能把运气搜出来。关键始终是试验总次数与验证纪律,参数个数只是其中一个变量。
问:滚动验证的训练窗口取多长合适? 取决于参数的时效性假设。窗口长,参数估计稳但反应慢;窗口短,适应快但噪音大。务实做法是取策略逻辑对应的市场周期:日内策略用月级窗口,中低频策略用年级窗口,再用两三种窗口长度各跑一遍,结论一致才可信。
问:贝叶斯优化与遗传算法这类智能搜索,能绕开过拟合吗? 不能。智能搜索只是更高效地爬山,山是同一座——试验更聪明,反而可能在更少次数内更精准地钉住运气坐标。搜索方法升级的同时,验证纪律必须同步升级,两者是同向放大的关系而非互相抵消。
问:验证集与测试集要分开吗? 严格的研究流程分三段:训练段定参数、验证段选模型与结构、测试段只在最终报告前打开一次。多数团队合并后两段,代价是结构与超参的选择污染了最终成绩。数据充裕时保持三段,紧张时至少守住"测试段只开一次"的底线。
问:策略迭代多轮后,样本外早就被间接用过了怎么办? 这是所有实盘研究者的共同困境——诚实的做法是记录每轮迭代动用过哪些数据段,并对最终版本的预期表现打折:动用越多次,预期与样本内表现的差距应假设得越大。永远保留一段从未参与任何决策的"封存数据",在新版本上线前一次性检验,是对抗慢性污染的最后手段。
💡 关键直觉:过拟合无法被事后识破——一条过拟合的净值曲线与一条真实的净值曲线在纸上毫无区别。唯一的防线是流程:参数怎么选的、试过多少次、样本外什么时候第一次被看到,全程留痕。
方法论备齐了。下一节进入案发现场:看一个双均线策略如何从"惊艳"到"现形"的完整复盘。