Guide · Manual backtesting

How to backtest a futures trading strategy, step by step

Automated backtests need code and rules a computer can follow. Most discretionary day traders backtest by hand instead: replay the market bar by bar, take the trades their rules call for, and log every one. Here’s how to do it so the results actually mean something.

Updated

1. Write the rules down before you look at a chart

A backtest tests a written rule set, not a vibe. Before your first replay, write down:

  • Market and session — for example ES, regular trading hours only.
  • Setup — what has to be true before you consider a trade.
  • Entry — the exact trigger and order type (limit at a level, stop above a high, market on a close).
  • Stop and target — where each goes, in ticks, points or structure.
  • Size — a fixed number of contracts or a fixed dollar risk per trade.
  • Management — breakeven, partials, time stops.
  • No-trade conditions — news, a minimum range, a maximum number of trades a day.

If you catch yourself making a judgment call during the test, stop and add a rule for it. Changing rules halfway through means you’re testing two strategies with half the sample each.

2. Choose the data and the timeframe

Intraday futures strategies need one-minute data at minimum — on a 5- or 15-minute bar you can’t tell whether your stop or your target was hit first. Also check the price basis. Most continuous series are back-adjusted, which shifts historical levels; that matters when your rules reference round numbers or exact prior levels. On Charts Replay, ES is kept at true traded prices from 2016 and NQ is back-adjusted from 2021, and each is labeled.

Pick a period that covers different conditions — a trending year, a choppy year, a volatility spike — rather than the stretch that happens to flatter your setup.

3. Hide the future

The biggest flaw in manual backtesting is hindsight. Scrolling a static chart, your eye goes straight to the setups that worked. Use a replay tool that reveals one bar at a time and decide before the next bar prints. Don’t peek ahead, and don’t skip days that “look boring” — boring days are part of the sample.

4. Use resting orders, not hindsight fills

Saying “I would have bought the low” is not a fill. Place the order the way you would live and let price come to it. A realistic replay engine should:

  • Every one-minute bar is matched before it is drawn, whatever timeframe is on screen — an order placed on a 4-hour chart fills in the minute price actually reached it.
  • Limits fill when price reaches them; stops fill when price crosses them.
  • Gaps are priced against the bar’s open: a buy limit gapped through fills at the better open, a stop gapped through fills at the worse open plus slippage.
  • When several orders trigger in the same bar, stops match before limits.

Include commissions. At $2.50 per contract per side, a one-lot round trip costs $5 — 0.1 point on ES, 0.25 point on NQ — and for scalping strategies that alone can turn a winner into a loser.

5. Log every trade

For each trade record the date and time, direction, entry, stop, target, exit, exit reason (target, stop or manual), size, P&L in dollars and in R, the maximum favorable and adverse excursion (MFE/MAE), and a screenshot or note on the setup. Log the trades you skipped or cancelled as well — they show where your rules are vague.

6. Get a big enough sample

Ten trades tell you almost nothing; a few lucky winners can carry a small sample. A common rule of thumb is at least 100 trades across varied conditions before you trust a win rate, and more if the strategy trades rarely or has a low win rate with large winners.

7. Read the results

  • Win rate — winners ÷ total trades. Meaningless on its own.
  • Payoff ratio — average win ÷ average loss.
  • Expectancy — (win rate × average win) − (loss rate × average loss). This is what you make per trade on average; it must be positive after costs.
  • Profit factor — gross profit ÷ gross loss. Above 1 is profitable; how far above tells you how much room there is for real-world slippage.
  • Maximum drawdown — the deepest peak-to-trough fall in equity. Ask whether you could sit through it live.
  • Results in R — expressing P&L in units of initial risk lets you compare trades, days and markets fairly.

8. Common mistakes

  • Look-ahead: deciding with information the bar hadn’t revealed yet.
  • Cherry-picking days or periods.
  • Ignoring commission and slippage.
  • Changing the rules mid-test.
  • Optimizing the stop and target on the same data you then quote results from.

Doing this in Charts Replay

  1. Create a session: pick ES or NQ, a starting minute, your account size and commission.
  2. Choose continuous replay, or a fixed daily window if your strategy only trades certain hours.
  3. Replay at 2× to 60× or step one bar at a time; switch freely between 1m and 1D.
  4. Place limit, stop and market orders on the chart exactly as you would live. Every new position carries a stop and a target, so its risk is defined before the trade.
  5. Open the session report for win rate, profit factor, payoff ratio, drawdown, the equity curve, the trade calendar and MAE/MFE — every number traces back to a specific trade.

Frequently asked questions

Is manual backtesting worth it?

For discretionary strategies, yes. It’s slower than an automated backtest, but it tests your actual decision-making, including hesitation and execution errors, which code can’t capture.

What timeframe should I backtest futures on?

Trade on whatever timeframe your strategy uses, but make sure fills are judged on one-minute data or finer, so you know whether the stop or the target was hit first.

How many trades do I need?

A common rule of thumb is at least 100 trades across different market conditions before trusting the statistics.

Backtest it on real ES and NQ data

One-minute history, resting orders that have to be reached, and every trade kept for review. 7 days free with Google or Discord sign-up — no card required.

Start backtesting