Slippage is the difference between the price a trade was expected to fill at and the price it actually filled at. An order sent at one price doesn't fill instantly - there's always some delay, even if it's a fraction of a second - and if the market moves during that gap, the fill reflects wherever price actually is by the time the broker executes it, not the price shown on screen when the button was clicked. It's most visible during fast-moving conditions: a news release, a thin-liquidity session, or a weekend gap between Friday's close and Sunday's open can all move price enough in that brief window to produce a noticeably different fill. Slippage isn't a broker malfunction or a sign something is wrong - it's a structural feature of how market-execution trading works, and it can move the fill in either direction, not just against the trader. The practical question isn't how to eliminate it, which isn't fully possible on a market-execution account, but how to know when it's likely to be larger and how to keep a strategy's risk sizing honest about it.
Why it happens
Every order takes some real time to travel from the trading terminal to the broker's server and back, and price is free to move during that window. Four conditions make the gap bigger: high volatility (price is simply moving faster, so the same delay covers more distance), low liquidity (fewer resting orders at each price level, so a market order has to reach further to get filled), scheduled news events (volatility and liquidity both move against the trader at once, for a few minutes), and gaps between sessions, where price can open somewhere completely different from where it closed with no trading in between to fill the difference gradually.
Positive vs. negative slippage
Negative slippage means a worse fill than expected - a buy filled higher than requested, or a sell filled lower. Positive slippage is the mirror image: a buy filled lower than requested, or a sell filled higher, which is a better outcome than intended. Both are the same underlying phenomenon - price moving during the fill delay - and on a genuine market-execution account either one is possible on any given order, not just the unfavorable one. A trader who has only ever noticed the negative kind usually just hasn't been paying attention to the other half.
Market execution vs. instant execution
| Instant execution | Market execution | |
|---|---|---|
| Fill price | The quoted price, or the order is rejected/requoted | Whatever price is available at execution - can differ from the quote |
| Can slip | No - it either fills at the quote or doesn't fill at all | Yes, in either direction |
| Can get a requote instead | Yes, common on this model | No - it fills somewhere, rather than bouncing back unfilled |
| Where it's common | Some dealing-desk/fixed-spread brokers | Most ECN/STP and MT4/MT5/cTrader retail accounts |
Most retail forex and CFD accounts run market execution, which is why slippage - not requotes - is the thing an automated strategy actually needs to plan for.
Why a backtest doesn't have it
A standard backtest fills every order at the exact price recorded in the historical data file, because that's the only price the file has - there's no delay to model and no alternate price to fill at instead. That makes backtested results systematically optimistic compared to live trading unless slippage is explicitly added back in, which most platforms support as a manual assumption but don't apply by default. See backtesting vs. demo trading for the fuller list of what a backtest can and can't tell you - a demo account, running against a real live feed, is the step that actually exposes a strategy to slippage for the first time.
Reducing its impact, not eliminating it
A maximum-deviation (or "max slippage") setting tells the broker to reject a fill rather than accept one worse than a specified tolerance - the order might not execute at all in a fast move, but it won't silently fill far from where intended either. Avoiding new entries in the minute or two around major scheduled news releases sidesteps the single largest, most predictable spike in both slippage and spread. And sizing stops with a small buffer beyond the bare minimum, rather than placing them exactly at the theoretical risk limit, keeps an ordinary bit of slippage from turning an expected loss into a larger surprise one. None of this requires predicting the market - it's the same category of fix as ATR-based stop sizing: building for realistic conditions instead of the exact number a backtest happened to show.
Common questions
What is slippage in trading?
Slippage is the difference between the price a trade was expected to fill at and the price it actually filled at. It happens because price can move in the time between an order being sent and the broker actually executing it, so the fill reflects wherever the market is at that later instant, not the price shown when the order was placed.
Is slippage always bad?
No. Slippage can be negative (a worse price than expected) or positive (a better price than expected), and on a market-execution account both are possible on any given order. It's an unavoidable side effect of price moving between order and fill, not a one-directional cost.
Why doesn't a backtest show slippage?
A standard backtest fills every order at the exact historical price in the data file, because that's what the file recorded - it has no concept of the delay, spread widening, or liquidity gaps that cause real slippage. Some backtesters let you add a fixed slippage assumption manually, but by default the number is zero, which is why a strategy can look better in a backtest than it performs live.
How do I reduce the impact of slippage on an automated strategy?
Avoid trading in the seconds around major scheduled news releases, when spreads and slippage both spike; use a maximum-deviation setting so an order is rejected rather than filled at an unacceptably worse price; and size positions and stops with some slippage margin built in rather than assuming the exact historical price will always be available.