← Blog
Backtesting

We Ran 100 Million Bitcoin Backtests. Only 3,130 Beat the Luck Bar.

2026.07.03·15 min read·Rulyfi

Key Takeaways

  • The Deflated Sharpe Ratio (DSR) adjusts a strategy's Sharpe for how many strategies you tested. It sets the bar not at zero, but at the best Sharpe you would expect from luck alone after N tries, a bar that grows only with the logarithm of N.
  • Of 99,878,688 BTC/USDT backtests, 336,818 cleared a plain significance test (PSR > 0.95), but only 3,130 (0.003%) cleared a full gauntlet: 30 or more trades, above the luck baseline, and positive out-of-sample. Rare, but not zero.
  • The single best strategy with 100 or more trades made +684% at a 5.59 Sharpe, yet its Deflated Sharpe was about 0.10 once you count the ~47.5 million strategies it was drawn from. No single strategy cleared DSR 0.95; pooling a long survivor with a nearly independent short survivor did (0.878 to 0.9502), with zero extra backtests. The edge came from combining evidence, not from searching harder.
  • Every gate in this article now ships as a column in a Rulyfi full-export: on any paid plan the file carries each strategy's Deflated Sharpe (dsr) next to the raw ingredients (srObs, skew, kurt, tradeCount), so you can run this exact funnel, and even the composite math, on your own scans.

Anyone can find a backtest with a Sharpe of 5. Run a hundred million of them and the best one is guaranteed to look spectacular. The real question is whether it is a signal or simply the luckiest coin-flip out of every configuration you tried. This is a step-by-step guide to answering that with arithmetic instead of hope, and we ran every step on 99,878,688 BTC/USDT backtests so you can watch each gate close.

The short version: after you count the search, almost nothing survives, and the survivors are rarer, smaller, and stranger than the leaderboard suggests. The one result that held up under the strictest test was not a better strategy at all, but two of those survivors combined into one, and that turns out to be the most useful thing in the dataset. This is a follow-up to Your Crypto Backtest Is Lying to You, which showed why backtests inflate. This one shows what a hundred million of them look like once you stop trusting a single number, and how you can run the same test yourself.

This is not a story about a winning strategy. It is a story about a filter, what it removes, and how you can run the same filter on your own ideas. Here is the setup we measured everything on.

MarketBTC/USDT spot (Binance), 1h
Window50,000 hourly bars, 2020-10-19 to 2026-07-03 (~5.7 yr)
Directionslong + short leg (short modeled on the price series)
VariationsV = 1,443 across 20 indicator cards
CombosC(1443,2) = 1,040,403 combos, times 48 exit units: take-profit (TP) {3,4,5,6}% by stop-loss (SL) {2,3,4,5}% by time-limit (TTL) {120,240,480} bars, i.e. 5/10/20 days
Total49,939,344 per direction, so 99,878,688 backtests
Costsfee 0.04% (taker, market orders), slippage 0.01%
Validationwalk-forward, 2 folds, OOS computed
InfraRulyfi scanner, ~4 min end-to-end (each indicator is computed once, then reused across every combination)

"1,443 variations" deserves specifics, so here is the exact sweep, indicator by indicator. Entry conditions were the scanner's automatic defaults per indicator, and every pair of two different variations formed a candidate strategy.

IndicatorParameter sweepVariations
EMAperiod 20; 30→300 and 310→370, step 1036
SMAperiod 20→300, step 1029
SuperTrendperiod 7→14, step 2; multiplier 2→516
Parabolic SARAF start and step {0.01, 0.02, 0.03, 0.04}; AF max {0.03, 0.1, 0.2, 0.4}64
Ichimokutenkan 7→12; kijun 22→33, step 2; senkou B 40→65, step 7144
RSIperiod 7→21, step 35
MACDfast 12→19, step 2; slow 13→39, step 3; signal 5→9180
Bollinger Bandsperiod 20 and 20→70, step 5; std dev 1→3, step 0.560
BB Widthperiod 50 and 20→60, step 5; std dev 2→3, step 0.530
Z-Scoreperiod {10, 20, 50}3
Stochastic RSIRSI period 7→28, step 3; stoch period 7→28, step 3; K smooth 3→5; D smooth {3, 4, 5}576
Squeeze MomentumBB period {15, 20, 30}; BB mult 2→3, step 0.5; KC period {15, 20, 25, 30}; KC mult {1, 1.5, 2}108
OBV(no parameters)1
VWMAperiod 20 and 30→300, step 1029
McGinley Dynamicperiod 14→70, step 229
Volume Oscillatorfast 3→20, step 2; slow 7→20, step 263
Volume Ratio (used as a filter)period 10→50, step 105
Linear Regression Channelperiod 20→50, step 10; mult 1→3, step 0.520
Volume SMAperiod 10→50, step 59
StochasticK period 5→21, step 2; D period {3, 4, 5, 6}36

