Robustness Score

How the 0–100 Robustness Score translates ten thousand alternate-history simulations into a single ship/watch/fragile verdict, what each component measures, and how to read its weaknesses.

Updated 2026-06-03
14 min read
intermediate

TL;DR. The Robustness Score is a single 0–100 number that captures how well your strategy holds up when its backtest is stress-tested ten thousand different ways. Below 40 means fragile. 40–70 is watch. Above 70 is ship under the tested assumptions. It cannot be gamed because no one component can carry it alone.

What you'll be able to do

  • Read a Robustness Score and know exactly what dimensions it covers.
  • Identify which of the six components is dragging the score down.
  • Translate a tier verdict into the right next action — keep iterating, run more tests, or deploy.

Why a single score

A modern backtest produces dozens of metrics. CAGR, Sharpe, Sortino, max drawdown, profit factor, win rate, recovery factor, average trade, expectancy, time in drawdown, longest losing streak. Each one has a story. Pulled together they tell you something — but only after thirty minutes of squinting.

The Robustness Score is what happens when you do that squinting once, systematically, every time. It rolls the most decision-relevant axes into one number so that the first thing a trader sees is the verdict, not the math.

That verdict is anchored to a concept, not a metric. The concept is: how much of this backtest is repeatable, and how much is luck? A strategy that survives ten thousand resamples of its own trades, multiple-comparison correction for the optimizer that picked it, and a worst-regime check is not guaranteed to work live. It is, however, dramatically more likely to than one that doesn't survive any of those tests.

Placeholder · Screenshot

The Robustness Score hero — single verdict, full breakdown one click away

Author hint: Robustness tab hero card showing the score ring at ~78 (emerald tier) with the tier label 'Ship' and the score-breakdown waterfall visible to the right. Dark theme, real backtest data. Crop tight to the hero + first waterfall step. Save to /public/images/guide/robustness/robustness-score/hero.png.

The formula

RobustnessScore = round(
    0.25 × PathStability
  + 0.25 × TailDiscipline
  + 0.20 × PropFitness        (if prop firm enabled)
  + 0.15 × EdgeConcentration
  + 0.10 × RegimeBreadth
  + 0.05 × SampleSizeConfidence
)

If no prop firm is enabled, the 20% PropFitness weight redistributes: +10% to TailDiscipline and +10% to RegimeBreadth. Every component is normalized to 0–100 before weighting.

Why these weights

The weights are opinionated and intentional. Path stability and tail discipline carry the most weight because they answer the two questions that matter most: is this edge repeatable, and what happens when it isn't? Prop fitness is a tied-third axis because if you're trading prop accounts, the firm's rules are a real-world filter that overrides everything else — a strategy that's mathematically sound but trips a trailing-drawdown rule is, for that user, broken.

Edge concentration, regime breadth, and sample size confidence get smaller weights because they're correctives — they protect against specific overconfidence patterns rather than measuring core quality.

The six components

Each component answers a single question.

Path Stability (25%)

Question: Was your backtest's equity curve a typical outcome of the strategy's edge, or an outlier?

Two signals multiplied: where your original total return lands in the resampled cloud (near the middle = a typical draw, scores well; the lucky top tail = penalized), and a scale-invariant width penalty that dampens the score only when the fan's downside is large relative to the typical gain. High score means your equity curve was a representative outcome of your edge; low means it sat at the lucky edge of its own alternate-history cloud.

Full deep-dive: Path Stability.

Tail Discipline (25%)

Question: What happens when the strategy is unlucky?

A composite of probability of ruin, the 95th-percentile drawdown, and the probability of a drawdown exceeding 25% of starting capital. Strategies with thin upside but no tail risk score higher than strategies with great expected returns and a 5% blowup probability. The asymmetry of drawdowns — a 50% loss requires a 100% gain to recover — is what justifies the heavy weight here.

Full deep-dive: Tail Discipline.

Prop Fitness (20%, conditional)

Question: Can the strategy pass the eval and survive the funded phase?

Probability of passing the evaluation multiplied by the probability of reaching funded status given a pass, geometric-mean rescaled. Two-stage because some strategies pass the eval easily and then bleed under the post-funded trailing rule. Only contributes when the user has explicitly opted into a prop firm; the weight redistributes otherwise.

Full deep-dive: Prop Fitness.

Edge Concentration (15%)

Question: Does the strategy have an edge, or a few lucky trades?

One minus the Gini coefficient of per-trade PnL. A flat distribution — many trades each contributing modestly — scores high. A lumpy distribution where three trades produced 60% of the backtest's profit scores low. Lumpy strategies look great when those trades are in-sample and catastrophic when they aren't.

Full deep-dive: Edge Concentration.

Regime Breadth (10%, anti-cherry-pick)

Question: Does the strategy work in every market regime, or just the favorable ones?

The minimum probability of positive Sharpe across detected regimes. Scores the worst regime, not the average. A strategy that's brilliant in low-vol and unprofitable in high-vol is exactly as good as its high-vol performance — Regime Breadth captures that.

Full deep-dive: Regime Breadth.

Sample Size Confidence (5%)

Question: Do you have enough trades to trust the other components?

A log-scaled penalty for backtests with fewer than 500 trades. Sharpe ratios estimated from 50 trades are essentially unfalsifiable — they have such wide confidence intervals that nearly any underlying truth is consistent with them. Below 100 trades, the entire Robustness Score is also capped at 70 regardless of the other dimensions.

