Now in beta. Get free access before the public launch.

Features

Eight tests that check whether your backtest is evidence or luck.

Every test is built from the original paper, not a simplified stand-in. The math runs on your full trade log, not on the summary numbers your platform prints at the top.

12,870

train/test splits behind the overfitting test on a 16-configuration upload. Each split asks one question: did your in-sample winner survive?

// Bailey et al. (2015)
10,000

reshuffles of your trade order in the Monte Carlo test. If shuffled versions beat you often, luck explains your returns.

// every audit
6/6

real strategies of known quality, graded by the engine in the exact order their real-world verdicts demanded.

// calibration run, Aug 2026
23.2s

slowest full audit in that calibration run. The fastest took 12.6 seconds, on real backtests of 164 to 1,111 trades.

// full 8-test pipeline

How many points can each test take off?

Every audit starts at 100 points. Each test takes points off when it finds something, and the amount is fixed in advance. Nothing is weighted by how the result looks.

TestPoints offWhat it reportsSource
Probability of Backtest Overfitting−35PBO, 0 to 1Bailey et al. 2015
Walk-Forward Degradation−35Degradation ratioPardo 2008
Minimum Sample Size−30Trades vs minimumBailey & López de Prado 2014
Monte Carlo Permutation Test−25p-valueEfron & Tibshirani 1993
Deflated Sharpe Ratio−20PSR, 0 to 1Bailey & López de Prado 2014
Regime Analysis−20HHI, top-quarter shareAng & Timmermann 2012
Parameter Sensitivity−15Coefficient of variationIoannidis 2005
Transaction Cost AnalysisnoneNet vs gross returnAlmgren et al. 2005
// The penalties add up to 180

That is on purpose. A backtest can lose more points than it has, and the score stops at 0 rather than going negative. It is also why two very different failures can both read 0 / F. Transaction costs are the one test with no penalty attached. Broker fills vary too much for a fair universal deduction, so we show you the number and leave the decision where it belongs. See the exact thresholds for every test →

Test 01

Probability of Backtest Overfitting

Test 50 parameter combinations and keep the best one, and you have not found an edge. You have found the combination that got lucky. The test for this is called PBO. It splits your backtest into 12,870 different pairings of a training half and a test half.

Each split asks the same question. Did the combination that won in training also win in testing? The share of splits where it did not is your PBO. Above 50%, your best strategy was more likely picked by luck than by skill.

Catches: parameter optimization overfitting, multiple comparisons bias, in-sample bias.

Fourteen plain points are plotted with in-sample rank on the horizontal axis, 0 to 100, and out-of-sample rank on the vertical axis, 0 to 100. A dashed diagonal marks where the two ranks would agree perfectly. The points show no such pattern: at almost every in-sample rank there are points high and low on the out-of-sample scale. One highlighted point at the far right, labelled the in-sample winner and 8th out of sample, sits near the bottom of the plot. The annotation reads PBO equals 73 percent, high overfitting.Perfect correlationIS Rank (in-sample performance)OOS Rank01000100IS winnerOOS rank: 8thPBO = 73%High overfitting
Test 02

Walk-Forward Degradation

A real edge gives back a little on new data. It does not collapse. So we hold back the last 30% of your backtest. Your strategy never touched that stretch during development. Then we measure how far performance falls when it gets there.

A degradation ratio above 0.8 means less than a fifth of the performance went missing. That is acceptable. Below 0.2 is critical and takes the maximum penalty. Most retail backtests land under 0.2. In plain terms, 80% of the returns you were counting on were never there.

Catches: in-sample overfitting, regime-specific fitting, forward-looking data leakage.

Walk-Forward Analysis · EMA_Cross_v3
In-sample (70%)Out-of-sample (30%)
A dashed vertical divider separates the left 70 percent of the chart, labelled in-sample, from the right 30 percent, labelled out-of-sample. The solid line climbs without interruption from 0 percent to roughly 70 percent across the in-sample period. From the divider onward the dashed line turns down and falls back to under 20 percent by the end of the out-of-sample period. The annotation records Sharpe falling from 2.1 to 0.4, a degradation of 81 percent.0%20%40%60%IN-SAMPLEOUT-OF-SAMPLESharpe 2.10.481% degradation
Test 03

Monte Carlo Permutation Test

Your backtest made money. The open question is whether that took skill or a good run. We shuffle the order of your actual trades 10,000 times and count how often a random ordering beats you.

If 31% of random orderings beat you, your p-value is 0.31. Not significant. Below 0.05 passes cleanly. Above 0.10 takes the full penalty. The test ignores the shape of your equity curve on purpose. It asks one thing. Do the trades you picked show skill?

