backte.st

How to read a backtest report without fooling yourself

Net return, drawdown, trade count, buy and hold, and robustness checks: what each number in a backtest report tells you, and what it can’t.

A backtest answers one narrow question: what would these exact rules have done on this exact data, under these assumptions? It does not tell you what will happen next. Reading a report well means knowing which numbers carry weight and which ones are easy to flatter.

Start with the assumptions, not the return

Before you look at any result, check how the test was run. In Backte.st every report lists them under Data & assumptions:

If a report you are reading elsewhere doesn’t state its fill rules and costs, treat its return as an upper bound at best.

Net return and buy and hold

Net return is the change in account value after costs. On its own it says little, because most markets drift. That is why each report also shows buy and hold at the same allocation: if your strategy invests 20% of equity per trade, the comparison holds 20% of equity in the market for the whole period.

A strategy that beats buy and hold may still be worse in practice if it does so with far more trades (more costs, more taxes) or a deeper drawdown.

Max drawdown: the number you will actually feel

Max drawdown is the worst peak-to-trough drop in account value. It is usually the figure that decides whether a real person sticks with a strategy. Two strategies with the same return can feel completely different if one of them halved the account along the way.

Remember that the drawdown in a backtest is only the worst drop in that particular sequence of trades. The trade-order shuffle shows how much worse it could plausibly be.

Trade count: is there enough evidence?

A handful of trades can produce almost any return by luck. Backte.st marks a check as Too few trades rather than pretending to judge it. If your report has only a few closed trades, try a longer history, smaller candles or more markets before drawing conclusions.

The robustness checks

The headline result is one run under one set of assumptions. The checks re-run the same rules under harsher conditions:

  1. Unseen period: the last 30% of history scored on its own. See out-of-sample testing.
  2. Doubled costs: commission and slippage doubled. See transaction costs.
  3. Nearby parameters: every indicator period shifted by ±10% and ±20%. See parameter robustness.
  4. Delayed entry: every order filled one bar later. See look-ahead bias and timing.
  5. Best trades removed: the five most profitable trades dropped. See overfitting.
  6. Trade-order shuffle: 200 reshuffles of the trade order. See Monte Carlo.

A check holds up when the strategy still has a positive return under that condition, and it needs at least 10 closed trades to judge (20 for the shuffle). A Weak spot doesn’t mean the idea is worthless. It tells you where the result depends on something fragile. Held up everywhere is a good start, not proof of an edge.

What a report can’t tell you

Use a backtest to rule ideas out quickly and cheaply. That is where it is most honest.

Try it in the lab

Build a strategy from indicators, no code needed, run it on a few markets and see this check on your own rules. It’s free and runs in your browser.

Open the lab