Running about 100 million Bitcoin backtests over this grid finishes in about 4 minutes on the Rulyfi scanner. The point of doing it is not the winner, it is the funnel. Watch four filters shrink 99,878,688 results down to a handful: 99,878,688 backtests, then 336,818 that pass a plain significance test, then 3,130 that survive the full gauntlet, then 3 pooled pairs, effectively one idea, that graze the strictest line of all. Each step is one gate a tool computes, not an eyeball call. We will walk down that funnel one gate at a time.

Funnel from 99,878,688 backtests to 3 pooled ideasFour filters shrink 99,878,688 backtests to 336,818 individually significant, then 3,130 gauntlet survivors, then 3 pooled long-short ideas. One in 33 million.99,878,688backtests we ran100%↓  1 in 297 kept336,818individually significant · PSR > 0.950.34%↓  1 in 108 kept3,130cleared the full gauntlet0.003%↓  1 in 1,043 kept3synthesized long + short pairs · one idea3 out of 99,878,688 — one in 33 million.Four filters shrink 99,878,688 backtests to 3 pooled ideas. Bar widths are schematic; the counts carry the data. Source: 100 million BTC/USDT backtests, 2026-07-03.

1. First, count your trials

The single most important number in any backtest report is one most reports never mention: how many strategies you tried before you kept this one. At a 5% significance level, testing 100 variations leaves about 5 that look like winners by pure chance. Test tens of millions and the "winners" pile up by construction. The 2014 study by Bailey, Borwein, López de Prado, and Zhu showed mathematically that the more configurations you try, the higher the probability a backtest is overfit, and that a backtest which never reports how many configurations it tried cannot have its overfitting risk assessed at all.1

So we counted. We ran 99.9 million backtests; 95.1 million of them produced a valid trial (a strategy that traded and yielded computable return moments) that the deflation counts. Everything below is measured against that trial count, per direction and pooled, because the size of the search is what sets the bar.

The raw distribution is a useful reality check on its own. The median strategy loses money: median Sharpe is −0.136 long and −0.466 short, and only 36% of long strategies and 15% of short ones even clear a Sharpe above zero. The average random strategy pays fees and loses. That is the sea a "winner" is drawn from.

At 5% significance, more tries means more false winners by construction. The only honest response is to count the tries and raise the bar accordingly. The rest of this article is four different heights for that bar, from the weakest to the strongest.

2. PSR: is it better than nothing?

The Probabilistic Sharpe Ratio asks one question: given your sample size, skew, and kurtosis, how confident are we that your true Sharpe is above zero? It is the honest version of "is this Sharpe real," because it penalizes a short track record and fat-tailed returns instead of trusting the point estimate.2 The benchmark it compares against is zero: better than a coin, better than doing nothing.

Across all 99,878,688 backtests, 336,818 cleared PSR > 0.95 (long 199,061, short 137,757). That sounds like a lot of edges, and that is exactly the trap. If the ~47.5 million trials per direction were independent noise, 5% of them, about 2.4 million, would clear a 95% test by chance alone. We see fewer than that only because most strategies carry negative expected return after fees, so the noise is skewed against us, not for us.

In other words, passing an individual significance test does not mean a strategy beat luck. It means one strategy, considered in isolation, looks unlikely to be a coin. Consider it alongside the 47.5 million others it was picked from and the picture changes completely.

Individual significance is cheap. That is the mirage. The whole point of the next gate is to stop grading each strategy against zero and start grading it against the luckiest fluke in the whole search.

3. DSR: is it better than the luckiest fluke?

The Deflated Sharpe Ratio uses the same formula as PSR, but replaces the baseline of zero with SR*, the highest Sharpe you would expect from luck alone after N tries.3 That one swap is the entire idea. If you flip enough coins, one sequence will look brilliant, so the bar for "real" is not "beats zero," it is "beats the best luck could have manufactured across your search."

