Deflated Sharpe Ratio (DSR) is a statistical correction that converts a raw observed Sharpe into the probability that the strategy's true Sharpe is positive, given (a) the number of independent backtest trials run, (b) the skew and kurtosis of the realised returns, and (c) the sample length. Bailey and López de Prado introduced it in 2014 as the definitive fix for the most common form of backtest fraud, quietly running 1,000 strategy variants and reporting the best one's Sharpe as if it were unconditional. The result that surprises practitioners: once you scale the trial-count benchmark by the standard error of the Sharpe estimate, multiple testing alone rarely sinks a strong Gaussian Sharpe, but it turns lethal the moment it meets a short sample or fat tails. A 1.5 Sharpe from a single pre-registered trial lands at DSR 0.999, while the same 1.5 after a thousand fat-tailed trials drops to 0.52, a coin flip. The benchmark you must beat is the expected-max Sharpe times one over the square root of sample length, not the bare order statistic. This piece walks through the derivation, runs a 1,000-trial Monte Carlo simulation, and shows the deflation table that should sit on every quant's desk.

The setup

Observed Sharpe SR from a single backtest of length T looks like a clean number. It is not. It is the maximum of N Sharpe ratios drawn during research, every parameter sweep, every feature variation, every cadence test counts as a trial whether or not the researcher logged it. Even if every variant has true Sharpe zero, the maximum across N trials drifts up with log(N).

Bailey, Borwein, López de Prado, and Zhu (2014) showed in Notices of the AMS that with roughly N=45 trials, T=5 years of monthly data, and zero true edge, the expected maximum Sharpe is approximately 1.0 (their minimum-backtest-length result). A reported Sharpe of 1.0 from such a research process is therefore exactly the null — no edge at all.

The DSR formula

The full expression from Bailey and López de Prado (2014):

DSR = Φ( (SR − E[max SR*]) · √(T − 1) / √(1 − γ₃·SR + ((γ₄ − 1)/4)·SR²) )

Components:

  • SR, observed annualised Sharpe ratio.
  • T — number of return observations.
  • γ₃, sample skewness of returns.
  • γ₄ — sample kurtosis (raw, not excess; 3 for Gaussian).
  • Φ(·), standard normal CDF.
  • E[max SR*], expected maximum Sharpe under the null of zero true edge across N trials, computed as:
E[max SR*] = (1 − γ_E) · Φ⁻¹(1 − 1/N) + γ_E · Φ⁻¹(1 − 1/(N·e))

where γ_E ≈ 0.5772 is the Euler-Mascheroni constant and e ≈ 2.718. This is a closed-form approximation of the expected maximum of N independent standard normals; the derivation traces back to the extreme-value statistics literature.

The output DSR is a probability between 0 and 1: the probability that the true Sharpe exceeds zero, after correcting for selection bias and non-Gaussian moments.

Deriving the components

Why E[max SR*] looks the way it does

If we draw N values from a standard normal and take the maximum, the expected maximum for large N is approximately Φ⁻¹(1 − 1/N). The two-term Bailey-López de Prado formula adds a second-order correction for finite N. This bracket term is dimensionless: it counts standard errors, not Sharpe units. To turn it into an expected-max Sharpe you multiply by the standard error of the Sharpe estimate, which is about 1/√T per period. For N=100, the bracket is roughly 2.53, and at 5 years of monthly data one standard error is 1/√60 ≈ 0.13 per period, so the per-period benchmark is 2.53 × 0.13 ≈ 0.33, which annualises to 0.33 × √12 ≈ 1.13.

For N=1,000, the bracket rises to about 3.26, giving a per-period benchmark of 3.26 × 0.13 ≈ 0.42 or roughly 1.46 annualised. A pure-noise research process running 1,000 trials on five years of monthly data regularly produces backtests with annualised Sharpe near 1.5. Anything below that is indistinguishable from what pure noise produces. This is why skipping the standard-error scaling is the most common DSR mistake: the bare bracket of 2.53 is not a Sharpe, and treating it as one inflates the benchmark by a factor of √(T-1).

Why the denominator includes skew and kurtosis

The (1 − γ₃·SR + ((γ₄ − 1)/4)·SR²) term inflates the standard error of the Sharpe estimator under non-normality. The Mertens (2002) variance formula for the Sharpe estimator gives this exact expression; it appears earlier in the work of Christie (1982). For a strategy with negative skew (γ₃ < 0) and high excess kurtosis (γ₄ > 3), the denominator grows, the z-score shrinks, and DSR falls. This is why short-volatility strategies with skew −2 and kurtosis 11 (the XIV signature pre-2018) deflate aggressively even before the multiple-testing correction is applied.

Worked example: 1,000-trial Monte Carlo

