交易系统 · 第 11 节

参数优化与过拟合

建立你自己的规则 · 第 11 页。

一句话速览 把最优参数上下各挪一格看结果。左右邻居都在亏钱的最优参数,几乎肯定是噪音。
这节课要你带走的 为什么参数越多越容易过拟合、一个能算出来的假阳性概率,以及怎么判断参数是不是被优化过头了。

回测跑出来的策略,参数一改结果就变。 于是很自然地会去找「最好的那组参数」。 这一节讲为什么这个动作本身就在制造问题。

一个能算出来的数

假设某一组参数纯靠运气跑出漂亮结果的概率是 5%。 那你试 100 组参数,至少有一组「看起来很好」的概率是多少?

交互 · 参数搜索的假阳性概率
总组合数 0
至少一组假阳性 0
期望假阳性个数 0
 
这个组件算的不是「策略好不好」, 而是「就算策略完全无效,你也几乎必然能搜出一组漂亮参数」。 参数每多一个,组合数是乘上去的,不是加上去的。

这在加密上更严重

三个原因让同样的搜索在这个市场更容易出假阳性:

一是历史短。多数币的可用历史只有几年, 样本越少,噪音越容易被当成信号。

二是波动大。 日均振幅接近 6%随机波动本身就能造出漂亮的净值曲线。

三是结构变化快。 这个市场几年前和现在的参与者构成、 产品结构、监管环境都不一样, 在旧结构上优化出来的参数,在新结构里没有理由继续成立。

怎么判断参数被优化过头了

参数敏感性检查

把最优参数上下各挪一点(比如 ±20%),看结果变化多大。

如果最优参数是个孤峰,稍微一动就崩,那是拟合噪音。

真实的规律应该是一片平原:附近的参数结果都还行, 只是没那么亮眼。

样本外检验

用一段数据优化参数,在另一段完全没参与优化的数据上验证。

加密的历史短,这个切分会很吃紧, 但正因为吃紧才更要做。

参数个数上限

一个经验做法是让参数个数远少于你有的独立样本数

三个参数的策略比八个参数的策略更可能是真的, 哪怕后者回测更好看。

一个更根本的角度

参数优化在回答「哪组数字在过去表现最好」, 但你真正想知道的是「这个逻辑成不成立」。

如果一个策略的有效性依赖于参数精确到某个值,那它多半没有逻辑,只有数字。

所以更好的顺序是:先说清楚这个策略为什么应该有效 (它捕捉的是什么行为、什么结构), 然后用参数去表达那个逻辑,而不是反过来用参数去发现逻辑。

逻辑先行的策略,参数通常是拍出来的整数, 而且换个附近的值也一样能用。这不是巧合,是逻辑成立的表现。

今天就做这一件事

用组件按你实际试过的参数量算一遍假阳性概率。

然后做敏感性检查:把最优参数各挪 20%,看回测结果掉多少。

如果掉得很惨,你找到的不是规律,是这段历史的噪音形状。

带走这一条:参数每多一个组合数是乘上去的,所以就算策略完全无效,搜索也几乎必然能找出一组漂亮参数。加密上更严重:历史短、波动大、结构变化快。判断方法是敏感性检查和样本外检验。更根本的是顺序:先说清逻辑再用参数表达它,而不是用参数去发现逻辑。