The backtests people send me for a sanity check almost always have the same shape. Somewhere around thirty trades, a win rate north of sixty percent, an equity curve that goes up and to the right, and a question about whether this is ready for real money. I understand why thirty trades feels substantial, especially when you watched every one of them play out. But thirty trades is roughly the point where statistics starts being able to say anything at all, and what it usually says is that the beautiful equity curve is still consistent with a coin flip. The math for checking this is simple enough to do in a spreadsheet, and once you have it, you can put an actual number on how many trades your strategy needs before its backtest means anything.
The core idea is that your average profit per trade, the number everyone calls expectancy, is a measurement taken with a noisy instrument, and every measurement like that carries an error bar. Small samples carry enormous error bars. Most of what follows is just learning to compute the error bar yourself.
Your expectancy comes with an error bar
Take every closed trade in the backtest and write down its result, ideally in R multiples (profit divided by the amount you risked) or in percent. Compute two numbers from that column: the mean and the standard deviation. The mean is your expectancy. The standard deviation tells you how wild individual trades are around it.
The standard error of the expectancy is the standard deviation divided by the square root of the number of trades, and a rough 95 percent confidence interval is the mean plus or minus two standard errors. That pair of formulas is most of the toolkit.
Run it on a plausible strategy. Say the backtest averages 0.3R per trade with a per-trade standard deviation of 1.5R, a normal shape for a system with small losers and occasional big winners. Over 30 trades the standard error is 1.5 divided by the square root of 30, which is about 0.27R. The confidence interval on your expectancy therefore runs from roughly minus 0.25R to plus 0.85R. In other words, a backtest averaging 0.3R over 30 trades is statistically consistent with a strategy that loses a quarter of an R every time it fires. The data says the edge might exist, and nothing stronger than might.
Win rate has the same disease. A 60 percent win rate over 30 trades carries a standard error of about nine percentage points, so the true rate could plausibly sit anywhere from the low forties to the high seventies. On most systems the low forties end of that range is a slow bleed to zero.
How sample size scales with the edge you are claiming
Here is the part I wish someone had shown me much earlier. Define your edge ratio as the mean trade divided by the standard deviation of trades, which makes it a per-trade Sharpe ratio of sorts. To be roughly 95 percent confident the edge is above zero, the mean has to clear two standard errors, and if you rearrange that condition you get a minimum trade count of 4 divided by the edge ratio squared. That inverse square is brutal, and it is worth staring at as a lookup table:
- Edge ratio 0.30, an enormous edge you should probably distrust on sight: roughly 45 trades
- Edge ratio 0.20, a genuinely strong strategy: roughly 100 trades
- Edge ratio 0.15, good and believable: roughly 180 trades
- Edge ratio 0.10, where many honest systems live: roughly 400 trades
- Edge ratio 0.05, a thin edge you grind out at volume: roughly 1,600 trades
For calibration, an edge ratio of 0.2 on a strategy that trades most days would annualize to a Sharpe ratio most funds would kill for. If your backtest implies that, the first suspect is an error in the backtest. Realistic edges tend to sit between 0.05 and 0.15, which puts realistic minimum sample sizes between about 200 and 1,600 trades. Thirty appears nowhere on that table, and the scaling explains why it never will: halve the edge and you need four times the trades, which is exactly why small edges are cheap to hallucinate and expensive to verify.
Two caveats about what the table buys you. First, clearing the threshold only gives you confidence that the edge is above zero, which is the weakest claim available. Confidence that live results will resemble the backtest in magnitude takes considerably more data than that. Second, zero is the wrong hurdle anyway. You pay fees, spread, and slippage on every trade, so the mean you plug in should be the mean after realistic costs. If you have not modeled costs, subtract something painful and check whether the edge survives.
What the formula quietly assumes
The standard error math treats your trades as independent draws from one stable distribution, and real trades are neither independent nor stable. They cluster in regimes. Four hundred trades from a single trending year are worth far less than four hundred spread across trending, chopping, and crashing markets, because the thing you are estimating shifts underneath you. If the backtest covers one market mood, mentally discount the sample by a lot.
Fat tails are the second problem. If one monster trade carries most of the expectancy, the standard error understates your uncertainty badly. My habit is to delete the single best trade and recompute everything. When the expectancy drops from healthy to nothing, the backtest was really a story about one trade, and no trade count on the tin changes that.
The third problem is the worst one. The confidence interval assumes you ran a single test. If you tried forty parameter combinations and kept the prettiest, the interval is meaningless, because among forty random variants something will always look great over a small sample. This is the mechanism behind most backtests that die on contact with live markets. The cheap correction is to demand three standard errors instead of two whenever you searched your way to the result, which pushes the minimum trade count to about 9 divided by the edge ratio squared. The better correction is a holdout, meaning data you never touched during development, tested once, with the result accepted whatever it says.
The five minute version to run on your own backtest
Export every trade in R multiples or percent, after costs. Compute the mean, the standard deviation, and their ratio, which is the edge you are claiming. The minimum trade count for that edge to be probably real is 4 divided by the ratio squared, or 9 divided by the ratio squared if you got here by searching many variants. Compare that against what the backtest actually contains, and be ready for the comparison to go badly, because it usually does.
Then stress the result: remove the best trade and recompute. If the conclusion flips, treat the strategy as unvalidated no matter how many trades it has. And if the strategy cannot generate enough trades in the history available, consider widening the universe, since the math only cares about sample size and every additional market the logic genuinely applies to is more sample. Ten symbols producing 40 trades each will beat one symbol producing 60, as long as the trades are not all the same bet in different costumes.
Some strategies will still fall short, because they only fire a few times a year and no amount of universe widening fixes that. The idea might still be good. It just means the backtest cannot carry the weight of the decision on its own, so the logic behind the trade has to, and your sizing should reflect the fact that you are, statistically speaking, still guessing. I run a couple of systems like that myself, small, with every live trade going into the same spreadsheet as the backtest, slowly turning the guess into a sample.