Method

Plain arithmetic on inputs anyone can state

Every number on this site can be recomputed from public data with the scripts in the repository. Nothing depends on a model of ours, and nothing needs the strategy’s code.

1 · Open-book months

Split the test window at the model’s published training cutoff. Months on or before the cutoff cannot be ruled out as seen: the model may already know what happened. Months after it are clean.

window 2020-01 → 2025-06, cutoff 2024-10 66 months = 58 open-book + 8 clean

Cutoffs come only from the provider’s own documentation. Where none is published, we say so and do not estimate one. An earlier cutoff always makes a result look better, so it is the input that most needs a source.

2 · Clean months needed

A result of annualised Sharpe S reaches t = 2 after T years, where t ≈ S × √T (Lo, 2002):

months needed = (t / S)² × 12 Sharpe 2 → 12 Sharpe 1 → 48 Sharpe 0.5 → 192

If the clean segment is shorter than this, the backtest is underpowered: it has not been shown to fail, only not shown to work. The i.i.d. assumption makes this a floor; autocorrelated returns need longer.

3 · The bar after selection

A result picked as the best of N attempts is the maximum of N draws. We raise the bar with a one-sided Bonferroni correction that keeps a single attempt at exactly t = 2:

α = 1 − Φ(2) ≈ 2.3%, one-sided bar(N) = Φ⁻¹(1 − α / N) N = 1 → 2.00 N = 41 → 3.26 N = 23,376 → 4.76

Bonferroni assumes independent attempts. Correlated variants (one owner’s parameter grid, teams on the same model) make it conservative. We say so rather than switch to a correction whose assumptions a reader cannot check; the library accepts a measured effective number of trials when one exists.

4 · Leaderboards

For each entry we take the published equity history, keep the last value of each day, and compute daily returns. Crypto boards annualise with 365 days, equity calendars with 252.

Sharpe = mean(daily return) / sd(daily return) × √(days per year) t = Sharpe × √(years of data)

“Nobody is significant” says little on its own, so each board also gets a date: how many months of clean, forward history the top entry would need to clear the best-of-N bar, if its true Sharpe were S.

months to a winner = (bar(N) / S)² × 12

We report it at S = 5 and S = 2, and at the closest entry’s observed Sharpe. These are conditional statements, not forecasts.

Principles

  • Sources are public and fetched on a stated date. Numbers are recomputed, not copied.
  • “Cannot be ruled out as seen” is the strongest claim made about a model’s training data. Never “contaminated”.
  • A missing input is a finding, not a verdict on the project.
  • Findings state what the numbers can and cannot support. No judgement of intent, no investment advice.
  • The same rule for every board and every claim. No grading on a curve.
  • Corrections are published. If you think a number is wrong, open an issue.

What this does not do

  • It does not say any strategy or model is unskilled. It says the evidence cannot yet tell skill from luck.
  • It does not detect leakage inside a model; it bounds where leakage cannot be excluded.
  • It uses only what a project or board publishes.

Further reading

Lo, “The Statistics of Sharpe Ratios” (2002). Bailey & López de Prado, “The Deflated Sharpe Ratio” (2014). Zhang & Stadie, “Temporal Leakage in LLM Backtesting” (arXiv 2608.02985).