一份回测需要多少笔交易:我们对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个点 |
在十笔交易上,这个区间从 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%的策略,在十笔的样本里有35.9%显示盈利,在一百笔的样本里仍有19.3%。 要让这个数字归零,需要一千笔交易。如果你用二十笔交易分别检验十个想法,其中几个看起来像优势是理所当然的。 这不是运气差,这是你所选检验方式的算术。
这一列的抖动也值得指出来。十笔是35.9%,二十笔升到38.4%,三十笔又降到26.3%。这本身就是抽样噪声。哪怕是 用2,000次抽样做出来的测量值,也并不平滑。关于小数字的一切都不稳定,包括关于小数字的陈述本身。
挑樱桃能买到什么
上面的样本是随机的。挑截图的人不是随机的。于是我们把一个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% |
一个亏掉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个点 |
| 带趋势过滤的RSI | 80 | +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在任何窗口里都几乎不动, 所以它的窗口之间没法差太多。样本量约束的是估计值里的噪声,前面两张表把这一点显示得很干净。但它不会让不同 的年代彼此同意。足够的交易数,和跨市场状态的一致,是两个分开的要求,一个策略可以通过其中一个,同时在另一个上落榜。
真正管用的那个检验
如果大样本定不了案,什么能定?把同样的规则拿到别的地方跑。下面是同一个布林带策略,规则一字不改,跑在 五个币上。
| 币种 | 交易数 | 胜率 | 收益 | 最大回撤 |
|---|---|---|---|---|
| BTC | 2,126 | 39.2% | -98.1% | 98.8% |
| ETH | 2,875 | 37.3% | -100.0% | 100.0% |
| SOL | 3,109 | 37.2% | -100.0% | 100.0% |
| XRP | 3,048 | 36.5% | -100.0% | 100.0% |
| DOGE | 3,283 | 36.6% | -100.0% | 100.0% |
五个市场,一万四千多笔交易,一个答案。把它和前面那个+43.1%的窗口放在一起,证据和轶事的区别就看得见了。 样本外检验只要点一下,却能回答一个更大的样本内检验回答不了的问题。
那该怎么用
- 低于大约30笔,不要形成看法。 在十笔上量出来的区间,在真值周围有40个点厚。
- 把几百笔当成提出一个主张的门票钱。 那是上面挑樱桃开始失效的地方,也是胜率区间收窄到个位数的地方。
- 预期你那些小检验里有三分之一会碰巧好看。 如果你用二十笔跑了十个想法,其中最好的那个什么也没告诉你。
- 读周期表,不要只读总数。 一个窗口之间互相矛盾的策略,有一个任何交易数都修不好的问题。
- 换别的币和别的周期再跑一遍。 这是整轮扫描里最便宜也最有决定性的检验。
参考资料
- Sample size determination — How wide an estimate stays when the sample is small.
- Overfitting