Monday, September 28, 2026. If you trade Bank Nifty options with any kind of automation, this week is less about a view and more about plumbing. The monthly settlement window sits at the front of the week, weekly series are still cycling, and the data you feed your rules comes from at least three different places that do not always agree.
That last part is the one most retail algo traders underestimate. A strategy can be logically sound and still fire badly because the expiry weekday was hardcoded, the lot size changed, or an implied volatility field came through as zero and your "low IV" branch took over.
This post is a process walkthrough, not a market call. No levels, no direction, no targets. Just the checks worth running before your Bank Nifty rules touch live money in an expiry week.
What the exchange contract page actually pins down
Start with the boring source: the NSE Nifty Bank F&O product page. It is the only place where contract mechanics are authoritative, and it is the page most people skip because it has no blinking numbers on it.
Trading cycle and expiry day
Per NSE's Bank Nifty derivatives specification, Bank Nifty futures run a maximum three-month trading cycle: near month, next month, and far month. A new contract is introduced on the trading day following the expiry of the near-month contract. The page states that Bank Nifty futures contracts expire on the last Tuesday of the expiry period, and if that last Tuesday is a trading holiday, contracts expire on the previous trading day. NSE references circular NSE/FAOP/68747 for the details.
Apply that to the calendar in front of you. The last Tuesday of September 2026 is September 29 — tomorrow, from where this post sits. Whether that is the operative settlement date for your specific contract still depends on the holiday adjustment and on any circular that has revised the convention since, so verify it on the exchange page and against your broker's instrument master before you assume anything.
Here is why the caution matters. Third-party pages carrying Bank Nifty option chain data describe the series as a weekly Wednesday expiry. The exchange page describes the futures convention as last Tuesday. Both statements can be about different things — different products, different series, different vintages of a page that was last updated at some unknown time — and that ambiguity is exactly the problem. Expiry weekday conventions in Indian index derivatives have been revised by circular more than once in recent years. Any code that says "if today is Thursday, it's expiry" is a landmine waiting for a schedule change.
The practical rule: resolve expiry from data, never from a constant. Your algo should read the expiry date off the instrument master or the exchange contract list every morning, compare it to the date it used yesterday, and log a warning when the derived expiry weekday changes. If the resolution step fails, the strategy should not trade rather than fall back to a guess.
Lot size and quantity freeze
The same NSE page publishes lot size and the quantity freeze applicable for the day. One widely-used data page currently lists the Bank Nifty lot as 15 units. Treat that as a number to verify, not a number to trust, because lot size revisions have real downstream effects: position sizing, margin estimates, backtest P&L scaling, and your per-trade risk cap all move together.
Three checks that belong in your pre-market routine:
- Reconcile lot size from your broker's instrument master against the exchange page. If they differ, halt and investigate rather than picking the friendlier one.
- Read the day's quantity freeze and make sure your order slicer respects it. Large baskets that clear risk checks can still be rejected or partially filled at the exchange if a single leg exceeds the freeze limit.
- Recompute your maximum lots from current capital and current lot size on every start-up. A sizing constant written three months ago is a stale binding, not a setting.
Partial fills on a multi-leg structure are worse than no fill. A four-leg spread that gets three legs done is a naked position you did not choose. Slice size and freeze awareness are risk controls, not execution trivia.
Where the live numbers come from, and where they disagree
Once mechanics are settled, you need the tape: spot, chain, open interest, implied volatility, PCR. This is where vendor data quality becomes your risk.
Look at a real example from a public Bank Nifty option chain page captured around this session. Spot is quoted near 55,580 with a small positive change. The page describes a tight open-interest concentration around the 57,500 strike, with roughly 19.6 lakh call contracts and 11.9 lakh put contracts at that strike, and infers a near-term range of roughly 55,300 to 57,800. In the same block, it lists fresh call OI additions at 57,800, 54,900, and 54,600, and fresh put additions at 55,300, 55,600, and 55,200.
Read that carefully. Two of the three "fresh call writing" strikes sit below the quoted spot, and the stated range is anchored on a strike nearly 1,900 points above spot. The narrative and the numbers are not telling the same story. That does not mean the underlying data is wrong — but the prose layered on top is auto-generated and internally inconsistent, and if you were tempted to encode its conclusions as levels, you would be encoding an artifact.
The lesson generalises: consume vendor numbers, never vendor narratives. OI at a strike, OI change, volume, and LTP are measurable fields you can validate. "Strong resistance" and "the market is pricing a range" are interpretations with no error bars.
The zero implied volatility problem
On that same page, at-the-money implied volatility "registers at 0%."
An ATM IV of zero is not a market condition. It is a missing value rendered as a number, and it is one of the most dangerous bugs in options automation because it does not look like an error to your code. Consider what a zero does to common logic:
- A rule like "enter the premium-selling leg only when ATM IV is below the 30th percentile" passes instantly, every time.
- A rule like "skip the trade if IV Rank is elevated" never skips.
- An expected-move calculation derived from IV collapses toward zero, so your stop distances and strike offsets shrink to nonsense.
- A delta or vega estimate computed with zero volatility is not a hedge ratio, it is a divide-by-something-close-to-zero waiting to happen.
Volatility dashboards that track India VIX, ATM IV, IV Rank, IV Percentile, IV minus historical volatility, expected move, skew, and term structure are genuinely useful for judging whether premium is rich, cheap, or fair. But every one of those derived fields inherits the health of the raw IV input. Build the sanity band before you build the signal.
A reasonable validation layer for Bank Nifty option inputs looks like this:
- Range gate: reject ATM IV outside a plausible band, for example under 4% or above 150%, and treat exactly 0 as null rather than low.
- Staleness gate: stamp every quote with its own timestamp, not receipt time. Quotes older than a few seconds during live hours should not drive new entries on expiry day.
- Cross-source agreement: if two sources disagree on spot by more than a small tolerance, or on ATM IV by more than a few volatility points, pause new entries instead of averaging them.
- Liquidity gate: check bid-ask spread and traded volume on each leg you intend to use. A strike with large OI and a wide spread is a trap for a multi-leg basket.
- Continuity check: compare today's PCR, OI totals, and IV to yesterday's close. A discontinuity larger than anything in your historical sample usually means a feed problem, not a regime change.
Fail closed on all of them. When data is uncertain, trading nothing is a position with known risk. Trading on a null is not.
Turning expiry-week volatility into filters, not forecasts
Expiry weeks compress everything. Time value decays faster, gamma on near-the-money strikes gets aggressive, and intraday ranges can widen and collapse in the same session. None of that is predictable in advance, so the only useful response is a set of rules that change what your system is allowed to do.
Filters that hold up in practice tend to be structural rather than clever:
- Expiry-proximity gate. Define behaviour explicitly for expiry day, the session before, and the rest of the week. Many retail systems simply reduce size or stand down on the final session, which is a legitimate choice as long as it was backtested that way.
- Regime bucket, not a threshold. Instead of one IV cut-off, bucket the day into low, normal, and elevated volatility using IV Rank or IV Percentile, and attach different position sizes and stop widths to each bucket. This is what a risk management layer should express: capital at risk as a function of regime.
- Event blackout windows. Policy announcements, major data releases, and settlement windows deserve a no-new-entry window, defined in minutes, applied by the engine and not by your judgement at 2:55 PM.
- Basket-level stop, not just per-leg stops. For multi-leg structures, the number that matters is combined MTM. Per-leg stops on a spread can exit the hedge and keep the risk.
- Daily loss limit with a hard flatten. One bad expiry session should not be able to end a quarter.
Notice that none of these require a forecast. They describe how much risk is permitted under which observable conditions, which is the only part of volatility you actually control.
Backtest what you will actually trade
A Bank Nifty expiry strategy that looks strong in a backtest and disappoints live usually differs from live reality in four specific ways.
First, expiry weekday. If your historical data was stamped with one convention and your live engine uses another, your "expiry day" rows are shifted and the entire edge is an artifact. Re-derive expiry dates from contract data in the backtest too.
Second, lot size and contract revisions. Scale position sizing from the lot size that applied on each historical date, not today's.
Third, fills. Expiry-day spreads on out-of-the-money strikes widen, and mid-price fills flatter every option-selling backtest ever run. Model slippage per leg, and stress it upward for the final hour.
Fourth, missing data. If your historical IV series contains zeros or gaps, decide explicitly whether those rows are skipped or forward-filled, and check how much of your result depends on that choice. A strategy whose returns come mostly from days with imputed data is not a strategy.
Running these variations is what options backtesting is for, and building the same logic once so the live engine and the backtest read identical rules is what a BANKNIFTY strategy builder should give you. Divergence between the two is the most common source of "my algo worked in testing."
Keeping context in one workflow
Most of the failures above come from context living in too many tabs. The chain is on one site, IV on another, index and sector context on a third, and the order goes through a fourth — so nobody reconciles anything.
Inside Anadi Algo, the Bank Nifty workflow is meant to stay in one place: index cards and a sector heatmap for broader context, then the scanner for setups, then Action Center to rank candidates and show blocked reasons such as chase distance or invalidated price, then the options workspace for chain inspection, OI analysis, IV and theta views, strategy finder, basket preview, and a margin estimate that accounts for existing positions before anything is sent. The point is sequence: context, then structure, then risk, then execution.
If you want to prepare with context rather than chase headlines, the weekly market outlook is built for the same purpose — framing conditions, not issuing calls. You can request early access if you want to run this workflow on your own rules.
Pre-expiry checklist for Bank Nifty algos
Run this before the open, not during the session:
- Expiry date resolved from instrument master and cross-checked against the exchange contract page, with yesterday's value logged for comparison.
- Lot size reconciled between broker and exchange; maximum lots recomputed from current capital.
- Day's quantity freeze read, and order slicing configured to stay under it on every leg.
- ATM IV, India VIX, and IV Rank passing the sanity band; exact zero treated as missing, not low.
- Quote timestamps fresh; staleness threshold enforced for new entries.
- Bid-ask spread and volume checked on every strike the structure will use.
- Event blackout windows loaded for the week, including the settlement window.
- Basket-level stop and daily loss limit active, with a hard flatten path tested.
- Backtest re-run with the current lot size, current expiry derivation, and stressed expiry-day slippage.
- A written answer to one question: what condition makes this strategy stand down today?
If you cannot answer number ten, the filters are not finished. Nothing in an option chain tells you what will happen next; the chain and the contract spec only tell you what you are actually holding and what it costs to be wrong. In an expiry week, that is the more valuable information.



