How Many Trades Does a Backtest Need? We Resampled 2,126

Written by chwoo · Crypto trader, 7 years. Running an automated futures bot since spring 2026. · · updated

Here is an uncomfortable experiment: flip a fair coin ten times. Reasonably often you will get seven heads. Nobody would conclude the coin is magic. Yet traders routinely see a strategy win 7 of its 10 backtested trades and conclude they found a 70%-win-rate system.

The usual response is to quote the square-root rule and move on. We would rather measure it. So we took a strategy with a large, unambiguous result, Bollinger mean reversion on BTC hourly candles, which makes 2,126 trades, wins 39.2% of them and loses 98.1% of the account, and then asked what a smaller sample of those same trades would have told you.

How much fog sits around a win rate

For each sample size we drew 2,000 random samples from those 2,126 real trades, without replacement, and recorded the win rate of each. The 5th and 95th percentile columns are the band that 90% of samples fell inside. The true value is 39.2% throughout.

Sample sizeWin rate, 5thMedianWin rate, 95thBand width
10 trades20.0%40.0%60.0%40.0pp
20 trades20.0%40.0%55.0%35.0pp
30 trades26.7%40.0%53.3%26.7pp
50 trades28.0%40.0%50.0%22.0pp
100 trades32.0%39.0%47.0%15.0pp
200 trades34.0%39.0%44.5%10.5pp
500 trades36.0%39.2%42.4%6.4pp
1,000 trades37.4%39.2%41.1%3.7pp
2,000 random draws per row from the same 2,126 trades. The strategy's real win rate is 39.2% in every row.

Open the strategy this guide measures in the backtester →

At ten trades the band runs from 20.0% to 60.0%. The same strategy, the same market, the same years; only which ten trades you happened to look at. A 60% win rate and a 20% win rate are both ordinary outcomes of a 39.2% system.

The widths do roughly follow the square-root rule. Going from 10 trades to 100 is ten times the sample and cuts the band from 40.0 to 15.0 points, close to the factor of about three the rule predicts; another five times the sample, to 500, brings it to 6.4. Precision is expensive: each halving of the fog costs about four times the trades.

A strategy that loses 98% looks profitable one time in three

Win rate is the polite version of the problem. Here is the same experiment reading the return of each sample instead, compounded at this site's default 90% position size.

Sample sizeReturn, 5thMedianReturn, 95thSamples that showed a profit
10 trades-9.9%-1.5%+7.7%35.9%
20 trades-18.9%-3.0%+11.0%38.4%
30 trades-20.1%-4.4%+14.4%26.3%
50 trades-29.1%-7.2%+16.1%30.0%
100 trades-39.9%-17.7%+17.8%19.3%
200 trades-56.8%-32.3%+10.8%10.7%
500 trades-80.8%-60.6%-19.2%2.1%
1,000 trades-93.2%-84.5%-64.5%0.0%
The underlying strategy loses 98.1%. The last column is how often a sample of that size showed a gain anyway.

Read the last column downward. A strategy that destroys 98.1% of the account shows a profit in 35.9% of ten-trade samples and 19.3% of hundred-trade samples. It takes a thousand trades before that number reaches zero. If you test ten ideas on twenty trades each, you should expect several of them to look like edges. That is not bad luck; that is the arithmetic of the test you chose.

The wobble in that column, 35.9% at ten trades rising to 38.4% at twenty and dropping to 26.3% at thirty, is itself sampling noise, and worth pointing at. Even a measurement made from 2,000 draws is not perfectly smooth. Nothing about small numbers is stable, including statements about small numbers.

Notice that the median return gets worse as the sample grows, from -1.5% to -84.5%. That is not the estimate deteriorating; it is the truth arriving. Ten trades of a losing strategy lose a little because you only paid the cost ten times. The full 2,126 lose 98.1%.

What cherry-picking can buy you

The samples above were random. A person choosing a screenshot is not random. So we slid a window of N consecutive trades along the whole history and kept the best and worst window at each length.