Catches: equity curve shape overfitting, lucky trade sequences, path-dependent strategies.

Monte Carlo · 10,000 random trade orderings vs. actual strategy
Sixteen bars run from low Sharpe on the left to high Sharpe on the right, rising to a peak just past the middle and tapering away at both ends. A dashed vertical line marks where the actual strategy falls, on the low side of that peak and well short of the right tail. The annotation states that 31 percent of the random orderings beat the strategy, for a p-value of 0.31, labelled Not significant.Your strategy31% beat your strategyLow SharpeHigh SharpeFreqp-value: 0.31Not significant
Test 04

Deflated Sharpe Ratio

Your raw Sharpe ratio is almost certainly too high. Bailey and López de Prado (2014) showed that every extra configuration you try raises the best Sharpe you would expect from pure chance. A Sharpe of 1.4 after 30 tries can be nothing but noise.

The Deflated Sharpe Ratio corrects for that. It works out the lowest Sharpe that would still mean something, given how many configurations you tested. Clearing the raw bar is easy. Clearing the deflated bar is the part that counts.

Catches: multiple testing bias, inflated performance from extensive optimization.

The horizontal axis counts configurations tested on a log scale, marked 1, 5, 10, 25 and 50; the vertical axis is the required Sharpe, marked 0.5 through 2.0. The rising curve starts near 1.0 at a single configuration and climbs past 2.0 by 50 configurations. A dashed horizontal line marks a strategy Sharpe of 1.4. The two cross early on, and the whole area to the right of that crossing and below the strategy line is shaded and labelled as failing the threshold above about six configurations.0.51.01.52.015102550Configurations tested (log scale)Required SharpeYour Sharpe: 1.4Fails threshold above ~6 configsRequired SRthreshold
Test 05

Regime Analysis

Markets move between three moods. Trending, when prices run in one direction. Ranging, when they chop around a mean. High-volatility, when uncertainty spikes and news drives everything. A strategy that prints money in one of them can bleed in another.

We label each quarter of your backtest by regime, then compute returns inside each one separately. A strategy that only works in trending markets is not a diversified edge. It is a bet that one market condition keeps going.

Catches: regime-specific overfitting, strategies that look diversified but concentrate regime exposure.

Bars run above and below a zero line on a scale from plus 10 to minus 10 percent. The five trending-regime bars are all positive, between about 2 and 12 percent. The four ranging-regime bars are small, three of them losses of 1 to 4 percent and one a gain of about 3 percent. The three high-volatility bars are all losses, at roughly minus 6, minus 9 and minus 7 percent, and the annotation reads: losing in high-vol regimes.+10%0%−10%TrendingRangingHigh-volLosing inhigh-vol regimes
Test 06

Minimum Sample Size

Statistical claims need enough trades behind them. Bailey and López de Prado (2014) derived the minimum number of trades a Sharpe ratio needs before it means anything, given how many configurations you tested.

Test 50 configurations and keep the best, and you need far more trades than someone who ran one strategy once. 30 trades is not enough for most real situations. We show you where your strategy sits on that curve, and how far short it falls if it does.

Catches: over-optimistic significance claims from small sample sizes, underpowered tests.

The horizontal axis counts trades from 10 to 200 and the vertical axis the minimum required Sharpe, from 0 to above 2. Three curves are drawn, one solid for a single configuration and two dashed for 10 and 100 configurations. Each begins high at 10 trades and drops sharply before levelling out past 100 trades, and the 100-configuration curve stays above the other two across the whole range. A highlighted point at 47 trades and a Sharpe of about 1.4 sits above all three curves and is labelled as passing.01.02.01050100200Trade countMin required SharpeYour strategypasses (47 trades)1 config10 configs100 configs
Test 07

Transaction Cost Analysis

Most backtests assume perfect fills at the bid or ask with zero commission. Real trading pays slippage on the way in and the way out, plus commission and spread. Small per trade. Over hundreds of trades, a serious drag.

We rebuild your equity curve with realistic cost estimates for your asset class: futures (0.05–0.1% slippage plus exchange fees), forex (1–2 pip spread), crypto (0.05–0.2% exchange fee plus 0.1–0.5% slippage). The two curves, before and after, show what execution actually takes.

Catches: strategies that only work with zero-cost assumptions, high-frequency strategies with small per-trade profit.

