AlphaAssay $ test my signal
RESEARCH · TOOL

The Probability of Backtest Overfitting (PBO), explained — with a calculator

ALPHAASSAY RESEARCH · TOOL · INTERACTIVE CALCULATOR

The Probability of Backtest Overfitting (PBO) answers the question that deflation alone cannot: when you pick the best of many strategy configurations, how often does that in-sample winner turn out to be below-average out of sample? If the answer is around 50%, your selection process is a coin flip — the textbook signature of overfitting. Bailey, Borwein, López de Prado and Zhu (2017) estimate it with Combinatorially Symmetric Cross-Validation (CSCV): split the history many ways, and each time check where the in-sample champion lands out of sample. The calculator below runs the full CSCV on a performance matrix — the example data, or your own — entirely in your browser. It needs a matrix, not a single number, because overfitting is a property of the search, not of one equity curve.

The calculator

CSCV probability of backtest overfitting — runs in your browser, nothing uploaded
rows = observations · columns = strategy configurations · comma- or space-separated
load: 1 real edge + 9 noise load: 10 pure noise

The box loads with an illustrative synthetic matrix — nine pure-noise configurations plus one with a genuine edge. At S = 8 blocks it returns PBO ≈ 0.01, the „1 real edge" row below. Swap in the „10 pure noise" example to watch PBO jump to ≈ 0.53. Paste your own matrix of strategy returns to test a real search.

What does PBO look like on known data?

example matrix (16 obs × 10 configs, S = 8)what it isPBOreading
10 pure noiseno real edge — the best is chosen by luck0.53≈ a coin flip out of sample — textbook overfitting
1 real edge + 9 noiseone genuinely persistent signal among decoys0.01the real edge survives CSCV; overfitting is unlikely

Both rows are computed by the calculator above from the same embedded matrices — click the example links to reproduce them. The contrast is the whole point: overfitting is not about how good the winner looks in-sample, but whether it keeps winning out of sample.

How CSCV computes PBO, step by step

Step 1 — build the matrix. Rows are observations (returns), columns are the strategy configurations you tried. Overfitting lives across columns, so you need all of them — including the ones you would have discarded.

Step 2 — split symmetrically. Cut the rows into S equal blocks (S even). For every way of choosing S/2 blocks as in-sample, the remaining half is out-of-sample — that is C(S, S/2) balanced splits (S = 8 → 70).

Step 3 — follow the in-sample winner. In each split, find the configuration with the best in-sample Sharpe, then read its out-of-sample rank. Its relative rank ω ∈ (0,1) gives the logit λ = ln(ω / (1 − ω)); λ ≤ 0 means the in-sample champion landed in the bottom half out of sample.

Step 4 — the probability. PBO = (share of splits with λ ≤ 0). PBO near 0.5 means your selection carries no out-of-sample information — pure overfitting; PBO near 0 means the winner keeps winning.

How does PBO relate to the Deflated Sharpe Ratio?

They attack the same disease from opposite ends. The Deflated Sharpe Ratio prices the selection inflation in a single number when you can count your trials; PBO measures the out-of-sample consistency of the selection process itself when you have the full performance matrix. Neither is a promise of returns — both are robustness gates, and both inform gate 2 and gate 4 of the AlphaAssay battery. Related: walk-forward analysis · the overfitting checklist.