The obvious worry is that this bar becomes impossible once N is huge. It does not, and this is the most important number in the article. The standardized hurdle grows with the logarithm of the number of trials, so more search moves it slowly:

Trials (N)Luck hurdle, standardized (σ) = Φ⁻¹(1−1/N)
1,0003.09σ
1,000,0004.75σ
47,500,000 (this scan, per direction)5.5σ
1,000,000,0006.0σ

The luck hurdle grows only with the logarithm of the number of trialsStandardized luck hurdle sigma equals inverse-normal of one minus one over N. It rises from 3.09 at a thousand trials to 6.0 at a billion: a millionfold more search adds under three sigma.1K1M1Bnumber of strategies tried (N, log scale)standardized luck hurdle (σ)3.09σ4.75σ5.50σ6.00σluck's champion≈ 5.5σ (on the curve)best real ≈ 4.3σthis gap iswhat DSR asksthis scan · 47.5MThe luck hurdle σ = Φ⁻¹(1 − 1/N) grows only with the logarithm of N: a millionfold more search moves it from 3.09σ to 6.0σ, under 3σ. A real edge survives that; a fluke does not. Source: article Section 3.

Going from a thousand trials to a billion, a millionfold more search, moves the bar from 3.09σ to just 6.0σ, less than double. Each 10x of search adds under half a sigma. A genuine edge survives that; DSR is not a nihilism machine. It deflates a lucky fluke hard and a real signal barely at all, which is exactly what you want a filter to do.

That standardized σ-hurdle is not the same number as the per-trade Sharpe threshold, so keep them separate. In per-trade Sharpe units, the bar becomes SR* = 0.4743 (long) / 0.4442 (short): the hurdle scaled by the cross-sectional spread of Sharpe across each direction's trials, about 0.085 long and 0.080 short. (If you multiply the table's 5.5σ by 0.085 and land a touch under 0.4743, that is rounding plus the stricter two-term formula production uses; Section 8 has it.) If your export reports one number and you expected the other, that scaling is why.

Sharpe itself also comes in two units, and this decides whether the rest of the article reads as a contradiction. Results screens report annualized Sharpe, which is per-trade × √252; every deflation number in this article runs on per-trade units. So the champion you are about to meet reads 5.59 on a leaderboard, which is 0.352 per trade, and 0.352 against a 0.4743 luck bar is already the whole story.

The most portable way to feel this is in the same σ units as the table above. Picture 47.5 million coin-flippers: the luckiest of them lands about 5.5σ above zero. Our best real candidate lands at about 4.3σ, individually a one-in-a-hundred-thousand result, a genuinely rare find in isolation, yet still short of luck's champion. That gap is the whole reason DSR exists.

4. The gauntlet: four gates at once (is it luck?)

One number is never enough (see how to read backtest results). Here is the full gate a strategy must clear. We required all four at once: at least 30 trades, a Deflated Sharpe above the luck baseline (DSR > 0.5, meaning the deflated evidence tips past even odds), a walk-forward out-of-sample efficiency above zero (its out-of-sample performance held up relative to in-sample), and zero negative folds. Only 3,130 strategies cleared all four (long 417, short 2,713), which is 0.003% of the scan. Raise the deflation gate from even odds to DSR > 0.8 and it drops to 203.

The 30-trade floor is not arbitrary, and skipping it produces a famous trap. Unfiltered, DSR > 0.95 counts 8,449 strategies, and every single one traded between 1 and 30 times (8,420 of them 1 to 10 times). At that sample size the skew and kurtosis terms that do the deflating collapse into noise, and tiny samples hijack the top of the list with degenerate results. That is why the floor is hygiene, not statistics: it removes strategies too small to deflate honestly.

Now the reversal. The best strategy with 100 or more trades, a long BB(20,1)+StochRSI at +684%, Sharpe 5.59 annualized (0.352 per trade), a −27.6% max drawdown (MDD), 137 trades, and PSR 0.99986, has a Deflated Sharpe of about 0.10. The most spectacular equity curve in a hundred million sits below the luck baseline once you count the search it was drawn from. And it is not close: past 100 trades, nothing clears even DSR 0.5 (the best z-score there is −1.22). The leaderboard and the deflated ranking are almost opposite lists.

