参数优化是量化策略里非常容易走偏的一步。很多人不断调参,调出一个历史最优参数,实盘直接失效。本质就是过拟合。
参数优化的目的不是调出历史最高收益,是找出稳定、鲁棒、未来还能大概率有效的参数区间。
16.1 参数扫描的正确方式:参数平面热力图
调参不能只找“最高点”,要看整个参数平面的分布。
参数热力图
两个参数为横纵轴,每个坐标对应策略夏普/收益,画出热力图。 看整个平面的分布,不是只找最高点。
好的参数区域特征
- 高原区:一大片区域表现都不错,不是只有一个尖峰。
- 连续变化:参数慢慢变,绩效慢慢变,不是断崖式变化。
- 样本外一致:训练集和样本外的高表现区域大致对应。
坏的参数区域特征
- 尖峰:只有一个点特别高,周围都很差。
- 断崖:参数动一点,绩效掉很多。
- 样本外完全错位:训练集最高点,样本外表现很差。
选参数选“高原区”的中心,不选最高点。最高点大概率是过拟合出来的巧合。
16.2 过拟合的八大识别信号
参数优化是不是过拟合,八个信号判断。
- 参数高度敏感:参数微调5%-10%,绩效大幅下滑;
- 只有孤立尖峰:参数热力图只有单个尖峰,没有平坦高原;
- 训练集远好于验证集:训练集夏普比验证集高50%以上;
- 样本外快速衰减:样本外绩效比训练集下降一半以上;
- 交易次数变少:优化之后信号大幅减少,刚好挑出来历史上几次大行情;
- 逻辑无法解释:最优参数明显不符合常识,比如3天动量比20天好很多,讲不通;
- 越优化实盘越差:参数越调,回测越好,实盘越差;
- 极端行情表现突变:正常行情很好,极端行情直接崩。
满足三条以上,大概率过拟合,参数要重新选。
16.3 鲁棒性测试:参数扰动测试、蒙特卡洛
好的策略参数,应该具备鲁棒性。也就是参数稍微变一点、价格稍微扰动,结果不会差很多。
参数扰动测试
最优参数上下浮动10%-20%,观察绩效变化。 如果浮动10%,绩效下降不超过20%,算鲁棒。 如果浮动一点直接崩塌,说明参数过拟合。
蒙特卡洛噪声测试
给价格序列加入合理的随机噪声,模拟滑点、报价误差,看策略表现。 加入千分之几的噪声,绩效就大幅下降,说明实盘会更差。 鲁棒的策略,少量噪声不影响结果。
极端情景测试
极端行情、黑天鹅、流动性枯竭场景,测试策略底线。 好的策略极端行情可以亏,但不能爆仓。
鲁棒性比历史最优收益重要的多。实盘永远有滑点、有误差、有极端情况。
16.4 禁止的操作:未来函数、滚动窥视
很多调参的人不知不觉作弊,自己骗自己。
禁止全样本参数优化
用全部历史数据调出最优参数,再跑全段回测,结果肯定好看,实盘肯定没用。 相当于偷看答案再考试。
禁止滚动窥视
每次滚动调参,都用“未来”的参数优化“过去”的交易,相当于逐段未来泄露。 实盘不可能提前知道未来最优参数。
正确优化方式
- 纯样本外参数:只用调参时间点之前的数据调参,后面的交易只用当时的参数;
- 滚动优化:每次到调参时间点,只用之前的数据优化,然后用这个参数跑下一段时间。
- 参数固定:选好鲁棒区间参数,长期固定,不反复调参。
参数优化的最高境界:知道大概什么区间有效,就够了。精确到小数点后几位的最优参数,都是拟合出来的巧合。
16.5 最终参数选择原则:选参数稳定区,不要选最高点
最终选参数,遵守几个原则。
- 选高原不选尖峰:选参数热力图里表现都不错的平坦区域中心,不选那个最高点。
- 留有余地:选偏保守的参数,不选最激进的。
- 样本外验证:最优参数在样本外表现依然稳定。
- 逻辑自洽:参数大小符合商业逻辑,不是反常识的。
参数是策略的骨架,鲁棒比完美重要。
本章实战笔记
- 参数优化不是调越高越好。调出历史最高收益的参数,大概率是过拟合陷阱。
- 看热力图不看单点。高原区的参数才是实盘能用的。
- 鲁棒性比最优重要。实盘有滑点有误差,太精致的参数用不了。
- 禁止全样本调参。偷看答案的考试,考满分也没用。
本章核心公式卡
参数鲁棒性:参数变动±10%,绩效变动<20%,认为鲁棒 过拟合识别:尖峰+断崖+样本外错位+参数敏感
正确调参方式:滚动优化,只用历史数据,不窥视未来
本章实战清单
参数优化清单
- 双参数热力图扫描,不做单参数遍历 - 观察高原区与尖峰,不选最高点 - 参数扰动测试,检验鲁棒性 - 蒙特卡洛噪声测试 - 极端情景压力测试
过拟合排查清单
- 训练集验证集样本外三段对比 - 参数敏感性测试 - 交易逻辑合理性检查 - 样本外绩效衰减程度 - 越调越差立即停止