Simulate 1,000 backtest trials, each with 5 years of monthly returns (T=60) drawn from an N(0, 0.01) distribution, exactly zero true edge. For each trial, compute the Sharpe. Take the maximum. Repeat the entire experiment 10,000 times to get a distribution of max SR*.

import numpy as np

rng = np.random.default_rng(42)
T, N, runs = 60, 1000, 10000
max_sharpes = np.empty(runs)

for r in range(runs):
    rets = rng.normal(0, 0.01, size=(N, T))
    sharpes = rets.mean(axis=1) / rets.std(axis=1, ddof=0) * np.sqrt(12)
    max_sharpes[r] = sharpes.max()

print(f"E[max SR*] empirical = {max_sharpes.mean():.3f}")
print(f"95th pct = {np.percentile(max_sharpes, 95):.3f}")

# Closed-form
gamma = 0.5772156649
from scipy.stats import norm
emax = (1 - gamma) * norm.ppf(1 - 1/N) + gamma * norm.ppf(1 - 1/(N*np.e))
print(f"E[max SR*] closed-form = {emax:.3f}")

The empirical value lands at approximately 1.54 (annualised at √12 monthly). The closed-form Bailey-López de Prado approximation, the dimensionless bracket of 3.26 divided by the square root of the sample length and annualised, gives 1.47. The two agree to within a few percent, validating the formula for a representative parameter setting.

The deflation table

Substitute typical (SR, N, T, γ₃, γ₄) tuples and compute DSR:

The γ₄ column is raw kurtosis, so 3 is Gaussian and higher values are fat tails. The E[max SR*] column is annualised, the bracket term scaled by one over the square root of the sample length.

SR N (trials) T (months) γ₃ γ₄ E[max SR*] DSR
1.5 1 60 0 3 0.00 0.999
1.5 100 60 0 3 1.14 0.777
2.0 100 60 0 3 1.14 0.961
2.5 100 60 0 3 1.14 0.996
2.5 1,000 60 0 3 1.47 0.979
2.5 1,000 60 −2 11 1.47 0.881
2.0 1,000 60 −1 5 1.47 0.803
1.5 1,000 60 −1 5 1.47 0.522
1.5 100 60 −2 11 1.14 0.699

Read the table. The Gaussian-returns rows hold up well, even at a hundred trials a 2.0 Sharpe keeps a DSR near 0.96. DSR only sinks toward a coin flip when a weak Sharpe meets a heavy trial count and fat tails at once, as in the 1.5 over a thousand fat-tailed trials row at 0.52. The combination of multiple testing and fat tails is what kills strategies. Either alone is survivable; together they are devastating.

The single-trial 1.5 Sharpe still posts the highest DSR in the table at 0.999. A 1.5 Sharpe surfaced from a thousand fat-tailed trials drops to 0.52, so the same headline number carries wildly different evidence depending on how it was found. Pre-registration, which keeps N at 1, is the cheapest way to protect a Sharpe from this haircut.

What counts as a trial

The most-cheated input is N. Every parameter sweep is a trial. Every feature swap is a trial. Every regime cut is a trial. Every retraining cadence is a trial. The temptation is to count only the explicitly-published variants and quietly forget the dozen tested-and-discarded paths.

Harvey and Liu (2015) document that published cross-sectional anomalies are subject to N in the hundreds. For a single retail researcher, N is rarely below 20 and often above 100. Pre-registration, writing down the strategy parameters before running the backtest, is the only honest way to keep N at 1.

When DSR fails

Three known limitations:

  1. Independence assumption. The N trials are assumed independent draws. In practice, parameter sweeps over neighbouring values are correlated, so the effective number of trials is below the raw count. Estimate it from the eigenvalues λᵢ of the trial-return correlation matrix as N_eff = (Σλᵢ)² / Σλᵢ². This equals N when trials are uncorrelated (every λᵢ = 1) and collapses to 1 as trials become perfectly correlated (ρ → 1) — the correct limits. The trace of the inverse correlation has the wrong behaviour, growing without bound as ρ → 1.
  2. Static moments. The skew and kurtosis used in the denominator are sample estimates from the realised returns. For short samples, these are noisy; for long samples, they smooth across regimes that may not persist. Bailey, Borwein, López de Prado, and Zhu (2017) discuss the noise issue.
  3. Finite-T correction. The √(T − 1) factor assumes large-sample asymptotics. For T < 30 (less than 30 monthly observations), DSR is over-confident; apply a small-sample t-distribution correction.

A 30-line implementation

import numpy as np
import pandas as pd
from scipy.stats import norm

