Why usFeaturesTemplatesBlogGlossary

Slippage in Trading: Why Live Fills Are Worse

NSE will not put a stock into the Nifty 50 unless it clears a liquidity test with a number attached. The security must have traded at an average impact cost of 0.50% or less over the previous six months, for 90% of observations, on a notional order of ₹10 crore. For the broad Nifty 500 universe the bar is looser: average impact cost not greater than 1% over the previous six months (NSE Indices, Methodology Document for Equity Indices, June 2026, checked 1 August 2026).

Read that the other way round. The exchange that runs the market has decided that in the top fifty most liquid stocks in India, an institutional-sized order still moves the price by up to half a percent. Outside the 500, no such assurance exists at all.

Your backtest filled every order at exactly the printed price. That is the gap.

What slippage is, and what it is made of

Slippage is the difference between the price your strategy assumed and the price you actually got. It is not one thing. It has three components with different causes and different sizes.

The bid-ask spread is the floor. At any moment there is a best buy order and a best sell order sitting in the order book, and they are not at the same price. Buy at the offer, sell immediately at the bid, and you have lost the spread without the price moving at all. On a liquid large cap this is small. On a thinly traded name it can be several percent, and it is the cheapest slippage you will ever pay because it is the cost of trading one share.

Market impact is what happens when you want more than one share. Your order eats through the resting orders in the book, and each successive layer is at a worse price. This is impact cost, and it is the number NSE measures.

Delay is the third piece: the time between your signal firing and your order reaching the exchange. A backtest has no latency. A live system does.

Of the three, market impact is the one that scales with your ambition, and therefore the one that quietly destroys strategies that looked fine at small size.

The order book, mechanically

NSE’s own methodology document walks through the arithmetic, and it is worth reproducing because it makes the non-linearity obvious.

Suppose the book on a stock looks like this:

Buy  1000 @ 3.50     Sell 2000 @ 4.00
Buy  1000 @ 3.40     Sell 1000 @ 4.05
Buy  2000 @ 3.40     Sell  500 @ 4.20
Buy  1000 @ 3.30     Sell  100 @ 4.25

The ideal price is the midpoint of the best bid and best offer: (3.50 + 4.00) / 2 = 3.75. Sell 100 shares and you get 3.50, a shortfall of about 6.7% against the ideal. Sell 4,000 shares and you sweep three levels for a weighted average of 3.43, which is 8.53% worse than the ideal price (NSE Indices methodology, June 2026).

Notice what happened. The order got forty times bigger and the cost per share got worse, but not forty times worse. Impact is concave in size: each additional share costs more than the last, and the total cost grows more slowly than proportionally.

That concavity has a shape. Sato and Kanazawa surveyed eight years of complete Tokyo Stock Exchange data and found the impact exponent equal to 1/2 within statistical error, at both the individual stock level and the individual trader level, supporting the square-root law as universal rather than stock-specific (arXiv:2411.13965, Physical Review Letters, 2025). That study is Japanese data, not Indian, and the constant in front of the square root certainly differs by market. The functional form is the point: doubling your order size does not double your slippage, it multiplies it by roughly 1.41.

The practical consequence runs the wrong way for retail intuition. Because impact is concave, small orders look deceptively cheap per share, which encourages you to conclude that scaling up is safe. It is safe until your order stops being small relative to the book, and the book is much shallower than the day’s volume figure suggests.

Participation is the number that matters

Here is the test that decides whether a modelled fill was real.

Take one order from your backtest. Divide the quantity by the total shares traded in that stock that day. If the answer is 2%, the fill is plausible. If the answer is 40%, you have assumed you were nearly half the market and paid nothing for the privilege. If the answer is above 100%, the fill did not merely cost more than modelled. It could not have happened, because the shares did not trade.

That last case sounds absurd and is common. A backtest sizes positions from portfolio weights, not from liquidity. Give a ₹50 lakh portfolio a 5% weight in a smallcap that trades 6,000 shares a day at ₹120, and the engine will happily buy 2,083 shares, which is 35% of the entire day’s volume. Nothing in a naive backtest objects. In reality you would have walked the book up several percent, or simply not got filled.