Deflated Sharpe versus trade count — density of 7.9 million strategiesA density field of every strategy with 2 to 150 trades. Deflated Sharpe is dense at low values and thins upward; the ceiling falls as trade count rises, and past 100 trades nothing clears the 0.5 luck line. The plus 684 percent champion sits at DSR 0.10, far below it.0.000.250.500.751.000306090120150trade count (linear)Deflated Sharpe (DSR)luck baseline (0.5)past 100 trades:nothing clears 0.5← 8,449 degenerate (n < 30)3,130 cleared here (0.003%)the +684% championDSR 0.10 · below the lineshade = density of all 7.9M strategies with 2–150 tradesDensity of all 7.9 million strategies with 2–150 trades — shade shows how many land in each cell. DSR is dense low and thins upward; past 100 trades nothing clears the 0.5 luck line, and the +684% champion sits far below it. Source: 100 million BTC/USDT backtests, 2026-07-03.

Side by side, the two rankings are almost mirror images:

ReturnMDDTradesPSRDSR
Best equity curve: long BB(20,1)+StochRSI+684%−27.6%1370.999860.10
Best deflated confidence: pooled long+short+168% / +157%−10.3% / −5.5%37 / 35 → 720.9985 / 0.99910.9502

The pooled row has no single equity curve of its own, so each per-strategy figure shows its two legs split (long / short); only the trade count and DSR are the pooled result. Read the PSR column: both rows clear a plain significance test with room to spare, yet their deflated confidence sits at opposite ends of the scale. Return is the loudest metric and the least trustworthy; DSR is the quiet one that reorders everything. That 0.9502 is the subject of Section 7.

Before leaving the leaderboard, run the scale check every crypto trader asks for: buy-and-hold. Over this same window, just holding BTC returned about +443%, with a −77.6% drawdown along the way. Exactly 40 of the 99,878,688 backtests beat that on raw return, and the highest Deflated Sharpe among those 40 is the champion's 0.10. Read the pairing carefully: it is possible to beat the market over 5.7 years and still sit below the luck baseline, because raw return measures exposure to a path, not evidence of skill. Evidence is the axis this funnel sorts on; the return column is where luck hides best.

5. Read the spectrum, not the cliff

0.95 is the mirror of p < 0.05, a convention, not a cliff. DSR is a continuous confidence gauge, and where you draw the line is your risk tolerance, not a law of nature. Treating 0.95 as a magic gate that either grants or denies "realness" imports the exact false certainty that overfitting thrives on. So instead of counting who crossed one line, look at where the 3,130 survivors actually sit.

DSR bandStrategies
0.5-0.61,577
0.6-0.7917
0.7-0.8433
0.8-0.9203
0.9 and up0

The distribution has a clear shape: it thins as confidence rises and then stops. Not one single strategy in a hundred million cleared DSR 0.9. The strongest individual strategies stall at 0.871 (long) and 0.898 (short), close to the 0.9 wall but never past it. And yet one number in this dataset sits at 0.9502, out in the empty space beyond the wall, and it does not belong to any single strategy at all. What lands there, and how it got past a wall a hundred million single strategies could not, is the whole subject of Section 7.

There is an honest tension in these survivors, and it is worth naming rather than smoothing over. Every one of them traded between 30 and 63 times, averaging about 36. Two readings fit that fact equally well: selective triggers mean higher per-trade quality, or small samples mean luck that has not yet washed out. In-sample, those two stories are indistinguishable. Only forward data decides which one you are holding.

An objection worth running down before moving on, because it decides how much to trust the wall: maybe the bar itself is unfair to strategies that trade rarely, and a population with real sample sizes would put plenty of names past 0.9. That is testable, so we tested it. We ran a second scan, 99,486,720 more backtests on the same market, the same costs, and a matching 50,000-bar window, this time stacking three indicator conditions per strategy instead of two (256 variations, every three-way combination, 18 exit settings). Because each condition is a persistent state rather than a momentary trigger, that population trades constantly: the median strategy closed roughly 340 trades, and 85% cleared the 30-trade floor outright. The deflation gate did not budge. In that population, at 30 or more trades, twelve strategies out of ~95 million valid trials cleared even DSR 0.5, zero cleared 0.95 in either direction, and past 100 trades nothing cleared 0.5 at all. Trade volume alone cannot buy the filter's approval, because evidence is per-trade quality times sample size, and volume without quality goes nowhere. The survivors above hold the opposite corner, quality without volume, and that is exactly the gap Section 7 closes: pooling two strong survivors adds sample size without giving up quality.

