FullStack Alpha
Free Tool

Backtest Reality Check: Is Your Edge Real or Curve-Fit?

Enter your backtest results. Get the statistical confidence interval, the cost-adjusted expectancy, and an honest read on whether you have an edge or a fitted curve.

r/stocks
“I spent 6 months building an AI predictor that had 82% backtest accuracy on S&P stocks. Live trading? 51%. Basically a coin flip with extra steps.”
r/algotrading
“Every time something underperforms i add a regime filter, a time of day filter, a vol filter, and in the end the 'edge' is just curve fit”

Why this tool exists

Those two comments are the same story told from either end. One trader watched an 82% backtest become a coin flip in live trading. The other described exactly how that happens: each disappointing result gets another filter bolted on until the strategy fits the history perfectly and describes nothing about the future.

The uncomfortable part is that a backtest curve looks identical either way. A genuine edge measured across 900 trades and a curve fitted to 80 trades with six tuned parameters both produce a smooth line sloping up and to the right. What separates them is not the shape of the equity curve, it is the sample size behind it, how many knobs were turned to get there, and whether the edge is large enough to survive commissions and real fills.

This tool runs those checks. It computes cost-adjusted expectancy, the Wilson confidence interval around your observed win rate, how many trades you have per optimized parameter, and how many trades the win rate would need before it means anything statistically. It also shows what the win rate feels like in practice, because a 55% strategy still hands you long losing streaks.

It works on the numbers you type in. It cannot see your code, verify your data, or replay your fills — and it makes no judgement about whether to trade the strategy. It only tells you how strong the evidence is.

  1. Step 1 of 4: Results
  2. Step 2 of 4: Costs
  3. Step 3 of 4: Build
  4. Step 4 of 4: Context
Step 1 / 4 · Results

Closed trades, not bars or signals.

The percentage of those trades that closed profitable.

Enter it as a positive number.

Units

Whichever you tracked. The math is the same either way.

Why backtests lie

Three mechanical problems inflate almost every backtest before curve fitting even enters the picture. Lookahead bias is the first: the test uses information that was not available at the moment of the trade — a closing price to trigger an entry at the close, a restated earnings figure, an index membership that was announced later. The result is a strategy that trades on knowledge the live version will never have.

Survivorship bias is the second. Screen today's index constituents across ten years of history and you have quietly excluded every company that went to zero, got delisted, or was acquired at a discount. The universe you tested outperformed by construction.

Optimistic fills are the third and the most common. Backtest engines fill at the price you asked for, in full, instantly. Real markets fill you at the touch, partially, after the move you were reacting to has already happened. The tighter the timeframe and the thinner the instrument, the larger that gap becomes — which is why a strategy that dies on slippage in this calculator usually dies in live trading too.

What is curve fitting?

Curve fitting is tuning a strategy until it describes one specific stretch of history rather than a repeatable market behaviour. It rarely feels like cheating while it happens. A rule underperforms, so you add a volatility filter. Results improve. A drawdown appears in one quarter, so you skip the first thirty minutes of the session. Results improve again. Each individual change is defensible, and the equity curve gets smoother with every one.

The rule of thumb is trades per optimized parameter. Every threshold, lookback length, time window, and filter you tuned counts as one parameter, and each one gives the strategy another degree of freedom to bend around the data. Under about 30 trades per parameter, the fit is doing most of the work. Between 30 and 100 you are in a grey zone. Over 100, the result starts to survive on structure rather than tuning.

The check that actually settles it is out-of-sample data: parameters chosen on one period, results measured on a period the tuning never touched.

How many trades do you need?

More than most backtests contain. A win rate measured over 40 trades carries a 95% confidence interval roughly fifteen percentage points wide in each direction — a 60% result is consistent with a true rate in the mid-forties. That interval is often wider than the edge being claimed, which is why small-sample backtests can be simultaneously accurate and useless.

Narrowing the interval to about five percentage points typically takes several hundred trades, and the requirement grows as the win rate approaches 50%, where variance is highest. This is also why intraday strategies reach statistical significance faster than position strategies: not because they work better, but because they generate the sample far more quickly.

Backtesting questions, answered

This is statistics on numbers you provide. It can't verify your backtest, see your code, or tell you whether to trade the strategy. Read our disclosure.