Methodology

Slippage and Impact Cost: The Gap Between the Modelled Price and the Real One

Slippage is the difference between the price a backtest assumes and the price a trade actually gets. A guide to spread, delay and market impact, and how to model each.

Slippage is the difference between the price your backtest assumed and the price your order actually got. Impact cost is the part of that difference caused by your own order pushing the market. Together they are the friction that no fee schedule tells you about, and they are the single most common reason a strategy that looked good in testing disappoints in practice.

Brokerage and statutory levies are at least knowable. You can look them up. Slippage has to be estimated, and the estimate is a judgment call that deserves to be argued about openly rather than buried in a default setting.

Where the gap comes from

It helps to separate slippage into three distinct sources, because each behaves differently and each is modelled differently.

The spread. At any moment there is a highest price someone will pay and a lowest price someone will accept, and they are not the same. If you want to buy immediately you pay the offer, and if you want to sell immediately you accept the bid. Cross the spread and you have already lost something relative to the midpoint that a chart might show you. Liquid large companies tend to have narrow spreads. Smaller, thinner names can have spreads wide enough to dominate every other cost you model.

Delay. A backtest usually decides at one price and assumes execution at that price. In reality there is a gap between the signal, the decision and the fill. In that gap the market moves. Sometimes it moves in your favour, sometimes against, but it moves systematically against you when your signal is the same signal many other people are acting on at the same moment. A momentum rule that triggers on a breakout is, by construction, trying to buy when others are buying.

Impact. This is the part your own order causes. An order book has finite depth. If you want more shares than are available at the best offer, you consume that level and move to the next, and your average fill price is worse than the price you saw. Sell a large position and the same thing happens downward. Impact grows with your order size relative to normal traded volume in that stock, which is why the honest answer to “what is the slippage assumption” is always “at what size”.

Why the modelled price is optimistic by default

Most backtests execute at a convenient price: the closing price, the open, or the price at signal time. Each of these has a specific bias.

Executing at the close is the most common and the most flattering. A closing price is a single number produced by an auction. You cannot generally transact unlimited quantity at it, and if your signal depends on the close you cannot even know the signal until the close has happened. Deciding and executing at the same closing price is a mild form of lookahead bias: the decision uses information that is only available at the exact moment execution is assumed.

Executing at the open avoids that particular problem but introduces another. Opening prices are often volatile and the opening auction is where overnight news gets repriced. Assuming a clean fill at the open on the day after a signal is a strong assumption.

Executing at the average price for the day assumes you spread the order across the session, which is realistic for a patient institution and unrealistic for a rule that says “buy on the signal”.

None of these is wrong. What is wrong is choosing one without stating it and without charging anything for the convenience.

How desks model it

There is no single correct model. There are several standard approaches, ordered roughly from crude to careful.

  • A flat percentage per side. Charge a fixed slippage assumption on every trade, on top of transaction costs. Simple, transparent, and blunt. It works acceptably when the universe is uniformly liquid and badly when it is not.
  • A spread based estimate. Charge some fraction of the typical bid ask spread for each stock. This captures the fact that thin stocks cost more than liquid ones, and it uses an observable quantity.
  • A size relative to volume model. Scale the assumed cost with the ratio of your order to the stock’s normal traded volume. Small orders in liquid names get a small charge, large orders in thin names get a large one. This is the approach that actually captures impact, and it is the one that changes conclusions.
  • Execution simulation. Model the order being worked over time against historical volume, with a participation cap. Considerably more work, and only worth it when size is genuinely a constraint.

Whichever you use, the same discipline applies as with transaction costs: make the assumption visible, report gross and net separately, and run the strategy at a pessimistic assumption to see whether the conclusion survives.

The asymmetry nobody likes

Slippage is not symmetric between good times and bad. The moment you most want to exit is usually the moment when spreads are widest, depth is thinnest and everyone else wants to exit too. A model that charges the same slippage in a calm month and a crisis month is understating the cost of exactly the trades that determine your maximum drawdown.

This matters most for strategies whose rules force action in stress: stop losses, volatility triggers, trend following exits. Their historical results depend heavily on getting out at a modelled price during periods when getting out at any price was hard. If a strategy’s returns come mostly from a handful of well timed exits during turmoil, its slippage assumption is not a detail, it is the entire result.

A partial remedy is to test the strategy with an elevated slippage assumption applied specifically during high volatility periods, and to report the two versions side by side. This is a natural companion to stress testing a portfolio.

Size changes everything

The uncomfortable property of slippage is that it is not a fixed feature of a strategy. It is a function of how much money is running it.

A rule tested on a hypothetical small portfolio may be entirely fillable. The same rule at ten times the size may need to trade a meaningful fraction of a day’s volume in several names, and the price it gets will be worse. At a hundred times the size, some positions may simply not be enterable without moving the price materially.

This is why the correct way to describe a strategy’s viability is with a capacity statement rather than a single result. Something like: at this portfolio size, with this universe, participating at no more than this share of daily volume, the strategy required this many days to build a position. Those constraints are the subject of liquidity constraints in backtesting, and they are inseparable from slippage.

What a slippage model does not tell you

Being honest about the limits here is more important than in most places, because slippage estimates carry an air of precision they have not earned.

  • It is an estimate, not a measurement. Unless you have your own execution records, you are inferring a cost you never actually paid. Historical spread and volume data give you a reasonable basis, not a fact.
  • It cannot know your urgency. The same trade costs very differently if it must be done in five minutes versus over three days. A backtest rarely encodes urgency, but urgency is often what determines the real cost.
  • It does not capture opportunity cost. If you work an order patiently and the price runs away, you did not pay slippage, you missed the trade. That absence never shows up as a cost, but it is a real loss and it biases patient execution models to look better than they are.
  • It says nothing about signal quality. A perfectly calibrated slippage model applied to an overfitted signal produces a precisely costed illusion.
  • It generalises poorly across regimes. Liquidity conditions in the market you tested may not resemble the ones you will trade in.

Brokerage is what you are charged. Slippage is what the market charges you for being in a hurry, being large, or being late. Only one of them arrives with an invoice.

The practical standard is modest and achievable. State the execution price convention. State the slippage assumption and how it scales with liquidity and size. Report the result at a base and a pessimistic assumption. If the strategy only works at the optimistic end, that is the finding, and it is worth knowing before capital is committed rather than after.

This article is educational. Altys Labs is not a registered research analyst or investment adviser, and nothing here is investment advice or a recommendation to buy, sell, or hold any security.

Frequently asked questions

What is slippage in trading?

Slippage is the difference between the price your model assumed and the price your order actually executed at. It comes from the bid ask spread, from the market moving between your decision and your fill, and from the effect of your own order on the price. Unlike brokerage it does not appear on any published schedule.

What is impact cost?

Impact cost is the part of slippage caused by your own order. Buying pushes the price up as you consume the offers available, and selling pushes it down. It grows with the size of your order relative to how much normally trades in that stock, which is why the same strategy can be cheap at small size and expensive at large size.

How much slippage should a backtest assume?

There is no universal number, because it depends on the stock's liquidity, the spread, the order size, the urgency and the market conditions. The defensible approach is to assume a range rather than a point, be more conservative for smaller and less liquid stocks, and check whether the strategy's conclusion survives the pessimistic end of that range.