Full deep-dive: Sample Size Confidence.

The three tiers

The 0–100 score maps to three tiers:

ScoreTierReading
70–100ShipSurvived the stress tests. Reasonable confidence to deploy under tested assumptions. Still validate forward.
40–69WatchReal edge in some dimensions, fragility in others. Identify the weakest component before risking capital.
0–39FragileOne or more dimensions failed badly. Either fix the specific weakness or rebuild with fewer degrees of freedom.

The tiers are intentionally wide. A score of 72 and a score of 88 are both Ship, and the practical difference between them is small. The tier is the decision boundary; the numeric score is for tracking improvement over iterations.

The anti-gaming properties

The score is designed so that you can't engineer your way to a high number by maxing out one dimension.

  • The weights are convex. No single component contributes more than 25%, so saturating one component caps your possible score around 65 even with zeros elsewhere.
  • The worst regime, not the average. Regime Breadth floors on the minimum across regimes, so a strategy that's brilliant in trend and unprofitable in chop cannot hide behind the average.
  • Trial-count correction. When the parent backtest came from an optimization, Path Stability is computed against the deflated Sharpe distribution, not the raw one. You can't add more optimization trials to inflate the score — the deflation removes exactly that gain.
  • The 70-point cap below 100 trades. No matter how good the other components look, sample sizes too small to justify the conclusion can't push the score into the Ship tier.

These properties are why the score is more honest than the raw Sharpe ratio. A Sharpe of 3.0 over 50 trades can mean anything; a Robustness Score of 75 over the same 50 trades is mechanically impossible.

Worked example

Placeholder · Worked Example

Three strategies, three Robustness Scores — side by side

Author hint: Run three strategies through the Robustness tab and capture the Score breakdown for each. Strategy A: a simple trend-follower on MES 5m 2018-01-01 to 2024-06-30 with ~1200 trades. Strategy B: a knife-edge mean-reverter on MES with ~95 trades. Strategy C: an over-optimized scalper. For each, table the six components and the final score. Use real values from the platform.

What this shows. The trend-follower scores in the mid-80s with a balanced profile. The mean-reverter scores in the high 40s — strong tail discipline but low sample size confidence and edge concentration crush the headline. The over-optimized scalper scores in the mid-30s — the headline backtest looks great but path stability and edge concentration reveal that most of the equity curve came from a small lucky cluster.

How to read a score

The score itself is one screen. The component breakdown — accessible via the score waterfall chart on the Summary sub-tab — is what tells you what to do next.

  • Score in Watch tier and Tail Discipline is the lowest component. Your edge is real but your downside isn't bounded. Add a risk management layer, tighten max position size, or add a session/regime filter that skips the worst conditions.
  • Score in Watch and Edge Concentration is lowest. A few trades carry the backtest. Examine those trades — are they real signals or lucky outliers? Consider whether the strategy's idea is actually edge or whether you've found one cluster that won't repeat.
  • Score in Watch and Regime Breadth is lowest. The strategy is regime-specific. That can be fine if you only deploy it during the favorable regime — the Forward Testing tab and a regime detector can gate live trading.
  • Score in Fragile and Sample Size Confidence is the cap. Too few trades to trust the rest of the numbers. Run a longer backtest before iterating further.

Common misunderstandings

Common Misconception
Myth
A Robustness Score of 90 means the strategy will make money live.
Reality
The score measures repeatability of the backtest's properties, not the future. A strategy that scores 90 has earned reasonable confidence to deploy with sized-appropriate position size and forward-test validation. It hasn't earned a guarantee.
  • "My score went up after I added a filter — the strategy must be better." Sometimes. Often, what improved is one component while another quietly worsened. Always read the component waterfall, not just the headline.
  • "Why does my score drop when I add more optimization trials?" Because the deflated Sharpe correction is applied. Each additional trial increases the chance the best one was lucky — the score correctly accounts for that.
  • "I have 50 trades and my score is 68. Why isn't it higher?" Below 100 trades the score is capped at 70 regardless of the other components. Run a longer backtest.

When the score matters most

  • Before deploying with real capital. The cost of one fragile deployment exceeds the cost of running every Robustness check ten times.
  • When iterating quickly. The score is the cheapest way to detect that an iteration introduced overfitting before you commit to it.
  • When comparing candidates. Two strategies with similar Sharpes and similar drawdowns can have very different Robustness Scores. The one with the higher score is the safer bet under matched expected value.

When it matters less

  • Small-money experimentation. If you're trading 1 micro contract to learn how a strategy behaves live, the score is informational but not a deployment gate.
  • Pre-optimization exploration. Early in strategy design, the score is noisy because the components haven't stabilized. Use it to track direction of change, not as a pass/fail at this stage.
Key Takeaway

The Robustness Score's job is not to predict your returns. It's to make the question "is this backtest trustworthy?" answerable in five seconds. When the score is high, validate forward and ship. When it's low, the component breakdown tells you exactly which dimension to attack next.

Pro pattern: track scores across iterations

Log the Robustness Score for every meaningful iteration of a strategy. Plotted over time, the score curve tells a story you can't see in any single backtest. Most healthy iterations move the score up and the components in balance. An iteration that spikes one component while crashing another is overfitting in slow motion — back it out before it compounds.