Appearance

Personalize your experience

Mode
Accent Color
Layout
Direction
All articles

Slippage and Impact Cost on NSE

Why the same order costs half a tick at 11:30 and three ticks at 09:16, and how to model that instead of assuming an average.

QuaTick Engineering10 min read1,864 words
PostLinkedIn
On this page

Slippage is usually modelled as a constant — half a tick, one tick, some number pulled from a forum post. That model is wrong in a specific and expensive way: slippage is not a number, it is a distribution whose width depends on the time of day, the instrument, and how far your order is from the middle of the book. And it is widest at exactly the moments a momentum strategy most wants to trade.

Two separate costs

Process flow

From expected price to realised fill

Spread crossing appears first; impact starts only when quantity consumes more depth than the best quote offers.

Begin at the decision-time mid price. A marketable order crosses to the ask for a buy or bid for a sell, paying half the spread relative to mid. If order quantity fits at the best quote, the fill ends there. If quantity exceeds visible depth, the remaining quantity walks subsequent levels and creates impact cost. Latency can move every level before arrival.
One-lot liquid futures orders often stop at the touch. Large or illiquid option orders continue through the depth steps, so size becomes part of price.
SlippageImpact cost
What it isDifference between the price you expected and the touch you crossedAdverse price movement your own order causes
Depends onSpread width and timingOrder size relative to visible depth
Scales withNumber of tradesSize per trade
Retail relevanceAlwaysOnly once size approaches the depth at the touch

For a one-lot retail order in an index future, impact cost is genuinely zero — the top of book absorbs it without moving. For a fifty-lot order in a far-month stock option, impact is the entire cost. Knowing which regime you are in determines whether you need a depth-aware execution algorithm or just a market order.

The shape of the trading day

Trend chart

Relative slippage multiplier across the NSE session

The article’s qualitative session model is lowest mid-session and widens sharply at both edges of the day.

Relative to a mid-session base of 1, the illustrative multiplier is 4 from 09:15 to 09:20, 2 from 09:20 to 10:00, 1 from 10:00 to 14:30, 1.6 from 14:30 to 15:20, and 3 in the final ten minutes.
These are modelling multipliers from the example, not universal exchange statistics. Calibrate each bucket from your own decision quotes and fills.

Spread and depth on NSE follow a consistent intraday pattern. The exact magnitudes vary by instrument and by volatility regime, but the shape is stable enough to be worth encoding.

WindowSpreadDepthSlippage assumption
09:15 – 09:20WidestThinnestMultiply your base estimate several times over
09:20 – 10:00Wide, narrowingBuildingRoughly double the mid-session estimate
10:00 – 14:30TightestDeepestBase case — this is where averages come from
14:30 – 15:20WideningThinningElevated, and worse on expiry day
15:20 – 15:30WideErraticAvoid if the strategy has any choice
Qualitative intraday liquidity pattern on liquid index derivatives

Options: percentage of premium is the metric

Comparison chart

The same ₹1 spread becomes a different trade by premium

Absolute spread stays constant while the percentage paid rises non-linearly as option premium gets smaller.

A one-rupee spread is about 0.5 percent of a 200-rupee at-the-money weekly premium, 5 percent of a 20-rupee far out-of-the-money premium and 25 percent of a four-rupee deep out-of-the-money premium.
Percentage-of-premium reveals why cheap wings can be operationally expensive even when their rupee spread looks small.

A one-rupee spread is trivial on a ₹200 premium and catastrophic on a ₹4 premium. Because Indian weekly options have deep OTM strikes trading at single-digit premiums, absolute slippage numbers are close to meaningless in options and percentage-of-premium is the only comparable measure.

0.5%
ATM weekly, mid-session
₹1 spread on ~₹200 premium
5%+
Far OTM weekly
Same ₹1 spread on a ₹20 premium
25%+
Deep OTM, low premium
₹1 spread on a ₹4 premium

This is why strategies that systematically sell cheap far options look excellent in a backtest and disappoint live: the premium collected is small, the spread is a large fraction of it, and the strategy has to pay that fraction on both entry and exit. The gross edge can be entirely consumed by microstructure before any of the statutory cost stack is applied.


Modelling it properly

The minimum viable model is not a constant. It is a function of the three things that actually drive it.

slippage_model.pypython
from dataclasses import dataclassfrom datetime import time # Observed spread widening by session window, relative to mid-session.# Calibrate these against your own fills; the shape is stable, the# magnitudes are instrument-specific.SESSION_MULTIPLIER = [    (time(9, 15), time(9, 20), 4.0),    (time(9, 20), time(10, 0), 2.0),    (time(10, 0), time(14, 30), 1.0),    (time(14, 30), time(15, 20), 1.6),    (time(15, 20), time(15, 30), 3.0),]  @dataclassclass Quote:    bid: float    ask: float    bid_qty: int    ask_qty: int  def expected_slippage(quote: Quote, qty: int, at: time, side: str) -> float:    """    Returns expected slippage per unit, in price terms.     Half the spread is the unavoidable cost of crossing. The impact term    only engages once the order is large relative to the depth at the    touch — below that it contributes nothing, which is the correct    behaviour for one-lot retail orders.    """    spread = max(0.0, quote.ask - quote.bid)    crossing = spread / 2.0     depth = quote.ask_qty if side == "buy" else quote.bid_qty    overflow = max(0, qty - depth)    # Linear in the overflow fraction. Crude, but it has the right sign and    # the right zero, which a flat constant does not.    impact = spread * (overflow / qty) if qty else 0.0     multiplier = next(        (m for start, end, m in SESSION_MULTIPLIER if start <= at < end),        1.0,    )     return (crossing + impact) * multiplier
Multiplicative model. Each factor is separately observable and separately wrong, which makes it debuggable.

