
参数越多越容易自欺欺人
程序化交易里有个反直觉的真相:参数越多,模型在历史数据上越漂亮,实盘亏得越惨。这就像给一张照片修图,修得越精细,越不像真人。多参数模型很容易掉进过拟合的坑,历史走势被完美拟合,未来行情却完全失效。
做股票和期货的人常犯一个错:拿一个均线策略,调出十几个参数,什么周期、阈值、止损倍数、加仓比例,全用电脑跑一遍最优。结果回测曲线像火箭,实盘像滑梯。问题不在策略逻辑,在优化方法。

先砍参数,再谈优化
优化之前先做减法。一个模型超过五个参数,就要警惕。股票的多因子模型可以有很多因子,但每个因子的权重参数不能太多。期货的CTA策略,核心参数通常只有两三个:趋势周期、波动率过滤、仓位系数。
参数分两类。一类是逻辑参数,比如均线周期代表趋势跟踪的敏感度,必须保留。另一类是拟合参数,比如为了平滑曲线加的小数点后三位的阈值,这种能删就删。保留逻辑参数,删掉拟合参数,优化空间自然变小。
样本外测试是底线
多参数优化最怕没有样本外数据。把历史数据切成三段:训练段、验证段、测试段。训练段用来找参数,验证段用来挑参数,测试段用来确认参数。很多人只做前两步,测试段直接拿验证段的结果,这是耍流氓。
更严格的做法是滚动窗口优化。比如用过去两年的数据优化参数,然后拿接下来三个月做样本外。时间往前走,窗口跟着滚。这样能看出参数在不同市场环境下的稳定性。期货市场风格切换快,滚动窗口比一次性切分更靠谱。
参数平原比参数峰值更值钱
优化时别盯着最高收益的那个参数组合。要看参数平原。把参数A和参数B做成热力图,收益高的区域如果是一个小点,那是悬崖。如果是一片高原,哪怕收益不是最高,也值得用。
股票策略里,均线周期从20到25,收益变化不大,这叫平原。从20到21,收益翻倍,这叫尖峰。尖峰参数实盘必死,因为市场稍微一变,参数就滑出有效区。平原参数有容错空间,实盘更稳。
鲁棒性检验要模拟最差情况
多参数模型优化完,做三件事。第一,参数扰动测试。把每个参数上下浮动10%,看收益是否大幅回撤。第二,交易成本敏感度测试。把手续费和滑点调高50%,看策略是否还能盈利。第三,随机起点测试。把回测起始日期换几个不同时间,看结果是否一致。
期货策略对滑点特别敏感。一个高频策略优化出夏普3.0,滑点加一倍变成0.5,这种参数没有实战价值。股票策略对成交量冲击更敏感,大资金优化出来的参数,小资金能用,大资金一跑就变形。
用业务逻辑锁死参数范围
纯数学优化容易走火入魔。参数范围要符合业务逻辑。做螺纹钢期货,趋势周期不会小于5分钟,也不会大于20天。做A股股票,均线周期不会小于3天,因为T+1制度限制了短线频率。
把逻辑边界写进优化约束。比如波动率过滤参数,不能小于0.5%,因为低于这个值全是噪音。比如仓位系数,不能超过1.5,因为期货杠杆已经很高。这些边界不是拍脑袋,是交易制度、品种特性、资金规模共同决定的。
接受次优解,放弃全局最优
多参数优化最大的心理障碍是舍不得。明明有一个参数组合收益高20%,为什么要选那个收益低的?因为那个高收益组合的夏普比率低、最大回撤大、参数敏感度高。实盘里,回撤控制比收益重要十倍。
股票多因子模型里,因子权重优化到极致,不如等权配置。期货CTA策略里,参数优化到最优,不如固定几个经典参数。市场不是数学题,没有唯一解。接受次优解,反而能活得更久。
优化频率要低,不是越高越好
参数不是每天都要调。每月优化一次,甚至每季度优化一次,比每天优化更稳定。高频优化会让模型追逐短期噪音,参数频繁跳变,交易成本暴增。
股票策略通常每年优化一次,因为市场风格切换以年为单位。期货策略可以每季度优化一次,因为商品周期更短。优化频率本身也是一个参数,这个参数要基于策略逻辑,不能基于回测收益。
组合优化比单模型优化更有效
与其把一个模型优化到完美,不如做三个逻辑不同的模型,每个模型参数都简单,然后等权组合。股票里,价值、动量、质量三个因子组合,比一个多因子模型优化到死更稳。期货里,趋势、套利、反转三个策略组合,比一个多参数趋势策略更抗风险。
组合优化不追求单模型最优,追求整体夏普比率最大。单个模型可以接受次优参数,只要与其他模型相关性低。这样整体资金曲线更平滑,回撤更小,实盘心态更好。
程序化交易的优化终点是简化
多参数优化做到会发现最好的策略往往最简单。一个双均线策略,两个参数,优化空间不大,反而能长期盈利。一个多参数机器学习模型,几十个参数,历史回测完美,实盘一塌糊涂。
优化不是为了找到最赚钱的参数,是为了找到最稳健的参数。稳健意味着参数少、逻辑清晰、样本外表现一致、对成本不敏感。做到这些,参数优化才算成功。期货和股票都一样,市场奖励的是耐心和纪律,不是数学技巧。