The arithmetic in that paragraph is illustrative, but the pattern is not. It is the single most common way a smallcap strategy backtests beautifully and cannot be run.

saral.money’s tradeability audit exists to surface exactly this. It reports, per security, the worst participation percentage any single order reached and counts how many orders exceeded 25% of that day’s volume. Above 25% the modelled fill is optimistic. Above 100% it is physically impossible, and the audit flags it at high severity for that reason. The audit also flags securities that were under exchange surveillance on the days your strategy traded them, where a GSM or high-stage ASM designation can make a name untradeable regardless of what the volume says.

Where backtests lie most

Slippage error is not uniformly distributed across your universe. It concentrates, and it concentrates in the places that produce the most exciting backtests.

Smallcaps are the obvious case. A Nifty 50 name clears an impact cost bar of 0.50% on a ₹10 crore order by construction. A stock outside the Nifty 500 clears no bar at all, and NSE’s own screening applies a penal impact cost to stocks that are not sufficiently liquid rather than pretending the number is small.

Illiquidity is also correlated with returns, which is the trap. A screen that ranks on a factor and takes the top twenty will, unless you constrain it, drift toward the smallest and least liquid names in the universe, because that is where extreme factor values live. Your backtest then reports a high return earned mostly in stocks you could not have bought in size.

Two second-order effects make it worse. Illiquid stocks have wider spreads on top of higher impact, so both the floor and the slope work against you. And liquidity evaporates precisely when you most want to sell, so a max drawdown computed from printed closing prices understates what an exit would actually have cost during a market-wide fall.

Choosing a slippage number

There is no correct value, but there are defensible ranges and a good way to test yours.

Start from what your universe is. A large-cap portfolio rebalanced monthly at modest size can reasonably assume something in the neighbourhood of the spread plus a small impact term. A smallcap portfolio cannot, and a strategy trading at the open cannot either, because the open is the least orderly moment of the session with the widest spreads.

Then run the test that actually decides. Run the strategy with your assumption. Run it again with slippage doubled and nothing else changed. If the second run is unprofitable, the first run was measuring your assumption rather than an edge. That is a genuinely useful finding, because it tells you the strategy needs a bigger per-trade edge, not better parameters.

Pair that with a participation constraint. Capping any single day’s trade in one name at a small fraction of that bar’s volume is the difference between a modelled fill and an imaginary one, and it converts a liquidity problem into a visible position-size problem instead of an invisible return.

Where this still goes wrong

A single percentage is a simplification, and you should know which way it errs. Real slippage varies by stock, by day, by order size and by time of session. One number applied uniformly will overcharge your RELIANCE trades and undercharge your microcap trades. Since the microcap trades are where the modelled alpha is, the net effect flatters the strategy.

Doubling slippage is a stress test, not a measurement. It tells you how sensitive the result is. It does not tell you what you would actually have paid. Nothing short of live or paper trading does.

Volume is not depth. A day’s traded volume is the sum of everything that happened over six and a quarter hours. The book at any single instant is far thinner. Participation against daily volume is the right screen because it is computable from data you have, and it is still generous relative to what you would face placing one order.

Fill timing is a separate assumption from fill price. If your backtest computes a signal from today’s close and fills at today’s close, no slippage number can rescue it. The decision has to precede the fill. Orders in the Saral Engine fill at the next bar’s open, which is the only sequence a live system can physically achieve, and it is a deliberate constraint rather than a limitation.

Costs are separate from slippage and both apply. Statutory charges are published, predictable and roughly 0.22% on a delivery round trip in India. They stack on top of everything here, and are covered in the full cost stack on an Indian delivery trade.

How saral.money handles this

Slippage is a configurable percentage price impact applied to fills, set per backtest run alongside the broker cost model. Orders fill at the next bar’s open rather than at the close that generated the signal, because that is the only timing a live engine can reproduce. After a run, the tradeability audit reviews what the strategy actually traded and flags the securities that would have been hard or impossible to trade in reality, reporting worst-case participation against each day’s volume and any exchange surveillance designation in force on the trade date. The features page has the rest of the execution model.

The thing to do with all of this is not to find the true slippage number. It is to find out whether your strategy’s conclusion depends on it. Run it at your assumption, run it at double, and read the tradeability report before you believe either.

Further reading