Home · Guides · NIFTY weekly expiry data format: file names, expiry dates and weekly vs monthly

GUIDE · NIFTY EXPIRY FORMAT · CATALOG VERIFIED 2026-11-11

NIFTY weekly expiry data format: file names, expiry dates and weekly vs monthly

Options Data (optionsdata.shop) stores NIFTY weekly and monthly option data as one Parquet file per trading day per expiry, named NIFTY_OPT_1min_<trading day>_exp<expiry>.parquet, with the expiry also on every row. The 1-minute archive covers JAN 2023 → NOV 2026, every traded strike of the nearest expiries. Because NIFTY moved its expiry day from Thursday to Tuesday on 1 September 2025, always read expiry dates from the data rather than the calendar. Dataset: NIFTY option chain historical data.

NIFTY option chain dataNIFTY options 2025 (both expiry days) Get free sample by email File schema

Get the free sample by email → check the columns

Dates on this page are read from the live file catalog, not typed by hand. Full matrix: /coverage.

NIFTY expiry day by period (NSE)

Contracts expiringWeekly expiryMonthly expiry
On or before 31 Aug 2025Thursday of the expiry weekLast Thursday of the month
From 1 Sep 2025Tuesday of the expiry week (first: 2 Sep 2025)Last Tuesday of the month (first: 30 Sep 2025)
Expiry day is a trading holidayPrevious trading dayPrevious trading day

File names and what one file holds

Each file covers one expiry on one trading day: every strike of that expiry that traded that day, calls and puts, one row per contract per bar. The trading day and the expiry are both in the name, so NIFTY_OPT_1min_2026-09-10_exp2026-09-15.parquet is the 15 Sep 2026 contract as it traded on 10 Sep 2026.

Nearest NIFTY and SENSEX expiries, every traded strike. Full detail on the coverage page. A day therefore has several files, one per held expiry, and an expired contract is simply the set of files that share its exp date.

Timestamps are IST wall-clock bar starts. The equity derivatives session opens at 09:15; NSE moved its close from 15:30 to 15:40 from 3 Aug 2026, so take the session's last bar from the file rather than hard-coding a time.

Two expiry date formats, one parser

Two column layouts exist in the archive (see the file schema). Layout A writes the expiry as 15-SEP-2026 in expiry_date; layout B writes 2026-09-15 in expiry. Parse both into one datetime column before grouping:

import pandas as pd
df = pd.read_parquet("NIFTY_OPT_1min_2026-09-10_exp2026-09-15.parquet")
# older files use layout B names; map them to the sample names
df = df.rename(columns={"timestamp": "datetime", "strike": "strike_price",
                        "option_type": "right", "expiry": "expiry_date",
                        "oi": "open_interest"})
if "right" in df:
    df["right"] = df["right"].replace({"CE": "Call", "PE": "Put"})
def parse_expiry(s):
    s = s.astype(str)
    a = pd.to_datetime(s, format="%d-%b-%Y", errors="coerce")
    b = pd.to_datetime(s, format="%Y-%m-%d", errors="coerce")
    return a.fillna(b)
df["expiry_dt"] = parse_expiry(df["expiry_date"])
df["dte"] = (df["expiry_dt"] - pd.to_datetime(df["datetime"]).dt.normalize()).dt.days

Tell weekly from monthly expiries

The files do not label a contract "weekly" or "monthly", because the rule is calendar-based. The monthly contract is the last expiry of its calendar month; every other expiry in that month is a weekly. Build the list of expiries from your file names (a complete month of them) and flag the last one per month:

import glob, re
import pandas as pd
exp = sorted({re.search(r"_exp(\d{4}-\d{2}-\d{2})", p).group(1)
              for p in glob.glob("NIFTY_OPT_1min_*_exp*.parquet")})
e = pd.DataFrame({"expiry": pd.to_datetime(exp)})
e["monthly"] = e["expiry"] == e.groupby(e["expiry"].dt.to_period("M"))["expiry"].transform("max")
e["weekday"] = e["expiry"].dt.day_name()  # Thursday until Aug 2025, Tuesday after

Rule changes that affect backtests

From 20 November 2024 each exchange kept weekly options on a single benchmark index, and on NSE that index is NIFTY. Weekly NIFTY contracts continued throughout, so a NIFTY weekly backtest runs across that change without a gap, but expiry-day volume patterns before and after it are not directly comparable.

The Thursday-to-Tuesday switch applied to contracts expiring from 1 September 2025; contracts already listed with an August 2025 Thursday expiry kept it. Code that maps "expiry = Thursday" will mislabel every later contract. For expiry-day studies see the expiry-day backtesting guide.

Exactly which fields are in the files

Options files

Column (layout A · layout B)TypeMeaning
datetime · timestamptimestampBar start time, IST wall-clock (e.g. 2026-09-10 09:15:00)
stock_code · —stringUnderlying code: NIFTY, or BSESEN for SENSEX
exchange_code · —stringNFO (NSE F&O) or BFO (BSE F&O)
product_type · —stringOptions
expiry_date · expirystringContract expiry (A: 15-SEP-2026, B: 2026-09-15)
strike_price · strikenumberStrike price
right · option_typestringA: Call / Put, B: CE / PE
open / high / low / closefloatTraded premium OHLC within the bar
volumeintVolume traded in the bar
open_interest · oiintOpen interest at that bar (SENSEX has gaps where it is 0 — see /free/schema)

Each row is one contract in one bar: traded OHLC, volume and open interest, with strike, expiry and call/put on every row.

Format: Parquet. Validate on the free sample and the schema page before buying.

FAQ

What day does NIFTY weekly expiry fall on?

Tuesday for contracts expiring from 1 September 2025 (the first was 2 September 2025). Before that it was Thursday. If the expiry day is a trading holiday, the contract expires on the previous trading day.

How are NIFTY weekly expiry files named?

NIFTY_OPT_1min_<trading day>_exp<expiry>.parquet, one file per trading day per expiry. The expiry is also on every row.

Why does the expiry column look different between files?

Two column layouts exist: layout A uses expiry_date like 15-SEP-2026, layout B uses expiry like 2026-09-15. The parser on this page handles both.

How do I know if an expiry is weekly or monthly?

The monthly contract is the last NIFTY expiry of its calendar month; the others are weeklies. Flag it from the expiry dates, as in the code above.

Where can I download NIFTY weekly expiry option data?

From the NIFTY option chain dataset on Options Data, as Parquet or CSV. Expired weeklies are included.

Get the data

Free sample · Schema · Ask the AI for your data

NIFTY option chain dataNIFTY options 2025 (both expiry days) Get free sample by email

Related guides

Index and commodity data only.