WindowWindows testedBest windowWorst windowWindows in profitBest window win rate
10 trades2,117+17.9%-17.7%34.9%80.0%
20 trades2,107+27.0%-25.8%39.2%70.0%
30 trades2,097+43.1%-30.2%25.2%70.0%
50 trades2,077+38.9%-38.0%29.1%58.0%
100 trades2,027+34.7%-52.0%21.1%50.0%
200 trades1,927+38.7%-62.2%13.1%47.0%
500 trades1,627-22.8%-83.2%0.0%42.2%
Consecutive stretches from the same losing strategy. Its best 30-trade run returned +43.1% with a 70% win rate.

The best thirty-trade stretch of a strategy that loses 98.1% returned +43.1%, winning 70% of its trades. The best ten-trade stretch won 80%. Every number in that row is real, measured, reproducible, and completely misleading. This is what a marketing screenshot is made of, and no fabrication is required to produce one.

The bottom row is the useful part. At 500 consecutive trades not one window in 1,627 is profitable; the best available stretch is -22.8%. Somewhere between 200 and 500 trades, this strategy runs out of places to hide. That is a concrete answer to the question in the title, for this strategy: a few hundred trades is where cherry-picking stops working.

Trade count is not the same as robustness

We expected the strategies with few trades to be the ones whose period windows disagree most, and went to check. The data did not support it.

StrategyTrades7-year3-year1-yearWidest gap
Golden cross40+152.5%+62.7%+1.2%151.3pp
RSI with trend filter80+6.3%+5.1%+0.5%7.1pp
Supertrend momentum376+100.2%+24.2%-4.9%106.7pp
RSI in at 30, out at 70420-68.3%-25.5%-35.4%72.6pp
Donchian breakout477-33.1%+50.9%-26.3%129.0pp
RSI oversold bounce676-84.5%-52.3%-39.5%103.7pp
MACD cross1,743-97.6%-65.0%-24.4%116.2pp
Bollinger mean reversion2,126-98.6%-61.5%-51.2%105.1pp
Sorted by trade count, fewest first. The widest-gap column does not sort with it.

The 40-trade golden cross has the widest gap of all at 151.3 points, which fits the expectation. But the 2,126-trade Bollinger strategy sits at 105.1 points and the 1,743-trade MACD at 116.2, no better. And the smallest gap in the table, 7.1 points, belongs to a strategy with only 80 trades.

The explanation is that these two columns measure different things. A window gap is partly the size of the returns involved: the trend-filtered RSI barely moves in any window, so its windows cannot disagree by much. Sample size bounds the noise in an estimate, which the first two tables demonstrate cleanly. It does not make different eras agree. Enough trades and consistency across regimes are two separate requirements, and a strategy can pass either one while failing the other.

The check that did work

If a large sample does not settle it, what does? Running the same rules somewhere else. Here is the same Bollinger strategy, unchanged, on five coins.

CoinTradesWin rateReturnMax drawdown
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%
Same rules, five markets, over 14,000 trades in total. The verdict does not depend on which coin you picked.

Five markets, more than 14,000 trades, one answer. Compare that with the +43.1% window from earlier and the difference between evidence and an anecdote is visible. An out-of-sample test costs one click and answers a question a bigger in-sample test cannot.

What to do with this

  • Under about 30 trades, do not form an opinion. The measured band at ten trades was 40 points wide around the true win rate.
  • Treat a few hundred trades as the entry price for a claim. That is where cherry-picking stopped working above, and where the win-rate band narrowed to single digits.
  • Expect a third of your small tests to look good by accident. If you tried ten ideas on twenty trades, the best of them tells you nothing.
  • Read the period table, not just the total. A strategy whose windows contradict each other has a problem no trade count fixes.
  • Re-run on other coins and timeframes. This was the cheapest and most decisive check in the whole sweep.
Before believing any backtest, ask how many trades and across how many different markets and eras. "Forty trades, all from last year" is a story. The strategy in this article had a genuine +43.1% stretch and a genuine -98.1% history, and only one of those numbers describes what owning it would have been like.

References

Reading is good. Testing is better. Run a real backtest on 7 years of Binance data, free.

Try the backtester