6. A subplot: BTC's 1-hour chart is a graveyard for shorts

A good long is not a good short flipped. The two directions behaved nothing alike. The median long strategy ran a Sharpe of −0.136; the median short, −0.466; and only 15% of shorts even cleared a Sharpe of zero, against 36% of longs. Bitcoin's 5.7-year uptrend punishes a naive short far more than it rewards a naive long, and no amount of parameter tuning changed that.

We take the best 10,000 longs (n at least 30) and drop the same configurations onto the short side: their average Sharpe is −0.58, and across configurations, long-side and short-side performance correlate at just 0.148. That near-zero correlation is the point. A configuration's long edge tells you almost nothing about its short edge, so combining a long and a short is not double-counting the same bet; it is pooling two nearly independent games.

That leaves a number upstream looking paradoxical, so let us disarm it: 2,713 of the 3,130 gauntlet survivors are shorts. A graveyard with more survivors? The resolution is that the funnel grades each direction against its own luck bar, and the short side's bar sits lower (SR* 0.4442 against 0.4743, because short Sharpes are less spread out). The median short is far worse than the median long, but survivors are not drawn from the median; they come from the extreme tail measured against that direction's own hurdle, and at those hurdles the short tail simply put more names past the line (3,332 against 487 even before the forward gates). A worse average and a larger survivor count can coexist, and neither one says shorts generalize better.

7. Combine long and short with zero extra backtests

You do not need to backtest pairs. Combining two strategies is a closed form in their moments. Two same-asset legs, a long and a short, trade at different times, so the composite's per-trade Sharpe can never exceed the better of its two components (a one-line consequence of the Cauchy-Schwarz inequality). The gain from combining is therefore not quality: it is √n sample pooling, more trades meaning more evidence, meaning a lower luck hurdle relative to the signal.

That single fact kills a tempting brute-force idea. Scanning every long-short pair would be 5e7 by 5e7 = 2.5e15 backtests, and it would teach you nothing new, because a good composite can only be built from good components you have already found. So we evaluated all 417 by 2,713 = 1,131,321 pairs of gauntlet survivors with zero extra backtests, in seconds, straight from their moments. The hurdle rises honestly with the larger pooled trial count: adding those 1,131,321 pairs to the 95.1 million original trials gives N = 96.2 million, and SR* = 0.4695. The composite and its two components are all scored against that same pooled bar, so nothing here is being graded on a curve.

The result: composite DSR > 0.95 = 3 pairs, all one MACD+BB by MACD+StochRSI family, so effectively one idea, with a best of 0.9502; composite DSR > 0.99 = 0. The best single component on that pooled hurdle was the top pair's own short leg at 0.878 (single-strategy scores move slightly on the shared bar, which sits between the two per-direction bars of Section 5), and pooling it with its long partner lifted the pair to 0.950. That is the √n effect made concrete. The top pair was a long MACD(16,13,5)+BB(50,2) [37 trades, +168%] combined with a short MACD(16,37,6)+StochRSI(3,4,28,22) [35 trades, +157%], giving 72 trades at a per-trade Sharpe of 0.758 (about 12 annualized): an arithmetic estimate, not a backtested result, and not investment advice.

And yes, that long leg is an unconventional MACD: its fast period (16) is longer than its slow (13), a sign-flipped variant the grid legitimately contains. We flag it rather than smooth it over. A search this wide will hand you strange corners, and the honest response is not to retell them as insight but to ask the deflation math how much evidence they carry. On their own, neither leg of this pair, and no single strategy anywhere in the scan, cleared 0.9; pooling is what crossed 0.95.

This is the 0.9502 from Section 5 finally explained, and it is the moment the whole funnel was built to reach. Only pooling a long and a short pushes past the 0.95 line, and only barely. A hundred million single strategies could not get there; one combined idea grazes it. That is the shape of a real edge in this data: not a cliff you clear with room to spare, but a line you cross by a hair.

It is also the working pattern this whole exercise argues for. Search wide in each direction, deflate hard, keep only what clears the luck baseline with a real sample, then pool complementary survivors and let the combined evidence speak. A hundred million backtests could not produce one convincing strategy on their own, but they did demonstrate a repeatable procedure that built one credible candidate out of two marginal ones, and the procedure, unlike the pair itself, is not fitted to this data. Every step of it is a number, not a judgment call. We take the full distribution of these 1,131,321 pairs apart, and the rule for when combining actually pays, in How to Combine Two Trading Strategies.

