TL;DR. Sample Size Confidence caps how much weight the Robustness Score gives to backtests with few trades. The cap is log-scaled — penalty is steep below 100 trades, softer between 100 and 500, and saturates at 500.
What you'll be able to do
- Know the minimum trade count for each meaningful threshold.
- Understand why "I had a great Sharpe over 30 trades" is not the win it looks like.
- Plan backtest windows that have enough trades to support the conclusions you want to draw.
Why sample size matters more than people think
A Sharpe ratio computed from 30 trades has a confidence interval roughly twice as wide as the same Sharpe computed from 300 trades. At 30 trades, almost any underlying truth — Sharpe of 0.4, 1.4, or 2.4 — is consistent with the observed sample. The headline number looks the same; the information content is vastly different.
This isn't a quibble. It's the entire reason serious statisticians distrust small-sample backtests. The whole point of statistical reasoning is to separate "we know" from "we got lucky" — at 30 trades, we don't know much.
Sample Size Confidence is the component that prevents the rest of the score from overstating its case when there isn't enough data to support strong conclusions.
The math
SampleSizeConfidence = min(1, log10(n_trades) / log10(500)) × 100
The function is 0 at n=1, hits 39 at n=10, 67 at n=100, 90 at n=300, 100 at n=500. Above 500 it saturates — additional trades don't earn additional confidence on this axis (they do on the other components, but this one is about whether the sample is large enough at all).
A separate cap also applies: when n_trades is below 100, the entire Robustness Score is hard-capped at 70 regardless of the other components. The intent is to make it mechanically impossible to score a "Ship" tier on a backtest with too few trades to support that conclusion.
Why log scale
The information value of additional trades is decreasing. The 31st trade tells you a lot more than the 301st. Log scaling reflects this — going from 30 to 100 trades raises the score by ~28 points, going from 300 to 1000 raises it by ~6.
The reference point of 500 isn't arbitrary. It's roughly where the central limit theorem starts producing reliable Sharpe-ratio confidence intervals for return distributions with the level of skew typical in trading.
In AlgoLift
Sample Size Confidence is computed once per Robustness run from the input trade count. It drives:
- A 5% weight in the Robustness Score — small individually, but the hard 70-point cap below 100 trades is the bigger lever.
- The mc-trade-count insight chip when count is below 200, with severity escalating below 50.
- An "input capped" annotation when the platform's 10,000-trade cap was hit (the opposite problem — the other way the sample becomes non-representative).
Reading the score
| Trade count | Score | Reading |
|---|---|---|
| Below 50 | 0–28 | Severely underpowered. Score is informational only. |
| 50–100 | 28–67 | Underpowered. Overall score capped at 70 regardless of other components. |
| 100–300 | 67–88 | Acceptable. Treat headline numbers as estimates with meaningful uncertainty. |
| 300–500 | 88–100 | Confident. Headline numbers are well-supported. |
| Above 500 | 100 | Maxed out for this component. |
The per-component thresholds
Different components need different amounts of data to be meaningful:
- Path Stability — needs enough trades for the resampled cloud to be well-estimated. With very few trades the original's percentile and the fan's width are both noisy, so the read is less reliable.
- Tail Discipline — wants at least 500 trades to estimate the 95th percentile reliably. Below 200, the tail estimate has high variance.
- Prop Fitness — works at any sample size because it operates on running balance, not summary statistics, but accuracy improves above 300 trades.
- Edge Concentration — meaningful at 100+ trades. Below that, the Gini coefficient is dominated by a few specific values.
- Regime Breadth — needs at least 50 trades per detected regime to score meaningfully. Falls back to vol-split below that.
When the input trade count is low, all of these get noisier. Sample Size Confidence is the single number that captures that across-the-board uncertainty.
Worked example
The same strategy, four trade-count windows
What this shows. The strategy doesn't change. The Robustness Score does, dramatically, because Sample Size Confidence is one of the components and the 100-trade cap kicks in at the lower counts. The right takeaway isn't "this strategy gets better as I add more data" — it's "I can't tell whether the strategy is good until I have enough trades."
Common misunderstandings
- "My strategy is intraday — I get plenty of trades." Often true. Watch out for selection filters that drop the actual trade count even on an intraday strategy. Adding a "skip first hour" rule might cut your trades by 40%, and that's the count the Robustness Score uses.
- "More trades always means a more reliable score." Up to a point. After roughly 5,000 trades, the score's reliability is saturated and additional data only marginally improves estimates. The 10,000-trade input cap exists to keep the Lambda fast — that cap doesn't degrade the analysis meaningfully.
When this component is the bottleneck
- Short backtest windows. A 1-month backtest on a low-frequency strategy is structurally underpowered.
- Highly selective strategies. Strategies with many filters often produce few trades. The fix is either widening the filters or running a longer backtest.
- High-cost/low-frequency timeframes. Daily-bar strategies are inherently slow to accumulate sample.
Sample Size Confidence is the smallest-weighted component but it carries the most important hard rule: backtests with fewer than 100 trades can't score in the Ship tier. That's not a bug — it's the platform refusing to let you over-claim from underpowered data.