一份回测需要多少笔交易:我们对2,126笔做了重抽样

作者 chwoo · 加密货币交易7年。自2026年春起运行自动交易机器人。 · · 更新

做一个不舒服的实验:抛一枚公正的硬币十次。出现七次正面的情况相当常见,没有人会因此断定这枚硬币有魔法。 然而交易者常常看到一个策略在回测的十笔交易里赢了七笔,就断定自己找到了一个胜率70%的系统。

通常的做法是引用一下平方根法则然后就过去了。我们决定去量。我们挑了一个结果又大又明确的策略:BTC一小时线 上的布林带均值回归,它 做了2,126笔交易,赢下其中39.2%,亏掉账户的98.1%。然后我们问:如果只看这些交易里更小的一部分,它会告诉你什么?

一个胜率上盖着多厚的雾

对每个样本量,我们从那2,126笔真实交易里不放回地随机抽了2,000次,记录每个样本的胜率。5%和95%这两列是 90%的样本所落入的区间。真值在每一行都是39.2%。

样本量胜率 5%中位数胜率 95%区间宽度
10笔20.0%40.0%60.0%40.0个点
20笔20.0%40.0%55.0%35.0个点
30笔26.7%40.0%53.3%26.7个点
50笔28.0%40.0%50.0%22.0个点
100笔32.0%39.0%47.0%15.0个点
200笔34.0%39.0%44.5%10.5个点
500笔36.0%39.2%42.4%6.4个点
1,000笔37.4%39.2%41.1%3.7个点
每一行都是从同样的2,126笔交易里抽2,000次。策略真实的胜率在每一行都是39.2%。

在回测器里打开本文测量的那个策略 →

在十笔交易上,这个区间从 20.0%一直延伸到60.0%。同一个策略、同一个市场、同一段年份,唯一不同的是你恰好看了哪十笔。60%的胜率和20%的胜率,都是一个 39.2%的系统会普通地给出的结果。

宽度大体遵循平方根法则。从10笔到100笔是十倍的样本,区间从40.0个点缩到15.0个点,接近法则预测的大约三倍; 再往上五倍到500笔,就成了6.4个点。精度很贵:把雾减半,大约要四倍的交易。

一个亏掉98%的策略,三次里有一次看起来赚钱

胜率是这个问题的客气版本。同样的实验,这次读每个样本的收益,按本站默认的90%仓位做复利。

样本量收益 5%中位数收益 95%显示为盈利的样本
10笔-9.9%-1.5%+7.7%35.9%
20笔-18.9%-3.0%+11.0%38.4%
30笔-20.1%-4.4%+14.4%26.3%
50笔-29.1%-7.2%+16.1%30.0%
100笔-39.9%-17.7%+17.8%19.3%
200笔-56.8%-32.3%+10.8%10.7%
500笔-80.8%-60.6%-19.2%2.1%
1,000笔-93.2%-84.5%-64.5%0.0%
底下的策略亏掉98.1%。最后一列是这个样本量仍然显示出盈利的比例。

从上往下读最后一列。一个摧毁账户98.1%的策略,在十笔的样本里有35.9%显示盈利,在一百笔的样本里仍有19.3%。 要让这个数字归零,需要一千笔交易。如果你用二十笔交易分别检验十个想法,其中几个看起来像优势是理所当然的。 这不是运气差,这是你所选检验方式的算术。

这一列的抖动也值得指出来。十笔是35.9%,二十笔升到38.4%,三十笔又降到26.3%。这本身就是抽样噪声。哪怕是 用2,000次抽样做出来的测量值,也并不平滑。关于小数字的一切都不稳定,包括关于小数字的陈述本身。

注意中位收益随着样本变大从-1.5%恶化到-84.5%。那不是估计在变差,而是真相在抵达。一个亏钱策略的十笔交易 只亏一点,因为你只付了十次成本。全部2,126笔亏掉98.1%。

挑樱桃能买到什么

上面的样本是随机的。挑截图的人不是随机的。于是我们把一个N笔连续交易的窗口沿整段历史滑过去,在每个长度上 留下最好和最差的那个窗口。

