If you started trading Bank Nifty options before late 2024, your instincts were built on a market that no longer exists. Back then, Bank Nifty had a weekly contract. Every week brought a fresh expiry, a fresh theta decay curve, and a fresh gamma event. A lot of retail systems — scanners, straddle scripts, intraday option-selling rules — were quietly tuned to that rhythm.
That rhythm is gone. Per NSE circular NSE/FAOP/64506 dated October 10, 2024, weekly derivatives contracts on BANKNIFTY, MIDCPNIFTY and FINNIFTY were discontinued. Bank Nifty now runs on a monthly cycle: a maximum three-month trading cycle (near month, next month, far month), with contracts expiring on the last Tuesday of the expiry period, and rolling to the previous trading day if that Tuesday is a holiday.
Today is August 6, 2026. We are early in the August Bank Nifty cycle. This post is not about where the index goes next — no one knows that, and anyone selling you certainty is selling you something. It is about what the contract structure itself forces you to fix in your process, your filters, and your backtesting.
The contract calendar is a risk input, not a footnote
Most retail algos treat expiry as a date field. It is closer to a regime switch.
With a weekly cycle, gamma risk was spread across roughly four events a month. With a monthly-only cycle, that risk compresses. The same aggregate open interest that used to unwind in weekly slices now has one scheduled unwind. Whatever your system does with short options, spreads, or intraday reversals, the shape of the last few sessions before expiry is not the same shape it had in 2024.
Three practical consequences:
Days-to-expiry becomes a first-class filter. "Is today expiry day?" is not enough. Your rules should know whether you are 15 sessions out, 5 sessions out, or 1 session out. Theta and gamma behave very differently across those buckets, and a single flat rule averages them into mush.
Nifty and Bank Nifty are no longer on the same clock. NIFTY retains a weekly contract; Bank Nifty does not. That means for most weeks of the month, one index is in an expiry-pressure regime and the other is not. If your system trades both — or uses Nifty as a filter for Bank Nifty — you now have two calendars to track, not one. Confirm the current weekly expiry weekday on the NSE contract specification page rather than trusting a value hardcoded years ago.
Rollover week is its own regime. In the sessions around the monthly expiry, liquidity migrates from the near month to the next month. If your algo reads futures basis, open interest, or volume from a hardcoded "current month" symbol, it will read a thinning contract exactly when the decision matters most.
For August 2026, the last Tuesday falls on the 25th. That is a little under three weeks out from today. Do not hardcode it — pull it from the exchange calendar so a holiday shift does not silently break your logic.
What "expiry volatility" actually means in a monthly cycle
The phrase gets thrown around loosely. Break it into things you can measure.
Implied volatility term structure
Platforms like TradingView publish ATM IV term structure and IV curves for Bank Nifty. The useful question is not "is IV high?" It is "what is the shape across the curve, and is it consistent with the calendar?"
A near-dated contract carrying a large IV premium over the next month often reflects a known scheduled event. A flat or inverted structure tells a different story. Neither is a signal by itself. Both are context that should feed a filter, such as: skip new short-vega entries when the near-month ATM IV is a defined multiple above the next month.
Write that threshold down as a number. "IV looks high" is not a rule.
Realised vs implied
Backtest this rather than eyeballing it. Compute rolling realised volatility on the index over the same horizon as your option's remaining life, and compare it to the IV you were actually paying or receiving. Do it across expiry weeks and non-expiry weeks separately, now that they are structurally different.
Option sellers who never measure this end up believing theta is the whole edge. It is not — the payment you receive is compensation for a risk that periodically shows up.
Intraday distribution on expiry day
Bank Nifty expiry-day price action has historically not been uniform through the session. Instead of assuming, measure it in your own data: bucket returns and absolute moves by 15-minute slots, separately for expiry day and non-expiry days. If your stop distance is a fixed number of points, that fixed number means something very different at 9:30 than at 14:45.
Execution constraints retail algos underestimate
This is where the NSE contract page earns its keep. Two specifications directly change what your system can and cannot do.
Lot size. Lot sizes for index derivatives were revised effective from trade date November 21, 2024. Lot size is the granularity of your position sizing. If one lot represents a large notional, you cannot fine-tune exposure — you step in chunks. A position sizing rule that says "risk 1% per trade" is not implementable if one lot already risks more than that at your stop. The honest response is to either widen capital, reduce stop distance, or use a hedged structure — not to pretend the rounding does not exist.
Quantity freeze. NSE publishes a quantity freeze level for Bank Nifty contracts, and it is updated periodically. Orders above that quantity get flagged rather than executing normally. Any algo placing size needs to slice orders below the current freeze limit, and needs to read that limit from a live source rather than a constant written into the code last year.
Related and equally practical: strike liquidity. Far-out strikes on a monthly contract can show wide spreads, especially away from the current month's active range. Your backtest may have filled them at mid price. Live, you will not.
Before pushing size through any of this, run the order through a margin estimate that accounts for existing positions. In Anadi's options workspace, the flow is deliberately ordered — inspect the chain, build the basket, see the margin and risk cards, then trade. The sequencing is the point: risk numbers should appear before the execute button, not after the fill.
Backtests built on the old contract are quietly broken
This is the most expensive mistake available right now, and it does not announce itself.
If your Bank Nifty options dataset spans 2023 to 2026, it contains two different instruments. Pre-late-2024 it has weekly contracts. After that, it does not. A backtest that stitches these together will report statistics from a market structure that no longer exists.
Specific things to audit in your data and code:
- Expiry tagging. Does every row know its correct expiry date under the rules that applied on that date, or is expiry derived from a formula written for the old cycle?
- Weekly rows after discontinuation. If your vendor synthesised or carried forward weekly series, drop them.
- Lot size by date. Sizing and P&L must use the lot size in force on that trade date, not the current one.
- Sample count. Monthly-only expiry means far fewer expiry events per year. A strategy that showed 200 expiry-day trades on old data might have around 12 per year now. Twelve observations is not a validated edge — it is an anecdote with a Sharpe ratio attached.
- Costs. Slippage and brokerage assumptions should scale with the actual spread you would face, particularly on multi-leg baskets where every leg pays.
The uncomfortable conclusion for many traders: the clean part of your backtest is the recent, smaller sample. The large, comforting sample is from a market that got restructured. Report both separately and let the difference inform how much size you deploy.
A workflow that holds up through expiry week
Context first, then structure, then risk, then execution. In that order.
Start with breadth, not the strike. Bank Nifty is a sector index. If banking participation is narrow — a couple of heavyweights carrying the index while the rest lag — an index-level breakout means something different than a broad-based move. An indices and sector heatmap view before you look at a single option contract keeps you from acting on an index print that the constituents do not support.
Then inspect the chain properly. Open interest, IV, and PCR are inputs, not verdicts. Check spread width at your intended strikes. Check whether the OI you are reading belongs to the near month or has already migrated to the next month during rollover week.
Then define the structure and its worst case. Multi-leg baskets need a basket-level stop, not four independent leg stops that can leave you naked when one leg exits. Size the position against your daily loss limit, not against the margin you happen to have free.
Then filter for freshness before executing. Most bad expiry-week entries are late entries. A signal that fired 40 minutes ago, after the move already ran, is a different trade from the one your backtest measured. Anadi's Action Center exists for this — it ranks scanner-backed candidates and shows blocked reasons like chase distance or invalidated price, so a stale signal gets tagged rather than routed to an order.
Then monitor with a kill switch. Session expiry on broker APIs, partial fills, and duplicate orders all cause more real damage than a wrong directional view. Define in advance what makes you flatten and stop for the day.
If you want the market-context reading habit without the noise, our weekly market outlook is built around exactly this framing: use context to prepare, not to chase calls.
The checklist
Run this before the August cycle gets closer to expiry:
- Confirm Bank Nifty expiry dates from the exchange calendar, not from code constants. Handle the holiday-shift rule.
- Add a days-to-expiry bucket to every options rule. Stop treating expiry as a binary flag.
- Track Nifty's weekly calendar and Bank Nifty's monthly calendar separately in the same system.
- Read lot size and quantity freeze from a live source. Slice orders below the freeze level.
- Split your backtest at the weekly-discontinuation boundary and report both periods.
- Count your actual monthly expiry sample size. If it is under 20 events, treat conclusions as provisional.
- Measure realised vs implied volatility on your own data, separately for expiry and non-expiry weeks.
- Define basket-level stops for every multi-leg structure.
- Set a daily loss limit in rupees and enforce it in code, not willpower.
- Verify your broker session, order-rejection handling, and flatten-all path before the volatile sessions, not during them.
None of this predicts anything. That is the point. Structural facts — contract cycle, lot size, freeze limits, liquidity migration — are knowable in advance. Direction is not. Building your process around the knowable part is the only durable advantage available to a retail algo trader.
If you want to test these filters against Bank Nifty data before risking capital on them, request early access and run them in a backtest first. Paper trade the workflow through one full monthly cycle before you size up.



