Slippage: The Hidden Cost That Kills Backtested Edges
Slippage is the gap between the price you expect and the price you get, and it quietly erodes a backtested trading edge. Here is how to account for it.
You backtest a strategy and it earns sixty dollars a trade. You trade it live and it earns forty-five. Nothing broke, the signals were identical, and yet fifteen dollars a trade went missing. That gap is slippage, and it is the single most common reason a backtested edge does not survive contact with a real broker.
What slippage actually is
Slippage is the difference between the price you expected to trade at and the price you actually got. You send an order to buy at 20,000 and the fill comes back at 20,000.25. Those few ticks are not a mistake or a bad broker. They are the cost of the market moving in the instant between your decision and your fill, and of the gap between the best bid and the best offer.
On a single trade it is trivial: a quarter of a point here, a tick there. Across thousands of trades it becomes one of the largest costs you pay, and unlike a commission it never shows up on a statement with its own name. It just quietly makes every fill a little worse than the one in the backtest.
A backtest with no slippage assumption is a fantasy, not a forecast. The signal price and the fill price are different numbers, and the difference is real money. Any track record that fills every order at the exact signal price is showing you the best case, not the likely one.
Why a naive backtest hides it
A basic backtest fills every order at the price on the chart when the signal fired. That is convenient, and it is wrong. The chart price is where the last trade happened; the price you can actually buy at is the current offer, which is higher, and the price you can sell at is the current bid, which is lower. A test that ignores the spread and assumes an instant, perfect fill quietly hands the strategy free money on every single trade.
Multiply that free money by the trade count and a mediocre strategy can look excellent. This is one of the quiet ways a backtest lies, alongside the ones covered in what a backtest is. It is also why two people can test the same strategy and post very different results: one modeled costs, and one did not.
Where slippage comes from
- The spread. The gap between the bid and the offer. You cross it every time you take a fill at the market, and it is the baseline cost of getting in and out.
- Speed. The market moves between your signal and your fill. The faster it moves, the more it can move against you in that instant.
- Size. Large orders eat through more than one price level. This barely touches a single micro contract and matters a great deal at size.
- Volatility. When price is moving fast, the spread widens and fills get worse. And the fastest, most volatile moment of the futures day is the one right after the open.
That last point is the important one for any system that trades the open. The 9:30 AM ET window exists because the market is moving, and the same movement that creates the opportunity also creates the slippage. You cannot have one without the other, so the only honest thing to do is to price it in.
How slippage erodes an edge
Slippage is dangerous precisely because it is small per trade. A strategy that clears a modest edge per trade can be pushed to break-even by a couple of ticks of slippage on every fill, and you will not notice it happening on any single trade. You notice it only in the total, at the end, when the live result sits well below the backtest and you cannot point to the day it went wrong.
The thinner the edge, the more slippage matters, and as we covered in how much a trading bot makes, real systems that survive thousands of trades run on thin edges by definition. That makes cost modeling not a footnote but a core part of whether the whole thing works.
Limit orders and why entries matter
There are two ways to take a fill. A market order crosses the spread and accepts whatever price is available right now, which guarantees you trade but not at what price. A limit order names the worst price you will accept, which controls slippage but risks not filling at all. Leaning on resting limit orders where possible, rather than chasing every signal at the market, is one of the main ways a rule-based system keeps slippage from quietly eating the edge. And because the stop and the target are placed in the market at the moment of entry, the exit prices are defined in advance rather than chased in the heat of a fast move.
Frequently asked questions
What is slippage in simple terms?
Slippage is the difference between the price you intended to trade at and the price you actually got. It happens because the market moves in the split second between your order and your fill, and because there is always a gap between the best price to buy and the best price to sell. It is usually small on any one trade, but it adds up across many trades and is a real, unavoidable cost of trading.
Why does slippage not show up in a backtest?
Because a naive backtest assumes every order fills instantly at the exact price on the chart, which is the best possible case and not what happens live. Unless you deliberately add a commission and a slippage assumption, the test hands the strategy free money on every fill. That is why a backtest with no stated cost model should be treated as a fantasy rather than a forecast, and why serious tests always include one.
Can you avoid slippage with limit orders?
You can control it, not eliminate it. A limit order caps the worst price you will accept, so it protects you from the price running away on entry, but the trade-off is that the order may not fill at all when the market moves past your level. Using resting limit orders where the strategy allows is a sensible way to keep entry slippage down, as long as you accept the occasional missed trade that comes with it.
- CME Group, "Micro E-mini Futures" contract specifications.
- NinjaTrader, Strategy Analyzer documentation, commission and slippage settings.
- CFTC, "Customer Advisory: Be Cautious of Trading Systems and Robots."
Educational content, not investment advice. Trading futures involves substantial risk of loss and is not suitable for every investor. Any reference to Algomyth results is hypothetical, simulated over historical data, and shown in full on the performance page; past performance does not guarantee future results.
Twenty years, drawdowns included
Every engine publishes its full history repriced at today's values, with the losing years and the deepest drawdowns printed as plainly as the profits. Verify first, decide later.


