它从三个地方进来
- 数据。一个从今天挂牌的东西里挑出来的工具池,排除了那些被摘牌、被并购或者崩掉的。在加密货币里,交易所经常摘掉交易对;一个在今天挂牌的交易对上做的测试,从来不会持有一个币穿过它的失败。
- 策略。当很多想法被测试过、而只有那些奏效的被保留和报告出来时,被公布的那一组就是一个生存者样本。这和数据窥探重叠:那些失败恰恰是本来可以纠正这幅图景的东西。
- 人。可见的成绩记录、公开的付款截图和成功故事,来自那些留下来的人。账户失败了的交易者很少公布,所以可见的样本描述的是一场抽奖的赢家,和描述一种技能一样多。
一个抛硬币的说明
给 100 个人一枚公平的硬币,让每个人去猜十次抛掷的结果。纯凭偶然猜对至少七次的概率是 176 ÷ 1,024 ≈ 17%,所以大约会有十七个人展示出 70% 或者更好的记录。
如果只去采访那十七个人,这个样本会让人觉得这是一群有技能的预测者;而另外那 83 个人,正是让这个结果变得毫无意义的那部分总体。这十七份记录里没有任何东西是假的。偏差完全在于「哪些记录到达了读者手里」。
在 Senzoukria 里
自动回测跑在你所选合约的 K 线上,所以哪些工具和哪些时期进入一项研究,是研究者的决定,而生存者风险就落在那个决定里。性能面板把每一次完成的回放时段和自动回测保留在它的列表里,每一次运行都带一个删除按钮;而把那些失败的运行删掉,就在你自己的记录里重新造出了生存者偏差。
Gauntlet 在它给夏普比率做紧缩时会数上一次扫描里的每一个配置,但它数不到你在更早的运行里尝试过又丢弃的那些想法。一份把被否决的想法和被保留的想法并列的研究记录,才是实际的对策。在加密货币图表上,历史是从交易所为你打开的那个交易对所公布的每日归档里重建的;一个归档没有被公布的日子会被列为缺失,而不是从另一个来源填上去,所以缺口是可见的,而不是被悄悄跳过。
常见错误
- 从当前按成交量排名靠前的交易对构建一个加密货币工具池,然后在好几年上测试它。
- 报告二十个尝试过的策略里奏效的那三个,而不报告那二十个。
- 用那些公开地用某个方法成功了的交易者去评判这个方法。
- 为了让结果列表看起来干净,就把亏钱的回测运行删掉。
相关内容
同一栏目
其他语言版本
常见问题
- 期货回测会有生存者偏差吗?
- 在主要股指合约的工具层面上更少,因为 ES 或者 NQ 的连续序列在整段时期里都存在。但偏差仍然留在策略的选择里,以及「研究哪些市场」这个选择里——而后者往往是因为它们最近表现好才被选中的。
- 生存者偏差和前视偏差有什么不同?
- 前视偏差是在一个测试内部使用了决策时点上还得不到的信息。生存者偏差是用一个只有在事后才知道的结果去挑选样本本身,比如哪些工具存活下来、或者哪些策略奏效了。两者都抬高结果,但走的是不同的门。