CNC vs MIS vs NRML

"Product" tells the broker/exchange how long you intend to hold a position and how margin/settlement should treat it. Getting this wrong on an order either causes a rejection or, worse, an unintended auto-square-off.

ProductSegmentMeaningAuto square-off
CNC (Cash and Carry)Equity deliveryYou intend to hold past today — full payment, shares go to dematNo auto square-off
MIS (Margin Intraday Square-off)Equity/F&O intradayPosition must close same day — broker gives extra leverageYes, forced square-off ~15-20 min before close (broker-specific, e.g. 3:20 PM)
NRML (Normal)F&O carry-forwardFutures/options held overnight, margin-based, no intraday leverage bumpNo (until expiry, or margin shortfall triggers RMS action)

Practical implications for a bot

  • CNC requires full funds upfront (no leverage) — use for anything you want to actually own past today.
  • MIS gives leverage (often 3-5x for equity, varies by broker/stock) but will be force-closed by the broker's RMS near end of day regardless of your own square-off logic. If your bot's square-off routine (chapter 70) is late or crashes, the broker closes it for you — at whatever price is available, not necessarily favorable.
  • NRML is required for any F&O position you intend to carry past the trading day. Placing an F&O order as MIS when you meant to hold overnight will get it auto-closed at end of day, silently defeating your strategy.
def choose_product(intraday: bool, segment: str) -> str:
    if segment == "equity":
        return "MIS" if intraday else "CNC"
    return "MIS" if intraday else "NRML"   # F&O

Checklist before every order

Ask explicitly: *is this position meant to survive today's close?* The answer picks the product code — don't hardcode one product type across an entire bot if it serves both intraday and swing strategies.

Next: 018 — Get order book (order history)