The vertical axis is account value, marked 10, 12 and 14 thousand dollars. A solid line traces equity before costs, rising steeply through the middle of the period and flattening near the top of the chart at plus 52 percent. A dashed line traces the same strategy after realistic trading costs; it follows the same shape but much shallower, ending at plus 12 percent. The two start together and the gap between them widens across the whole period.$10k$12k$14k+52% (no costs)+12% (with costs)Gross returnsAfter realistic costs
Test 08

Parameter Sensitivity

A real edge does not care whether your RSI period is 14 or 13. A strategy that works at 14 and falls apart at 12 or 16 is not a discovery. It is a curve fitted to history. We move each parameter by ±20% and watch what the Sharpe does.

A narrow peak with steep sides is a warning. A flat plateau, where the strategy performs about the same right across the range, is evidence the edge does not live or die on one magic number.

Catches: curve-fitted parameters, strategies dependent on exact magic numbers.

The RSI period parameter runs along the horizontal axis from 5 to 30 and the Sharpe ratio up the vertical axis from 0 to above 2. The curve climbs from about 0.5 at period 5 to a sharp peak of 1.62 at period 14, the value marked by a dashed vertical line as the one actually tested, then falls away steadily to roughly 0.2 by period 30. The annotation notes that the Sharpe drops 78 percent outside the band from RSI 12 to 16.01.02.05152530RSI period parameterRSI=14 testedSR: 1.62SR drops 78%outside RSI 12–16

How does OverfitCheck compare to the alternatives?

BacktestBase is the closest thing to a competitor. “Manual Python” means building these tests yourself from the papers, which is a real option and the reason we rate the difficulty honestly instead of pretending it cannot be done.

FeatureOverfitCheckBacktestBaseManual Python
PBO / CSCVComplex
Deflated Sharpe RatioComplex
Walk-Forward AnalysisModerate
Monte Carlo Permutation TestModerate
Regime AnalysisComplex
Minimum Sample SizeComplex
Transaction Cost ModelingEasy
Parameter SensitivityModerate
Bootstrap confidence intervalsComplex
Calibrated on real strategies of known ground truth
Plain-English explanations
Shareable results link
PDF export
// Validated against ground truth

One claim no competitor makes. We ran the engine on six real strategies whose quality we already knew: a live, validated edge and the strategies its research program killed. The killed ones graded F. The live edge graded B. Sorting all six by the engine's continuous outputs reproduced the real-world ordering exactly. The same report lists what the engine gets wrong. Read the calibration report →

Which platforms can I upload from?

Three ways in: a TradingView XLSX export, a MetaTrader 5 Strategy Tester report, or a CSV trade log from anything else. All three run the same eight tests on the same engine.

TradingView
Live

XLSX from the Strategy Tester. Upload it exactly as exported.

MetaTrader 5
Live

The Strategy Tester HTML report. Every trade we parse is checked back against the report’s own balance column.

Any-platform CSV
Live

One row per trade with a P&L column. We fuzzy-match the column names.

QuantConnect
V1.5

Export a CSV and it works today. Direct API import lands in V1.5.

NinjaTrader
V2

Export a CSV and it works today. The native format lands in V2.

// Before you upload

Send the file as your platform exported it. Opening and resaving in Excel or Sheets can break the formatting we read. The upload limit is 20 MB. Ten completed trades is the hard floor, and 30 to 50 is where the other tests start to mean anything. Below that we still run, and we say plainly that the evidence is too thin. Step-by-step export instructions →

Roadmap

Four capabilities specced from findings of the research program behind our calibration set. They are listed so you can see where this is going. None of them is for sale, and none will be until it exists and has been checked on real logs.

Roadmap
Session-anchoring integrity check

Timestamp forensics on your trade log. Does the backtest trade the session you think it trades? This catches daylight-saving drift and server-clock changes. That class of defect quietly shifts years of backtest trades by an hour, and nothing in your platform tells you.

Roadmap
Cost-geometry test

Costs measured against each trade’s own stop distance instead of as a haircut on returns. You get a breakeven win rate per era to hold against your realized win rate, and a flag on any era that was unpayable before the first trade was placed.

Roadmap
Era-consistency check

Finds fixed parameters whose meaning drifted over a long backtest. A stop set in price units, on an instrument that grew several-fold, makes the early and late halves of your test two different strategies wearing one name.

Roadmap
Prop-survival simulator

Thousands of resampled challenge and funded-phase paths against versioned prop-firm rulesets, floating drawdown included. Payout accounting is strict: only swept payouts count, and every payout shrinks your buffer. You get P(pass), P(breach), and the risk per trade that actually maximizes expected cleared payout.