It was 10:47 AM on a Thursday. The algo fired exactly as designed — 200 limit orders, spread across 30 seconds, targeting a mid-cap stock that had been sliding all morning. The strategy was a mean-reversion setup, backtested across three years of data with a Sharpe north of 1.8. The risk manager was watching. The capital was allocated. Everything was ready.

Every single order was rejected. ₹0 filled. The stock had hit its lower circuit band at 10:44 AM — three minutes before the algo even woke up. The exchange had frozen the scrip for the rest of the session. The strategy wasn't wrong. The backtest wasn't flawed. The trader simply hadn't accounted for the fact that circuit breakers don't just pause trading — they can eliminate it entirely. That three-minute gap between circuit trigger and order fire cost the firm an entire day of opportunity and a week of debugging time trying to figure out what went wrong. The culprit wasn't the code. It was the plumbing nobody bothered to read.

ℹ️

TL;DR — Four Microstructure Facts Every NSE Algo Trader Needs

  • NSE uses strict price-time priority in its matching engine — your queue position matters as much as your price, especially in liquid futures
  • Tick sizes vary: ₹0.05 for most equities, ₹0.25 for Nifty futures — one wrong tick assumption wrecks your P&L model
  • Circuit breakers operate at two levels: index-level (10%, 15%, 20%) and stock-level price bands (5%, 10%, 20%) — open orders get cancelled when circuits fire
  • Market orders on illiquid F&O strikes are a guaranteed way to get filled at extreme prices — always use limit orders with a buffer

Before we dive into the mechanics, ask yourself this: Do you actually know what happens to your order between the moment your code sends it and the moment it either fills or gets rejected? Most retail algo traders have a rough mental model — "it goes to the exchange, it matches, done." The gaps in that model are where real money disappears.


The NSE Matching Engine — How Your Order Actually Gets Filled

NSE's National Exchange for Automated Trading (NEAT) system and its successor platform operate on a continuous order book matching model. Every order that enters the system is queued in the central limit order book (CLOB) and matched against opposing orders using a deterministic priority hierarchy.

Price-time priority is the governing rule. Orders are ranked first by price — better prices get priority. Among orders at the same price, the one that arrived earlier gets matched first. This sounds simple, but the implications run deep for algo design.

For high-frequency and scalping algos, queue position at a given price level is everything. If you're placing a bid at ₹500.05 and there are already 50,000 shares queued ahead of you at that price, you will not fill until all of those shares are consumed by sell orders. In fast-moving markets, the front of the queue may fill and the price moves before you ever get touched. This is why co-location at NSE's data center in Mumbai matters for true HFT — latency of even a few milliseconds translates to queue position, which translates directly to fill rate.

For retail and swing algos, queue position matters less — you're typically accepting market impact in exchange for certainty of execution. But understanding the order book depth at your target price tells you whether your expected fill price is realistic given available liquidity.

The order book itself is a live ledger of all outstanding limit orders, organized by price level. NSE publishes Level 2 (market depth) data showing the top five bid and ask price levels with their aggregate quantities. This is the minimum you should be consuming in your algo if you want any sense of execution quality before placing orders.

Order TypePriority in BookWhen to UseSlippage Risk
LimitPrice first, then timeDirectional entries with price disciplineLow — you define your worst price
MarketImmediate, takes best availableWhen speed matters more than priceHigh — especially in thin books
Stop-Loss (SL)Triggered at SL price, then limitProtecting positionsMedium — gap risk between trigger and fill
Stop-Loss Market (SL-M)Triggered at SL price, then marketUrgent exits, high volatilityVery high — can fill at extreme prices
IOC (Immediate or Cancel)Immediate, unmatched qty cancelledPrecision entries without resting exposureMedium — partial fills are common
GTD (Good Till Date)Rests in book until date or fillSwing entries, overnight positionsLow — but check for corporate actions

Now here's a harder question: If your strategy assumes a tick-level P&L, what is your actual minimum profitable move in rupee terms — and does it exceed your transaction costs? Work that out before continuing.


Tick Sizes, Lot Sizes, and Why They Matter for Your Strategy

Tick size is the minimum price increment an instrument can move. It sounds trivial. It is not. Your entire P&L model rests on it.

For NSE equities, the standard tick size is ₹0.05 for stocks priced above ₹1. For stocks priced below ₹1, the tick is ₹0.01. This means a 1-tick move on a stock trading at ₹500 represents a 0.01% price change. At 100 shares, that's ₹5 per tick. If your transaction cost (brokerage + STT + stamp duty + exchange fees) for a round trip is ₹40, you need at minimum 8 ticks of favorable movement just to break even. Build your strategy around realistic tick arithmetic, not percentage returns.