def deflated_sharpe(
    returns: pd.Series,
    n_trials: int,
) -> float:
    # DSR is a probability and is invariant to annualisation, so no freq is needed.
    r = returns.dropna().astype(float).values
    T = len(r)
    if T < 12 or n_trials < 1:
        raise ValueError("need T >= 12 and n_trials >= 1")
    # Work in per-period Sharpe units so the (T-1) term stays unit-consistent.
    sr_pp = r.mean() / r.std(ddof=0)
    g3 = float(pd.Series(r).skew())
    g4_raw = float(pd.Series(r).kurtosis()) + 3.0  # convert excess to raw kurtosis
    gamma = 0.5772156649
    if n_trials == 1:
        bracket = 0.0
    else:
        bracket = ((1 - gamma) * norm.ppf(1 - 1/n_trials)
                   + gamma * norm.ppf(1 - 1/(n_trials * np.e)))
    # Scale the dimensionless order statistic by the standard error of the
    # per-period Sharpe estimate. This is the step the naive version skips.
    sr0_pp = bracket / np.sqrt(T - 1)
    denom = np.sqrt(1 - g3 * sr_pp + ((g4_raw - 1) / 4) * sr_pp**2)
    if denom <= 0:
        return float("nan")
    z = (sr_pp - sr0_pp) * np.sqrt(T - 1) / denom
    return float(norm.cdf(z))

Usage:

>>> deflated_sharpe(monthly_returns, n_trials=100)
0.699

A DSR below 0.5 is below random — the strategy is more likely than not to have zero or negative true edge. A DSR above 0.95 is the conventional bar for "real edge after multiple testing." The middle band (0.5–0.95) is where most published strategies sit, which is itself the lesson.

This article is the derivation pillar of the overfitting-diagnostics series: the formula, its extreme-value origins, and the deflation table. The companion pieces apply it to specific regimes and pair it with PBO:

Connects to

References

  1. Bailey, D. H., & López de Prado, M. (2014). "The Deflated Sharpe Ratio: Correcting for Selection Bias, Backtest Overfitting, and Non-Normality." Journal of Portfolio Management 40(5), 94–107. DOI: 10.3905/jpm.2014.40.5.094. SSRN: 2308657.
  2. Bailey, D. H., Borwein, J., López de Prado, M., & Zhu, Q. J. (2014). "Pseudo-Mathematics and Financial Charlatanism: The Effects of Backtest Overfitting on Out-of-Sample Performance." Notices of the AMS 61(5), 458–471. DOI: 10.1090/noti1105.
  3. Embrechts, P., Klüppelberg, C., & Mikosch, T. (1997). Modelling Extremal Events for Insurance and Finance. Springer. ISBN 978-3-540-60931-5.
  4. Mertens, E. (2002). "Comments on Variance of the IID Estimator in Lo (2002)." Working paper, University of Basel.
  5. Harvey, C. R., & Liu, Y. (2015). "Backtesting." Journal of Portfolio Management 42(1), 13–28. DOI: 10.3905/jpm.2015.42.1.013.
  6. Bailey, D. H., Borwein, J., López de Prado, M., & Zhu, Q. J. (2017). "The Probability of Backtest Overfitting." Journal of Computational Finance 20(4), 39–69. DOI: 10.21314/JCF.2016.322.
  7. López de Prado, M. (2018). Advances in Financial Machine Learning. Wiley. ISBN 978-1119482086.
  8. Lo, A. W. (2002). "The Statistics of Sharpe Ratios." Financial Analysts Journal 58(4), 36–52. DOI: 10.2469/faj.v58.n4.2453.
  9. Sharpe, W. F. (1966). "Mutual Fund Performance." Journal of Business 39(1), 119–138. DOI: 10.1086/294846.

Frequently asked questions

What is the Deflated Sharpe Ratio and why does it matter for backtesting?
The DSR is the probability that a strategy's true Sharpe exceeds zero, after correcting for how many backtest trials were run, the sample length, and the skew and kurtosis of returns. Bailey and López de Prado introduced it in 2014 as the definitive fix for quietly running many strategy variants and reporting the best result as if it were unconditional.
What DSR value counts as convincing evidence of real edge?
A DSR above 0.95 is the conventional bar for real edge after multiple testing. A DSR below 0.5 means the strategy is more likely than not to have zero or negative true edge. The article notes that most published strategies land in the middle band between 0.5 and 0.95, which is itself the lesson.
How does pre-registering a strategy protect its Deflated Sharpe?
Pre-registration, writing down strategy parameters before running any backtest, keeps the trial count N at 1. A 1.5 Sharpe from a single pre-registered trial reaches DSR 0.999, while the same 1.5 Sharpe from a thousand fat-tailed trials drops to 0.52. The article calls it the cheapest way to protect a Sharpe from the multiple-testing haircut.
Why do fat-tailed returns lower DSR beyond what multiple testing alone would predict?
The DSR formula's denominator includes sample skew and kurtosis via the Mertens (2002) variance formula for the Sharpe estimator. For a strategy with negative skew and high excess kurtosis, the denominator grows, the z-score shrinks, and DSR falls before the multiple-testing correction is even applied. The article gives the XIV-style skew -2, kurtosis 11 signature as a case that deflates aggressively on both grounds.