8. Do it yourself

Since this study ran, we shipped the verdict into the file itself. A Rulyfi full-export (the "Save all results" toggle on a scan; the download is one parquet file per direction) now carries a per-row dsr column on any paid plan: every strategy's Deflated Sharpe, computed against your scan's own trial count with the exact production formula. The entire Section 4 gauntlet becomes one query on four columns:

SELECT count(*) FROM 'your-export.parquet'
WHERE tradeCount >= 30 AND dsr > 0.5
  AND wfEfficiency > 0 AND forwardNegFolds = 0

The raw ingredients ship alongside it: srObs, skew, kurt, tradeCount, totalReturn for the deflation math, wfEfficiency and forwardNegFolds for the forward gates in the query above, and direction plus variantIndices to identify and pair legs. So you can rebuild the number from scratch and catch us if it disagrees. The per-strategy deflation, at whatever threshold you choose, is:

z = (srObs − SR*) · √(n−1) / √(1 − skew·srObs + (kurt−1)/4 · srObs²)
DSR = Φ(z):  DSR > 0.5 ⇔ z > 0,  DSR > 0.95 ⇔ z > 1.6449
SR* = std(srObs across trials) · Φ⁻¹(1 − 1/N)

Compute SR* once from the whole population (the standard deviation of srObs across every trial, times the standardized hurdle for your N), then apply the z-formula row by row. Production uses the paper's two-term expected-maximum formula; the single-term version above lands within about 2% of it, and the exact SR* your scan used ships in the file's metadata, so your recomputation has a ground truth to hit. The composite math is the same spirit: recover each component's mean and standard deviation by inverting its compounded totalReturn, take a trade-weighted sum of the two legs' raw moments, and read the pair's per-trade Sharpe straight out of the mixture.

We verified the pipeline three ways, and this is the check worth copying. The server, the offline parquet recomputation, and a hand recompute all returned the same PSR to the last digit (0.7793056243774812, for one ordinary row we pulled as the audit fixture: a 286-trade short at a per-trade Sharpe of 0.045, the 0.71478 you would see annualized). To be precise about what that proves: three separately written implementations agreeing to sixteen digits rules out silent unit, rounding, or column drift between the screen, the file, and the formula. The method itself stands on the papers, not on our agreement with ourselves; the cross-check is still the habit worth stealing before you trust anyone's numbers, ours included.

One honest note on scope: what we shipped is the number, not a verdict button. The dsr column tells you where each strategy stands against luck; the funnel, and the judgment about where your line sits, is the part this article teaches.

9. Caveats

If a method's failure modes make you trust it less, it was overselling. Here are ours.

  • Stationarity. DSR assumes returns are drawn from a stationary distribution, and 5.7 years of Bitcoin spans regimes (the 2021 bull, the 2022 collapse, the 2024 to 2025 grind) that the assumption flattens. Past distributions do not guarantee future ones.
  • Small-sample moment noise, which cuts both ways. Survivors sit at 30 to 63 trades, exactly where the skew and kurtosis terms that do the deflation are themselves noisy, which is why unfiltered DSR > 0.95 balloons to 8,449, all tiny-N (1 to 10 trades for 8,420 of them). "Selective quality" and "unwashed luck" are indistinguishable in-sample; only forward data separates them. (What the three-condition scan in Section 5 rules out is a third reading, that the bar itself was rigged against small samples: handed plentiful trades, it stayed exactly as hard to pass.) The 30-trade floor is hygiene, not statistics.
  • Our N is a floor, not the truth. We deflated for the ~95.1 million trials we ran (96.2 million once the synthesized pairs are counted). But MACD, RSI, and Bollinger Bands, the very indicators we combined, are the residue of decades of human data-mining. The real number of attempts behind them is unknowable and larger, so our SR* is understated and every confidence figure we report is, if anything, optimistic.
  • The short leg carries no financing here. Shorts are modeled on the price series with the same fees as longs; a live short also finances the position, paying borrow interest on spot margin, or paying or receiving funding on perpetuals. The short half of the pooled pair in Section 7 inherits that gap between model and venue.
  • The synthesis is arithmetic, not a re-run. The 0.9502 figure is closed-form from component moments. It assumes non-overlapping trades, reconstructs mean return by inverting compounded totalReturn (a second-order approximation), and only grazes 0.95. It has not been end-to-end re-backtested: a rigorous estimate, not a result.
  • Costs are modeled, not filled. Fees and slippage are flat constants (0.04% taker fee, 0.01% slippage); partial fills and real liquidity sit outside the model. And when a take-profit and a stop-loss are both touched inside the same bar, this scan's setting fills the take-profit first, the optimistic convention (the scanner also offers a conservative mode that fills the stop first). On 1-hour bars that choice flatters in-sample results at the margin.
  • Weak OOS. Two-fold walk-forward rejects the worst overfits but is not purged or embargoed cross-validation. Treat OOS > 0 as a coarse filter, not a certificate.
  • DSR is an evidence level, not a signal. A 0.898 means "less likely to be luck than most," never "will make money."