窗口长度检查的窗口最好的窗口最差的窗口盈利的窗口最好窗口的胜率
10笔2,117+17.9%-17.7%34.9%80.0%
20笔2,107+27.0%-25.8%39.2%70.0%
30笔2,097+43.1%-30.2%25.2%70.0%
50笔2,077+38.9%-38.0%29.1%58.0%
100笔2,027+34.7%-52.0%21.1%50.0%
200笔1,927+38.7%-62.2%13.1%47.0%
500笔1,627-22.8%-83.2%0.0%42.2%
同一个亏钱策略的连续区间。它最好的30笔区间以70%的胜率带来+43.1%。

一个亏掉98.1%的策略,最好的三十笔区间是+43.1%,胜率70%。 最好的十笔区间胜率是80%。那一行里的每个数字都真实、可测、可复现,而且彻底误导人。营销截图就是用这个做的, 完全不需要造假。

有用的是最后一行。在连续500笔上,1,627个窗口里没有一个是盈利的,最好的区间是-22.8%。在200笔和500笔之间的某处,这个策略没地方躲了。这就是对标题那个问题的具体回答:至少 对这个策略,挑樱桃失效的地方是几百笔。

交易数和稳健不是同一件事

我们本以为交易数少的策略,周期窗口之间会最不一致,于是去查了。数据不支持这个想法。

策略交易数7年3年1年最大差距
金叉40+152.5%+62.7%+1.2%151.3个点
带趋势过滤的RSI80+6.3%+5.1%+0.5%7.1个点
超级趋势动量376+100.2%+24.2%-4.9%106.7个点
RSI 30进70出420-68.3%-25.5%-35.4%72.6个点
唐奇安突破477-33.1%+50.9%-26.3%129.0个点
RSI 超卖反弹676-84.5%-52.3%-39.5%103.7个点
MACD交叉1,743-97.6%-65.0%-24.4%116.2个点
布林带均值回归2,126-98.6%-61.5%-51.2%105.1个点
按交易数从少到多排列。最大差距那一列并不跟着这个顺序走。

只有40笔交易的金叉差距最大,151.3个点,符合预期。但2,126笔的布林带是105.1个点,1,743笔的MACD是116.2个点, 并没有更好。而表里最小的差距7.1个点,属于一个只有 80笔交易 的策略。

解释是这两列在量不同的东西。窗口之间的差距也取决于所涉收益的量级:带趋势过滤的RSI在任何窗口里都几乎不动, 所以它的窗口之间没法差太多。样本量约束的是估计值里的噪声,前面两张表把这一点显示得很干净。但它不会让不同 的年代彼此同意。足够的交易数,和跨市场状态的一致,是两个分开的要求,一个策略可以通过其中一个,同时在另一个上落榜。

真正管用的那个检验

如果大样本定不了案,什么能定?把同样的规则拿到别的地方跑。下面是同一个布林带策略,规则一字不改,跑在 五个币上。

币种交易数胜率收益最大回撤
BTC2,12639.2%-98.1%98.8%
ETH2,87537.3%-100.0%100.0%
SOL3,10937.2%-100.0%100.0%
XRP3,04836.5%-100.0%100.0%
DOGE3,28336.6%-100.0%100.0%
同样的规则,五个市场,合计超过一万四千笔交易。判决不取决于你挑了哪个币。

五个市场,一万四千多笔交易,一个答案。把它和前面那个+43.1%的窗口放在一起,证据和轶事的区别就看得见了。 样本外检验只要点一下,却能回答一个更大的样本内检验回答不了的问题。

那该怎么用

  • 低于大约30笔,不要形成看法。 在十笔上量出来的区间,在真值周围有40个点厚。
  • 把几百笔当成提出一个主张的门票钱。 那是上面挑樱桃开始失效的地方,也是胜率区间收窄到个位数的地方。
  • 预期你那些小检验里有三分之一会碰巧好看。 如果你用二十笔跑了十个想法,其中最好的那个什么也没告诉你。
  • 读周期表,不要只读总数。 一个窗口之间互相矛盾的策略,有一个任何交易数都修不好的问题。
  • 换别的币和别的周期再跑一遍。 这是整轮扫描里最便宜也最有决定性的检验。
在信任任何回测之前,先问:有多少笔交易,横跨多少个不同的市场和年代。「四十笔,全都来自去年」是故事,不是 统计。本文那个策略确实有过一段真实的+43.1%,也确实有一段真实的-98.1%历史,而这两个数字里只有一个能描述 持有它是什么感觉。

参考资料

阅读很好,实测更好。用币安7年数据免费运行一次真实回测。

试用回测器