For F&O instruments, the tick structure differs. Nifty 50 futures trade with a tick size of ₹0.25, with a lot size of 25 units (as of current SEBI circular — verify before trading; lot sizes are revised periodically). A single tick move in Nifty futures is worth ₹0.25 × 25 = ₹6.25 per lot. Bank Nifty futures have a lot size of 15 units with the same ₹0.25 tick, giving ₹3.75 per tick per lot. Midcap Nifty futures currently carry a lot size of 75 units.

The practical consequence: a strategy that looks marginally profitable at ₹0.05 ticks on equities becomes structurally different when you shift to futures with ₹0.25 ticks and much larger notional exposure per lot. Your slippage model, your stop placement, and your profit targets all need to be recalibrated to the specific instrument's tick and lot parameters.

InstrumentTick SizeLot SizeValue per Tick (₹)Approx. Margin per Lot
Nifty 50 Futures₹0.2525₹6.25~₹90,000–₹1,10,000
Bank Nifty Futures₹0.2515₹3.75~₹45,000–₹60,000
Midcap Nifty Futures₹0.2575₹18.75~₹80,000–₹1,00,000
Fin Nifty Futures₹0.2540₹10.00~₹35,000–₹50,000
NSE Equities (>₹1)₹0.051 (spot)₹0.05Varies by SPAN
Stock F&O (typical)₹0.05VariesVariesVaries by SPAN

Note: Lot sizes and margins change periodically. Always verify via the NSE website or your broker's margin calculator before going live.

⚠️

Common Mistake: Market Orders on Illiquid F&O Strikes

Deep out-of-the-money options on expiry day — or any strike with thin open interest — can have bid-ask spreads of ₹1 to ₹5 on instruments where the premium itself is ₹2. A market order in this environment will fill at the ask (or beyond, if the order book is shallow), often representing a 50-100% adverse move relative to the mid-price. Always use limit orders with a reasonable buffer — typically mid-price plus 1-2 ticks for buys, mid-price minus 1-2 ticks for sells — on any F&O strike where the open interest is below 5,000 contracts.


Think about your current strategy: If the market moves 0.5% against you in the first 60 seconds after entry, does your algo have a defined response — or does it sit and wait? Your answer to this determines whether circuit breakers and volatility events are manageable events or catastrophic ones.


Circuit Breakers, Price Bands, and the Rules That Will Stop Your Algo Cold

Circuit breakers on NSE operate at two distinct levels, and confusing them — or ignoring either — is a common source of unexplained algo failures.

Index-Level Circuit Breakers are market-wide halts triggered by extreme moves in the Nifty 50 or Sensex, whichever hits the threshold first. The rules, set by SEBI and enforced uniformly across NSE and BSE, are:

  • 10% move: Trading halted for 45 minutes (if triggered before 1:00 PM). 15-minute halt if triggered between 1:00 PM and 2:30 PM. No halt if triggered after 2:30 PM.
  • 15% move: Trading halted for 1 hour 45 minutes (before 1:00 PM). 45-minute halt between 1:00 PM and 2:00 PM. Remainder of day if after 2:00 PM.
  • 20% move: Trading halted for the remainder of the day, regardless of time.

When an index-level circuit fires, all outstanding orders across all instruments are cancelled. Your open orders, your pending bracket orders, your staggered entries — gone. Your algo must be designed to detect this event, re-evaluate positions, and decide whether to re-enter when trading resumes. Many algos blindly re-fire their full order queue on resumption without checking whether the market context has changed, compounding losses.

Stock-Level Price Bands operate independently and are instrument-specific. Most actively traded stocks have a daily price band of ±10% or ±20% from the previous day's close. Some smaller or more volatile scrips may have a ±5% band. F&O stocks — those on which derivatives are traded — do not have price bands applied at the stock level (their volatility is managed through margins instead). Index derivatives have no circuit breakers in the traditional sense; they can move without limit within a session.

When a stock hits its upper or lower circuit limit, trading is halted in that specific scrip. Open orders at prices outside the new circuit limit are rejected. Orders at or within the limit may be queued but will only fill if opposing orders exist. In practice, once a lower circuit is hit, sellers dominate and buyers are scarce — the book can remain locked at the circuit price with no fills for the rest of the session.

💡

Pro Tip: Build Circuit-Breaker Awareness Into Your Order Logic

