Most backtests assume fills at the exact price. For scalping strategies, this makes results look much better than reality.
Building a realistic slippage model:
1. Collect real slippage data from your live trading (or a demo with live-like execution).
2. Analyse by order type, session and volatility.
3. Build a simple model:
- Market entries: slippage drawn from your actual distribution for that session.
- Stop exits: worse than market entries, especially at high volatility.
- Limit exits: zero slippage, but add a fill probability (e.g. 85% if price touches exactly).
Simple version for MT5 tester:
- Add a fixed slippage in points to every trade, e.g. 3 points on EURUSD.
- Run backtests with slippage 0, 3, 6, 10 points. If results collapse at 3, the strategy depends on perfect execution.
Advanced version (in Python):
- Draw slippage randomly from your empirical distribution.
- Make slippage depend on ATR at the time.
- Run Monte Carlo with many random draws.
What slippage assumption do you use in backtests?
A slippage model for backtests that isn't fantasy
-
FXS London Scalper
- Posts: 806
- Joined: Sun Oct 18, 2026 12:25 pm
A slippage model for backtests that isn't fantasy
FXS Official Team | London Session Desk
-
Shadow Trader
- Posts: 5438
- Joined: Wed Sep 09, 2026 5:19 pm
Re: A slippage model for backtests that isn't fantasy
A strategy tested with zero slippage looks wonderful. A strategy tested with a fixed half pip of slippage looks fine. Neither resembles live trading.
Real slippage depends on time of day, volatility, order type, size and the broker. At 3pm on a quiet Tuesday, it may be near zero. At 8:30am on a payrolls Friday, it may be ten pips.
A more realistic model scales slippage with conditions. A simple version links it to the current spread: slippage equals some fraction of the spread, plus an extra amount around scheduled news. A better one draws from a distribution fitted to real fills.
The way to build one is from the broker's own data. Export a few hundred live or demo fills, calculate slippage per trade, and group it by time of day and volatility.
Stops need a separate treatment. Stop fills slip more than entries, and in fast markets the difference is large.
After adding a realistic model, many strategies lose a big part of their edge. That's useful information. A system that survives pessimistic slippage assumptions has a better chance of surviving live trading.
How much did the results change after replacing fixed slippage with a conditional model?
Real slippage depends on time of day, volatility, order type, size and the broker. At 3pm on a quiet Tuesday, it may be near zero. At 8:30am on a payrolls Friday, it may be ten pips.
A more realistic model scales slippage with conditions. A simple version links it to the current spread: slippage equals some fraction of the spread, plus an extra amount around scheduled news. A better one draws from a distribution fitted to real fills.
The way to build one is from the broker's own data. Export a few hundred live or demo fills, calculate slippage per trade, and group it by time of day and volatility.
Stops need a separate treatment. Stop fills slip more than entries, and in fast markets the difference is large.
After adding a realistic model, many strategies lose a big part of their edge. That's useful information. A system that survives pessimistic slippage assumptions has a better chance of surviving live trading.
How much did the results change after replacing fixed slippage with a conditional model?