Options Expiration Calendar 2026: All 12 Dates
The full 2026 options expiration calendar: twelve monthly third Fridays, the four quarterly dates, and the holiday rule that can shift one to a Thursday.
The 2026 options expiration calendar runs on one rule: standard monthly options on US stocks and ETFs stop trading on the third Friday of the month. That gives twelve monthly expiration dates in 2026, running from Jan 16 through Dec 18, and four of them double as quarterly expirations. Every date on this page is computed from the calendar rather than copied off a list, and the second section shows you how to regenerate all twelve yourself in a single command.
The 2026 options expiration calendar, month by month
A standard monthly contract is the default listing on any optionable US stock or ETF. One expiration per month, on the third Friday, at the close. The panel below derives all twelve 2026 dates from plain date arithmetic, then checks each one against the live exchange holiday calendar.
The exact SQL behind every number
SELECT
toString(cal.exp_date) AS expiration_date,
concat(formatDateTime(cal.exp_date, '%b '), toString(toDayOfMonth(cal.exp_date))) AS expiry_label,
formatDateTime(cal.exp_date, '%a') AS weekday,
toDayOfMonth(cal.exp_date) AS day_of_month,
if(toMonth(cal.exp_date) IN (3, 6, 9, 12), 'quarterly', 'monthly') AS expiry_class,
multiIf(cal.exp_date < today(), 'already traded',
hol.holiday != '', concat('scheduled closure: ', hol.holiday),
'no closure scheduled') AS calendar_check
FROM
(
SELECT
toDate('2026-01-01') + toIntervalMonth(arrayJoin(range(12))) AS month_start,
month_start + ((12 - toDayOfWeek(month_start)) % 7) + 14 AS exp_date
) AS cal
LEFT JOIN
(
SELECT
date AS d,
any(name) AS holiday
FROM global_markets.stocks_market_holidays
GROUP BY date
) AS hol ON hol.d = cal.exp_date
ORDER BY cal.exp_dateThe day_of_month column is the part worth studying. A third Friday cannot land before the 15th and cannot land after the 21st: the first Friday of any month sits somewhere in the first seven days, and the third is fourteen days after it. In 2026 the earliest is May, on the 15th, and the latest is August, on the 21th. The other ten fall between those two.
Expiration is also the last day these contracts trade, and for ordinary stock and ETF options those are the same day. Index options are the exception worth knowing: several of them settle Friday morning off the opening prints, which puts their final trading session on Thursday. Our guide to AM and PM settled options sorts out which is which, and when do options expire covers what happens to a position on the day itself.
How to generate every 2026 expiration date yourself
Nothing in this calendar needs a data feed. Python ships a calendar module inside its standard library, so the whole list comes out of one command with nothing to install and no network access:
python3 -c "import calendar; print(*[[d for w in calendar.Calendar().monthdatescalendar(2026, m) for d in w if d.month == m and d.weekday() == 4][2] for m in range(1, 13)], sep='\\n')"
Run that on any machine with Python 3 and it prints twelve ISO dates, one per line. monthdatescalendar hands back a month as a list of whole weeks, padded at both ends with days borrowed from the neighbouring months. The d.month == m test throws the borrowed days away, d.weekday() == 4 keeps the Fridays (Monday is 0), and [2] takes the third one. Change the year and the list regenerates. That is the entire calculation, and it is why an expiration calendar is something you derive rather than look up.
Which 2026 expirations are quarterly
Four of the twelve fall in March, June, September, and December: Mar 20, Jun 19, Sep 18, and Dec 18. On those dates, stock options, stock index options, and stock index futures all reach expiration together, which is where the nickname triple witching comes from. The mechanics are in what is triple witching, and the quarter-by-quarter detail lives in 2026 triple witching dates. One of the four carries an asterisk in 2026, and the next section works out which one off the tape.
What happens when a market holiday lands on expiration Friday
The third-Friday rule has one exception, and it is a real one. When the third Friday is an exchange holiday, the market never opens that day, and the last trading day for the monthly contracts moves back to the Thursday before. Whether that happens in a given year is a question you can settle off the tape instead of trusting a list. A full US session is 390 one-minute bars, six and a half hours from the 9:30 a.m. open to the 4:00 p.m. close. A day the market sits closed prints none at all.
The exact SQL behind every number
SELECT
toString(cal.day) AS session_date,
concat(formatDateTime(cal.day, '%b '), toString(toDayOfMonth(cal.day))) AS session_label,
if(toDayOfMonth(cal.day) BETWEEN 15 AND 21, 'third Friday', 'other Friday') AS friday_type,
toUInt32(ifNull(tape.bars, 0)) AS regular_session_bars
FROM
(
SELECT toDate('2026-01-01') + arrayJoin(range(212)) AS day
) AS cal
LEFT JOIN
(
SELECT
toDate(toTimeZone(window_start, 'America/New_York')) AS d,
count() AS bars
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= toDateTime('2026-01-01 00:00:00')
AND window_start < toDateTime('2026-08-02 00:00:00')
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) >= 570
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) < 960
GROUP BY d
) AS tape ON tape.d = cal.day
WHERE toDayOfWeek(cal.day) = 5
ORDER BY regular_session_bars ASC, cal.day ASCBetween January and the end of July 2026, 31 Fridays came and went. Three of them printed 0 regular-session minute bars, which is what a closed market looks like on the tape: Apr 3, Jun 19, and Jul 3. The first is Good Friday. The third is Independence Day observed, since July 4 lands on a Saturday in 2026 and the exchanges take the Friday before. Every other Friday in the window printed 390 bars, a full session.
The middle one is the exception this page owes you. Jun 19 is Juneteenth National Independence Day, which the US equity exchanges have observed since 2022, and in 2026 it falls on the 19th of June: the third Friday, the June monthly expiration, and one of the four quarterly dates. The market never opens that day, and the June monthly contracts have their last trading day on the Thursday before it. It is the only third Friday of 2026 that lands on a scheduled market closure, and the 2026 triple witching dates page carries the quarterly detail.
Good Friday is the other holiday that can reach a third Friday, and unlike Juneteenth it has no fixed date: it tracks Easter, which moves between late March and late April. The panel below derives the April third Friday for each of the last eleven years and counts what the SPY tape recorded on it.
The exact SQL behind every number
SELECT
toString(toYear(cal.exp_date)) AS year,
concat(formatDateTime(cal.exp_date, '%b '), toString(toDayOfMonth(cal.exp_date))) AS april_expiry_label,
toUInt32(ifNull(tape.bars, 0)) AS regular_session_bars,
if(ifNull(tape.bars, 0) = 0, 'market closed', 'full session') AS session_status
FROM
(
SELECT
toDate(concat(toString(2016 + arrayJoin(range(11))), '-04-01')) AS april_first,
april_first + ((12 - toDayOfWeek(april_first)) % 7) + 14 AS exp_date
) AS cal
LEFT JOIN
(
SELECT
toDate(toTimeZone(window_start, 'America/New_York')) AS d,
count() AS bars
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= toDateTime('2016-01-01 00:00:00')
AND toMonth(window_start) = 4
AND toDayOfMonth(window_start) BETWEEN 14 AND 22
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) >= 570
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) < 960
GROUP BY d
) AS tape ON tape.d = cal.exp_date
ORDER BY cal.exp_dateAcross the 11 Aprils from 2016 through 2026, the April expiration Friday met a closed market in 2019, in 2022, and again in 2025. In each of those years the monthly contracts stopped trading on the Thursday instead. In 2026 the April date printed a full 390 bars, which puts the 2026 Thursday shift in June rather than April.
Where weeklys, end of month, and Monday expirations fit
The third Friday is the one date every optionable name shares. Around it sit several other series that ignore the third-Friday rule entirely. Weeklys list on most other Fridays, usually a few weeks out at a time. End-of-month options expire on the last business day of the month rather than on a Friday. On heavily traded names there are Monday and Wednesday expirations as well, and on a short roster of index products and single stocks, an expiration every trading day. The current roster is in stocks with daily options.
The size gap between a monthly and everything around it shows up straight away in contract counts. This panel takes every 2026 expiration date that AAPL options traded into during the first half of the year and counts the distinct contracts on each.
The exact SQL behind every number
SELECT
toString(agg.exp_date) AS expiration_date,
concat(formatDateTime(agg.exp_date, '%b '), toString(toDayOfMonth(agg.exp_date))) AS expiry_label,
multiIf(toDayOfWeek(agg.exp_date) = 5 AND toDayOfMonth(agg.exp_date) BETWEEN 15 AND 21, 'monthly third Friday',
toDayOfWeek(agg.exp_date) = 5, 'weekly Friday',
toDayOfWeek(agg.exp_date) = 4 AND toDayOfMonth(agg.exp_date) BETWEEN 14 AND 20, 'Thursday before a third Friday',
'other weekday') AS expiry_class,
agg.n_contracts AS contracts_traded
FROM
(
SELECT
toDate(expiration_date) AS exp_date,
countDistinct(ticker) AS n_contracts
FROM global_markets.options_greeks
WHERE underlying_symbol = 'AAPL'
AND toDate(expiration_date) >= toDate('2026-01-01')
AND toDate(expiration_date) < toDate('2026-07-01')
AND volume > 0
AND iv_converged = 1
GROUP BY exp_date
) AS agg
ORDER BY contracts_traded DESC, agg.exp_date ASCThe heaviest 2026 expiration date for AAPL in that window, Jun 18, carried 200 distinct contracts, and the panel classes it as Thursday before a third Friday. The thinnest date over the same six months carried 50. Monthly expirations list strikes further above and below the money and further into the future, and long-dated positions accumulate on them for years ahead of the date. Trading in nearly all of these contracts runs to the 4:00 p.m. close; what time options stop trading has the cutoffs that differ.
How these panels were built
The session-length panels count one-minute bars on the SPY tape between the 9:30 a.m. and 4:00 p.m. ET clock times, converted from stored UTC timestamps. No holiday date is hardcoded in either query: a closed day is simply a weekday that printed zero regular-session bars, recovered from what did and did not trade. The AAPL panel counts only contracts that traded at least once and carried a converged implied-volatility mark, which keeps unpriced listings out of the count, and it covers January through June 2026. The twelve expiration dates come from date arithmetic on the first of each month, the same calculation as the Python command above.
FAQ
When do options expire in 2026?
Standard monthly options on US stocks and ETFs expire on the third Friday of each month, twelve dates running from Jan 16 through Dec 18. The June date is a scheduled market closure, which pulls those contracts back to the Thursday before it. Weekly, end-of-month, and daily series expire on their own schedules around those twelve dates.
What are the 2026 triple witching dates?
The four quarterly expirations fall on Mar 20, Jun 19, Sep 18, and Dec 18. Stock options, index options, and index futures all reach expiration together on those dates. The June one lands on an exchange holiday in 2026, which moves the last trading day back to the Thursday.
Can an options expiration date move off Friday?
Yes. When the third Friday is an exchange holiday, the market is shut and the monthly contracts stop trading on the Thursday before. Over the last eleven Aprils that happened in 2019, 2022, and 2025, always on Good Friday. It happens once in 2026 as well, in June, where the third Friday is Juneteenth.
Do weekly options expire on the third Friday too?
The third Friday of a month is served by the standard monthly contract, so the weekly series simply skips it. Weeklys cover the other Fridays, and on the largest names there are also Monday and Wednesday expirations.
Is the US expiration date the same as Japan's SQ date?
No. Japanese index futures and options settle on a special quotation, written SQ, calculated from the second Friday's opening prices, and the quarterly one in March, June, September, and December is called the mega SQ. US monthly options expire on the third Friday. Anyone following both calendars is working with two different dates each month.
Every panel on this page ships with the exact SQL underneath it. To rebuild the same calendar for another year, or to count contracts on a different ticker, ask the question in plain English on the Strasmore terminal.