Before firing any order, your algo should fetch the last traded price (LTP) and compare it against the instrument's daily circuit limits. Most broker APIs expose the upper and lower circuit limit as part of the quote feed. If the LTP is within 0.5% of either circuit limit, flag the instrument as "circuit-risk" and either widen your limit price buffer, reduce order size, or pause entirely. The NSE NEAT system does not warn you — it simply rejects. Build the check yourself.


Order Types on NSE Every Algo Trader Must Know

NSE supports a specific set of order types through the NEAT protocol, and your broker's API will expose a subset of these. Not all brokers expose all order types via API — verify with your broker before designing strategy logic around a specific order type.

Market Order (MKT): Executes immediately at the best available price. No price guarantee. Useful in highly liquid, deep-order-book instruments where slippage is predictable (e.g., Nifty futures front-month). Dangerous in thin books.

Limit Order (LMT): Executes at your specified price or better. Does not guarantee execution. The foundation of most algo strategies — it gives price control at the cost of fill certainty.

Stop-Loss Order (SL): Has two parameters — a trigger price and a limit price. When the market reaches the trigger price, a limit order is placed at the limit price. This is not a guaranteed stop — if the market gaps through your limit price, you will not fill.

Stop-Loss Market Order (SL-M): Has one parameter — a trigger price. When triggered, a market order is placed. This guarantees execution but at whatever price the market offers. On gap opens or fast markets, this can be extremely costly.

Immediate or Cancel (IOC): The order attempts to match immediately. Any unmatched quantity is cancelled — you never rest in the order book. Useful for reducing adverse selection and avoiding "phantom fills" on stale prices.

Good Till Date (GTD): The order remains active until a specified date or until it fills. Useful for swing strategies with multi-day entry targets. Note: GTD orders may be cancelled by corporate actions (dividends, splits) or if the instrument hits a circuit before triggering.

Disclosed Quantity (DQ): Allows you to show only a portion of your actual order size to the market. Useful for large orders where full disclosure would move the market against you. The full quantity is committed but only the disclosed portion is visible in the order book.

Order TypeBest Use CaseKey Limitation
MarketLiquid futures, index options near ATMHigh slippage in thin instruments
LimitMost algo strategies as defaultNo fill guarantee
SLProtecting open positionsGap risk on fast moves
SL-MUrgent stop exits in volatilityExtreme slippage on gaps
IOCHigh-frequency entries, avoiding book exposurePartial fills require handling
GTDSwing entries, multi-day setupsMay be cancelled by corporate events
Disclosed QtyLarge order execution, reducing market impactMore complex order management

Real Tradeoffs — Three Decisions Every Algo Must Make

TradeoffOption AOption BWhen to Choose AWhen to Choose B
Market vs LimitMarket order — guaranteed fill, unknown priceLimit order — known price, uncertain fillDeep, liquid markets (Nifty front-month); time-critical exitsAll F&O strategies; any instrument with OI below 50k
Speed vs Fill QualityFire immediately on signal; accept slippageWait for price to come to you; risk missing the moveMean-reversion where entry price drives the entire P&LMomentum strategies where being in the trade matters more than entry precision
Disclosed vs Full QuantityShow full order size in bookDisclose partial size, hide the restSmall orders where impact is negligibleLarge block orders in mid-cap equities or less liquid F&O

Scenario check: Is your current strategy closer to a pure execution problem (get filled, at any reasonable price) or a pure pricing problem (fill at exactly this price, or not at all)? Your answer should determine your default order type — and if you haven't answered this question explicitly, your strategy design has a gap.

One more: Have you ever looked at the actual bid-ask spread on your target instrument at 9:15 AM versus 11:30 AM versus 3:20 PM? Intraday liquidity profiles on NSE are not flat — they have well-defined structure that your algo should exploit, not ignore.


Choose Your Scenario

Scenario A: You're Running a High-Frequency Scalping Algo on Nifty Futures

Your edge lives in milliseconds. You're targeting 1-3 ticks of profit per trade with very tight stops. In this scenario, microstructure is not background knowledge — it is your strategy.

Key considerations:

  • Co-location or proximity hosting is likely necessary. API latency from a home broadband connection will cost you queue position.
  • IOC limit orders are your standard order type. You never want to rest in the book as a passive target for informed flow.
  • The order book depth is your primary signal. You're not trading price — you're trading order flow imbalance.
  • Transaction costs at ₹0.25 tick increments must be modeled precisely. STT on futures, exchange transaction charges, and SEBI turnover fees aggregate quickly at high frequency.
  • Rate limits: NSE imposes order rate limits at the member level. Your broker has a cap on orders per second. If you breach it, orders are rejected — not queued. Know your limit before designing your firing logic.

Scenario B: You're Running a Daily Momentum Strategy on Mid-Cap Stocks