10. What this does and doesn't mean

A hundred million backtests did not hand us a strategy. They handed us a shortlist to investigate and a calibrated sense of how much of what we saw was chance. That is not a disappointing answer, it is an honest one. Significance is cheap, deflated confidence is rare, and even the rarest survivors sit on a slope, not on the far side of a magic line. And when a result finally did hold up, it came from pooling evidence rather than from a hero strategy: a repeatable method, not a lottery ticket. The number that separates a real edge from a lucky one was there the whole time; we just had to count the search to see it.

The survivors are rare, but they are not hidden. Every gate in this article is a number the Rulyfi scanner computes: PSR, the Deflated Sharpe, and walk-forward when you switch it on. A full-export, which every plan can save at no extra cost, now carries the Deflated Sharpe as a per-row dsr column next to the raw columns behind it, so this exact funnel, and the composite-strategy math, run directly on your own scans; the validation columns (dsr among them) come with any paid plan (see pricing). Point it at your own idea and read the confidence spectrum, not the leaderboard. The tool worth trusting is the one that computes the luck-adjusted bar for you, not the one that promises to find winners.

For why these numbers inflate in the first place, see Your Crypto Backtest Is Lying to You; for how to read the individual metrics as a stack, see How to Read Your Backtest Results. This post is the measurement that sits between them.

Frequently asked questions

What is the Deflated Sharpe Ratio? It is the Probabilistic Sharpe Ratio with the benchmark raised from 0 to SR*, the Sharpe you would expect from luck across N trials. A DSR of 0.95 is the mirror of p < 0.05: a convention for "unlikely to be luck," not a guarantee of profit. It only makes sense against a known population of trials.

Why did 336,818 backtests pass but only 3,130 survive? Individual significance ignores how many times you tried. The 336,818 cleared a test against zero; the 3,130 also cleared deflation against the luckiest fluke in ~47.5 million trials, plus a 30-trade floor and an out-of-sample check. The extra gates remove the mirage that a single significance test leaves behind.

Can I compute DSR on a single strategy? No. DSR needs the population of trials it was drawn from, which is why it is a scanner metric rather than a single-backtest one. On one strategy in isolation, the furthest you can honestly go is PSR, which grades it only against zero.

Can I get the Deflated Sharpe for every strategy in my scan? Yes. A full-export saves every result as a parquet file, and on any paid plan it includes a per-row dsr column computed with the production formula, next to the inputs (srObs, skew, kurt, tradeCount) to recompute it yourself. Free exports carry the basic result columns only.


Auto-trading and trading carry a risk of losing your principal. This article is educational, does not guarantee profit, and past backtest results do not predict future returns.

Footnotes

  1. Bailey, Borwein, López de Prado, Zhu (2014), "Pseudo-Mathematics and Financial Charlatanism: The Effects of Backtest Overfitting on Out-of-Sample Performance", Notices of the American Mathematical Society, 61(5).

  2. Bailey, D. H., & López de Prado, M. (2012). "The Sharpe Ratio Efficient Frontier". Journal of Risk, 15(2). (Probabilistic Sharpe Ratio)

  3. Bailey, D. H., & López de Prado, M. (2014). "The Deflated Sharpe Ratio: Correcting for Selection Bias, Backtest Overfitting, and Non-Normality". The Journal of Portfolio Management, 40(5).

deflated-sharpebacktest-overfittingprobabilistic-sharpemultiple-testingwalk-forward