历史里最漂亮的参数,实盘里最先失效:策略过拟合的出生过程 图 1
历史里最漂亮的参数,实盘里最先失效:策略过拟合的出生过程 · 图 1

一个常见的产品叙事是这样开头的:我们对某策略的历史表现做了全面回测,遍历了参数空间,在最优组合下,那段历史的年化收益达到一个惊人的数字,回撤小、曲线平滑。每一个环节听起来都专业,合起来却可能是最危险的一句话。遍历上千组参数挑出的最优,与遍历十组参数挑出的次优相比,前者更像一场精心挑选的巧合:样本够大,总有一组曲线恰好贴合那段行情的形状,贴合得仿佛天生就该它赚钱。

这个过程的学名是过拟合,链上环境给它配了更肥的土壤。第一层是多重测试的算术:你测的独立组合越多,最优那个靠运气成分上榜的概率越大,这不需要谁作弊,纯是概率在起作用。缓解它的唯一办法不是更细的网格而是更诚实的对照,把测试组数作为公开信息,把同一策略在多段互不重叠历史上的表现并排放,真正的规律经得起分段复现,巧合只会出现在被挑出来的那一段。

第二层断点是机制切换。链上策略的规则变量里有太多东西不是平稳序列:某条链的费率结构改版、清算引擎换了拍卖方式、主流池子从全范围切到集中流动性、某个大型做市商进或退。参数在旧机制下磨得再亮,新机制的间隙一来,回测里最赚钱的那个组合会最先失效,因为它拟合的恰恰是旧机制特有的毛刺。判断方法朴素到残酷:问自己每个关键参数在为什么行情现象调优,如果那个现象已经不会再出现,这条腿已经废了。

第三层是链上成本的简化。回测引擎常用的理想化假设,交易即时成交、滑点按常数计、奖励按时到账、赎回随时可行,每一条都在给策略发补贴。真实执行里,大额进出对池子价格的推动、批次等待期的净值漂移、激励代币计价与变现摩擦,会像砂纸一样打磨掉曲线的光泽。对链上策略做回测,成本项宁可保守也要逐项列出,缺项的成本假设都会变成实盘里新出现的亏损科目。

怎么识别一组参数是稳健还是碰巧,有两个可操作的角度。一个看参数邻域:把关键参数上下挪一档,邻域表现平滑的策略,即使峰值不惊人也有真结构可言;峰值孤零零立着、挪一步就塌方的,多半在拟合噪音。另一个看参数数量:同样一段历史,能用两个规则讲清的收益来源,比七个参数调出来的更可能是规律本身,多出来的参数每加一个,都更像在花钱雇噪音进编。

对读者,这套方法可以压缩成三问:回测用了哪段样本、测了多少组参数、样本外表现有没有一并给出;关键参数各自对应什么行情现象、那些现象还会不会来;成本假设逐项列了没有。三问问不出答案的策略展示页,把它当宣传材料,不当研究报告。对自己手工调参数的链上操作,同样的纪律反过来用:每当你为一个更优的历史数字改动设置,先想想你改的是规则还是运气。

还有一个便宜的自测法:给策略参数做一次删除测试。把最优组合里的某个参数拿掉或换成取整的粗值,看历史表现掉多少。掉得少,说明那个参数本来就不承载信息,留着只是给噪音盖章;掉得多,才值得追问它在拟合什么行情现象。同样的测试可以横向用在整条曲线上,把最好的三个月删掉重算,多数过拟合策略的收益排名会立刻洗牌,能 经得住删节的规则才有一点规律的样子。这些动作都不需要新的数据源,只需要你愿意把自己最欣赏的那段历史当成嫌疑人而不是成绩单。

本文只做方法论说明,示例均为原理演示而非任何策略的实际表现,不构成投资建议,不对任何策略的历史回测结果负责或外推。链上协议与市场机制持续变化,参数有效性以你可复现的样本与成本假设为准。