Your edge lives in multi-day price trends. You're holding positions for 3-10 days, entering on breakouts, exiting on mean-reversion signals.

Key considerations:

  • Price bands are your primary circuit risk. Mid-caps are more likely to hit 10% or 20% daily limits. Always check yesterday's close and today's allowed range before entering.
  • Liquidity at the open and close is thinner than mid-session for many mid-caps. Entering at 9:15 AM with a market order on a ₹50-crore market cap stock is a reliable way to move the price against yourself.
  • Limit orders with GTD work well for swing entries — set your entry price at a level the stock must confirm before you commit.
  • Corporate actions (dividends, bonus issues, rights offerings) can invalidate your technical setup overnight. Your data pipeline must adjust historical prices and cancel stale orders when adjustments occur.
  • Position sizing relative to the instrument's average daily volume matters more here than in Nifty futures. Entering more than 0.5-1% of ADV in a single order is a market impact problem, not just an execution detail.

5-Minute Pre-Live Microstructure Checklist Framework

flowchart TD A[Strategy Ready to Go Live] --> B{Know tick size for instrument?} B -- No --> C[Look up NSE contract specs] B -- Yes --> D{Know lot size & margin?} C --> D D -- No --> E[Check SEBI margin circular] D -- Yes --> F{Order type configured correctly?} E --> F F -- No --> G[Switch to Limit orders with buffer] F -- Yes --> H{Circuit breaker logic in code?} G --> H H -- No --> I[Add pre-order price-band check] H -- Yes --> J{Tested in paper trading?} I --> J J -- No --> K[Run 2 weeks paper first] J -- Yes --> L[Ready for Live — Start Small]

Work through this flowchart honestly before your first live session. "Start Small" means 1 lot, one position, one instrument. Not your full capital. Not your full strategy. One trade to verify the plumbing.

🚨

Sending Market Orders on Expiry Day for Deep OTM Options

On weekly or monthly expiry day, deep out-of-the-money options can have theoretical values of ₹0.05 while the bid-ask spread spans ₹1.00 or more. A market order to buy a ₹0.05-value option might execute at ₹2.50 — a 5,000% overpay. This is not hypothetical; it has happened to experienced traders running automated strategies. The fix is non-negotiable: never use market orders on options, ever, on any day, in any condition. Use limit orders. Specify a price. Accept that you might not fill. The alternative is worse.


Mini-Exercise: Know Your Instrument Before You Trade It

Before you go live on any new instrument, fill in this template. If you can't fill every field from memory or from a quick lookup, you're not ready.

My instrument: [?] Lot size: [?] units Tick size: ₹[?] Value per tick: ₹[?] (lot size × tick size) Daily circuit band: [?]% (or "no band — F&O stock") Upper circuit limit today: ₹[?] Lower circuit limit today: ₹[?] Order type I'll use for entry: [?] Order type I'll use for exit/stop: [?] My broker's order rate limit: [?] orders/second Estimated round-trip transaction cost per lot: ₹[?] Minimum profitable move (in ticks) to cover costs: [?] ticks

If you cannot produce these numbers for your instrument in under 60 seconds, add it to your pre-live routine.


Audit your current setup: Does your strategy have any hardcoded values — lot sizes, tick sizes, margin amounts — that you haven't updated in the past six months? SEBI and NSE revise lot sizes and margins periodically. Hardcoded stale values are a silent failure mode.

Final reflection: What would your algo do right now if your broker's API went down mid-session with two open positions? If your answer is "I'm not sure," that's your next engineering task — before the next live session.


<!-- IMAGE BRIEF 1: Diagram of a limit order book with two sides (bid/ask), showing price levels, queue depth at each level, and a new limit order being inserted mid-book. Annotate with "price priority" and "time priority" arrows. Dark background, financial terminal aesthetic. -->

<!-- IMAGE BRIEF 2: Infographic showing NSE index-level circuit breakers as a traffic light or dial: green zone (0-10%), yellow zone (10-15%), orange zone (15-20%), red zone (20%+). Include the halt duration rules for each level at different times of day. Clean, regulatory-document style. -->

<!-- IMAGE BRIEF 3: Side-by-side comparison of an order book during normal trading vs. a lower circuit freeze — showing the book locked at the circuit price with a stack of sell orders and zero bids. Highlight the "circuit hit" timestamp. -->


Keep Learning

If this post raised more questions than it answered, that's the right reaction. Market microstructure is a deep field. Here's where to go next:


NSE Algo Trading Reference Card

Get the free one-page PDF: "NSE Algo Trading Reference Card"