This model is crude. It is also strictly better than a constant, because it has the right sign on every input and it goes to zero in the case where slippage genuinely is zero. Calibrate the multipliers against your own fill data as soon as you have any — a hundred live fills tells you more than any published estimate.

Measuring your own slippage

The measurement is simple and almost nobody does it: for every order, record the quote at the moment the decision was made, and compare it to the fill.

  • Log the full quote at decision time

    Bid, ask, and the quantity at each. Not just the last traded price — LTP tells you nothing about what you could have transacted at.

  • Log the decision timestamp and the fill timestamp separately

    The gap between them is latency, and latency is a separate cost you can sometimes reduce.

  • Compute realised slippage per fill and bucket it

    By session window, by instrument, by order size. The averages hide everything; the buckets are where the information is.

  • Compare the distribution against your backtest assumption

    Specifically the 90th percentile, not the mean. The mean is not what kills a strategy.

Average slippage is a summary statistic for a cost that is paid in the tail. Model the tail.

When to use limit orders instead

Decision tree

Choosing the execution path from urgency and depth

The order type is a trade-off between fill certainty, spread cost and adverse selection—not a universal preference.

First ask whether the trade is urgent or risk-reducing. If yes, use a marketable order with a depth check. If not urgent, ask whether queue and fill probability can be modelled. If no, use a limit at the touch with a timeout and explicit market conversion. If yes, a passive inside-spread order is possible, but the backtest must model queue position, missed trades and adverse selection.
A timeout path prevents a passive order from becoming an accidental decision to miss the trade. Measure how often conversion occurs and what it costs.

If slippage is eating the edge, the obvious response is to stop crossing the spread. This works, and it introduces a different problem: a limit order that does not fill is not a free option, it is a missed trade, and the trades you miss are disproportionately the ones that would have worked.

Market orderLimit at touchLimit inside spread
Fill certaintyNear certainHighUncertain
Cost when filledHalf spread or worseZero to half spreadBetter than mid
Adverse selectionNoneModerateHigh
Backtest complexityLowModerateHigh — needs queue modelling

The adverse selection column is the one that surprises people. A limit order resting inside the spread fills preferentially when the market is about to move against it — that is why someone was willing to trade with you. Backtesting a limit-order strategy without modelling this produces results that are not merely optimistic but structurally wrong.

Frequently asked questions

What is the difference between slippage and impact cost?

Slippage is the difference between the price you expected and the price you got by crossing the spread — it scales with the number of trades. Impact cost is the adverse price movement your own order causes by consuming depth, and it scales with size per trade. For a one-lot retail order in a liquid index future, impact cost is effectively zero and slippage is the whole story.

When is slippage worst on NSE?

In the first few minutes after the open and in the final minutes before the close, where spreads are widest and depth thinnest. Mid-session, roughly 10:00 to 14:30, is the tightest window and is where most published average slippage figures come from. This matters because volatility-triggered strategies fire disproportionately during the open, so applying a mid-session average to them is systematically optimistic.

How should I measure slippage on options?

As a percentage of premium, not in absolute rupees. A one-rupee spread is a fraction of a percent on a ₹200 ATM premium and over 20% on a ₹4 deep-OTM premium. Absolute slippage figures are not comparable across strikes, which is why strategies that sell cheap far options look far better in a backtest than they trade.

Will using limit orders eliminate slippage?

It reduces the cost when you fill, and introduces adverse selection instead. A limit order resting inside the spread fills preferentially when the market is about to move against you, because that is why a counterparty was willing to trade. Backtesting limit orders without modelling fill probability and adverse selection produces results that are structurally wrong, not just optimistic.

How do I calibrate a slippage model for my own strategy?

Log the full quote — bid, ask and quantity at each — at the moment each decision is made, then compare it against the actual fill. Bucket the realised slippage by session window, instrument and order size, and compare the 90th percentile against your backtest assumption. A hundred real fills is more informative than any published estimate.

QuaTick Engineering

Platform & execution

The engineering team builds QuaTick’s order routing, market-data pipeline and broker integrations. These pieces cover the parts of automation that only show up in production.

What F&O Trading Actually Costs in India

The full cost stack on Indian futures and options — STT, exchange transaction charges, GST, stamp duty, SEBI fees and brokerage — with worked examples showing the break-even impact on high-turnover strategies.

QuaTick Research10 min read

Backtesting Mistakes Specific to Indian Markets

The backtest errors that are specific to NSE and BSE data: expiry rollovers, corporate action adjustment, strike survivorship, circuit limits, and look-ahead bias that passes code review.

QuaTick Research11 min read

Expiry Day Mechanics for Systematic Options Traders

The structural features of Indian options expiry day that systematic strategies keep rediscovering: accelerating gamma, non-linear theta, pin risk and physical settlement on stock options.

QuaTick Research9 min read