参数优化与过拟合
回测跑出来的策略,参数一改结果就变。 于是很自然地会去找「最好的那组参数」。 这一节讲为什么这个动作本身就在制造问题。
一个能算出来的数
假设某一组参数纯靠运气跑出漂亮结果的概率是 5%。 那你试 100 组参数,至少有一组「看起来很好」的概率是多少?
这在加密上更严重
三个原因让同样的搜索在这个市场更容易出假阳性:
一是历史短。多数币的可用历史只有几年, 样本越少,噪音越容易被当成信号。
二是波动大。 日均振幅接近 6%, 随机波动本身就能造出漂亮的净值曲线。
三是结构变化快。 这个市场几年前和现在的参与者构成、 产品结构、监管环境都不一样, 在旧结构上优化出来的参数,在新结构里没有理由继续成立。
怎么判断参数被优化过头了
参数敏感性检查
把最优参数上下各挪一点(比如 ±20%),看结果变化多大。
如果最优参数是个孤峰,稍微一动就崩,那是拟合噪音。
真实的规律应该是一片平原:附近的参数结果都还行, 只是没那么亮眼。
样本外检验
用一段数据优化参数,在另一段完全没参与优化的数据上验证。
加密的历史短,这个切分会很吃紧, 但正因为吃紧才更要做。
参数个数上限
一个经验做法是让参数个数远少于你有的独立样本数。
三个参数的策略比八个参数的策略更可能是真的, 哪怕后者回测更好看。
一个更根本的角度
参数优化在回答「哪组数字在过去表现最好」, 但你真正想知道的是「这个逻辑成不成立」。
所以更好的顺序是:先说清楚这个策略为什么应该有效 (它捕捉的是什么行为、什么结构), 然后用参数去表达那个逻辑,而不是反过来用参数去发现逻辑。
逻辑先行的策略,参数通常是拍出来的整数, 而且换个附近的值也一样能用。这不是巧合,是逻辑成立的表现。
今天就做这一件事
用组件按你实际试过的参数量算一遍假阳性概率。
然后做敏感性检查:把最优参数各挪 20%,看回测结果掉多少。
如果掉得很惨,你找到的不是规律,是这段历史的噪音形状。