交易系统 · 第 9 节

回测的坑:幸存者偏差在这里更严重

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

一句话速览 已经归零和下架的币种不会出现在你的数据里,而它们曾经占了很大比例。
这节课要你带走的 幸存者偏差在这个市场的回测里为什么格外严重、它会让结果偏离多少,以及三种缓解办法。

这个市场的回测有一个传统市场没那么严重的问题: 你手上的历史数据,只包含活到今天的那些币。

消失的那些去哪了

三种消失方式:

一是归零。价格跌到接近零, 纯投机标的这一类历史上大量如此

二是下架。成交量长期不足,平台移除交易对 (见 C3-11)。

三是项目停止运作。团队解散、合约不再维护。

三种情况下,那个币的历史数据通常也从主流数据源里消失了。 于是你回测时看到的样本,是一个被筛选过的样本。

这会让结果偏多少

没有一个通用的数字,但可以估个方向:

如果你的策略是「在小市值币上找机会」, 那么偏差会非常大,因为消失率最高的正是这一类。

你的回测在说「这个策略在这些币上有效」, 而它没告诉你的是:还有一批币,同样的策略会让你归零, 只是它们已经不在数据里了。

如果策略只做少数几个主流币,偏差会小得多, 因为那几个的存活率高。

三种缓解办法

只在存活率高的品种上回测

把范围限制在少数几个长期存在的主流币。

这是最简单也最有效的一条。 代价是策略的适用范围变窄, 但那个「变窄」本来就是真实的约束, 只是之前被幸存者偏差掩盖了。

手工补上已知的失败案例

找几个已经归零或下架的币,把它们的数据加进回测。

数据可能不完整,但哪怕只加几个, 也能看出策略在这类情况下的表现。 通常结果会难看很多。

用仓位规则兜住这个偏差

既然无法完全消除,就假设回测结果是乐观的。

具体做法:小市值币的仓位 按可能归零来定, 不管回测结果多好。

一个相关的陷阱

用「当前的币种列表」去回测过去。

比如取今天市值前二十的币,回测过去三年。 问题在于三年前的前二十跟今天不是同一批, 而你选中的这批是「三年后还在前二十」的那些。

这个偏差可能非常大, 因为它等于用了未来信息。

回测的样本必须是「当时能选到的」,不是「现在看起来该选的」。

今天就做这一件事

如果你做过回测,检查一件事:你的币种列表是怎么来的?

如果是「现在市值排名前多少」,那么这个回测用了未来信息,结果会明显偏乐观。

带走这一条:归零、下架、停止运作的币会从数据源里消失,所以回测样本是被筛选过的,而这个偏差在小市值币上最大。更隐蔽的陷阱是用当前的币种列表去回测过去,那等于用了未来信息。