This cheatsheet covers everything you need at your terminal before going live:

  • Tick sizes and lot sizes for the top 10 F&O instruments (current as of 2026 circulars)
  • Index and stock-level circuit breaker rules in plain language
  • Order type decision matrix: which order type for which scenario
  • SPAN margin formula with a worked example for Nifty futures
  • Transaction cost breakdown (STT, exchange charges, SEBI fee, stamp duty) per trade

Drop your email in the form below and it lands in your inbox immediately. No weekly newsletter unless you opt in.


Comment Below

Which NSE microstructure rule caught you off guard when you first went live?

Circuit breakers, lot sizes, order rejection, margin shortfalls, rate limits — name the specific rule and what it cost you in time or money. Be specific: "I didn't know the Nifty lot size had been revised and my position sizing was off by 25%" is more useful than "I got a margin call."

I'll compile the top 5 responses into a "Hall of Microstructure Mistakes" post — real examples, anonymized if you prefer, that will save the next batch of traders from the same lesson.


FAQ

Q: Does NSE use a pure price-time priority system, or are there exceptions?

A: NSE's CLOB uses strict price-time priority for standard orders. However, certain order types — like Disclosed Quantity orders — interact with the book in ways that can appear to violate time priority from the outside, since only the disclosed portion is visible and matched. Block deal sessions on the separate block deal window operate under different rules entirely. For standard intraday and F&O trading, assume pure price-time priority.

Q: Can my algo place orders during the pre-open session (9:00–9:15 AM)?

A: Yes, NSE operates a call auction pre-open session from 9:00–9:08 AM for order collection, with price discovery running 9:08–9:12 AM and order matching at 9:12–9:15 AM. You can place, modify, and cancel orders during 9:00–9:08 AM. After 9:08 AM, only cancellations are permitted until the session opens. Most broker APIs support pre-open order placement, but verify with your specific broker. The equilibrium price discovered in pre-open becomes the opening price for the regular session.

Q: What happens to my open orders if my broker's risk management system triggers an account-level halt?

A: This is separate from exchange-level circuit breakers. Brokers have their own real-time risk systems that monitor exposure, margin utilization, and loss limits. If your account breaches a broker-set threshold, the broker can square off your positions (sometimes at market) and reject new orders. This is not NSE rejecting you — it is your broker's RMS. The practical implication: always know your broker's exposure limits and ensure your strategy's maximum simultaneous open position value is within those limits.

Q: Are F&O lot sizes fixed permanently, or do they change?

A: Lot sizes are revised by NSE and SEBI periodically, typically to keep the contract value within a specified rupee range (historically around ₹5-10 lakh per lot for index derivatives, though this has shifted over time). Revisions happen on a defined review cycle and are announced via exchange circulars. Any hardcoded lot size in your code is a time bomb — read lot size dynamically from your broker's instrument master file, which is updated on ex-date of lot size changes.

Q: My strategy fires orders in the last 10 minutes before close (2:50–3:30 PM). Are there any specific rules I should know?

A: The final 30 minutes of the NSE regular session can see elevated volatility as participants square off positions. There are no special order type restrictions during this period for equities and F&O. However, NSE runs a closing price discovery call auction for equities from 3:40–4:00 PM — orders placed in this window participate in a separate batch auction, not the continuous session. F&O contracts have their own settlement price calculation methodology. If your strategy exits near close, ensure you understand whether you are targeting the regular session close price or the auction-derived closing price for equities.


Do This Next

  • Look up the exact tick size and current lot size for every instrument your strategy trades — from the NSE website's contract specifications, not from memory
  • Add a pre-order check to your code that fetches the instrument's upper and lower circuit limits and aborts the order if LTP is within 0.5% of either limit
  • Test your algo's behavior in a paper trading environment when you manually simulate a circuit breaker event by rejecting all orders for 30 minutes mid-session
  • Confirm with your broker the maximum order rate (orders per second) your account is permitted via API, and add a rate limiter to your order dispatcher
  • Calculate your actual round-trip transaction cost for one lot of your primary instrument, including STT, exchange transaction charges, SEBI turnover fee, and stamp duty
  • Verify that your strategy does not use market orders in any condition except highly liquid instruments with documented slippage bounds
  • Subscribe to NSE circulars (available on the NSE website) so you receive advance notice of lot size revisions, margin changes, and new SEBI regulations that affect your strategy

This post is for educational purposes only and does not constitute financial or investment advice. Market microstructure rules, lot sizes, margins, and circuit breaker thresholds change over time. Always verify current specifications directly with NSE, BSE, and SEBI official sources before going live.