When Do Options Expire? The Real Calendar
Most US stock options expire Friday at the 4 PM close — but big ETFs expire daily, monthlies land on third Fridays, and holidays move the date. Receipts inside.
US stock options expire on their stated expiration date — for most contracts, a Friday, with trading cutting off at the 4:00 PM ET close that day. Monthly contracts land on the third Friday of the month; the most active ETFs now list a new expiration every single trading day; and when a Friday is an exchange holiday, that week's expiration moves up to Thursday. Those are the rules on paper. This page shows the expiration calendar as it actually trades, from six weeks of the full options tape — including a holiday week that moved a Friday.
What days do options actually expire?
Volume by the weekday of the expiration being traded, June 1 through July 9, 2026, across every listed US option:
The exact SQL behind every number
SELECT weekday,
round(sum(vol) / 1e6, 1) AS contracts_mm,
round(100 * sum(vol) / sum(sum(vol)) OVER (), 1) AS pct_of_volume,
uniqExact(expiry) AS distinct_expiry_dates
FROM (
SELECT toDateOrNull(concat('20', substring(ticker, length(ticker) - 14, 6))) AS expiry,
multiIf(toDayOfWeek(toDateOrNull(concat('20', substring(ticker, length(ticker) - 14, 6)))) = 1, '1 Monday',
toDayOfWeek(toDateOrNull(concat('20', substring(ticker, length(ticker) - 14, 6)))) = 2, '2 Tuesday',
toDayOfWeek(toDateOrNull(concat('20', substring(ticker, length(ticker) - 14, 6)))) = 3, '3 Wednesday',
toDayOfWeek(toDateOrNull(concat('20', substring(ticker, length(ticker) - 14, 6)))) = 4, '4 Thursday',
'5 Friday') AS weekday,
toFloat64(volume) AS vol
FROM global_markets.options_minute_aggs
WHERE window_start >= '2026-06-01 04:00:00'
AND window_start < '2026-07-10 04:00:00'
)
WHERE expiry IS NOT NULL
GROUP BY weekday
ORDER BY weekdayFriday-dated contracts drew 47.8% of all volume in the window — 865.5 million contracts across 39 distinct Friday expiration dates. Friday remains the center of gravity of the options calendar: weeklies expire there, and the big monthly cycle lands on the third Friday of each month. But notice the Thursday row punching above its weight — 21.4% of volume on just 14 dates. Two of those Thursdays were relocated Fridays, and they are the most instructive part of the window.
Index ETFs now expire every day
For SPY — and a handful of other heavily traded ETFs — "when do options expire" has a blunt answer: today, whenever today is. Every June 2026 trading session was an SPY expiration date:
The exact SQL behind every number
SELECT toString(expiry) AS expiry_date,
round(sum(vol) / 1e6, 2) AS contracts_mm
FROM (
SELECT toDateOrNull(concat('20', substring(ticker, length(ticker) - 14, 6))) AS expiry,
toFloat64(volume) AS vol
FROM global_markets.options_minute_aggs
WHERE window_start >= '2026-06-01 04:00:00'
AND window_start < '2026-07-01 04:00:00'
AND ticker LIKE 'O:SPY2%'
)
WHERE expiry >= '2026-06-01' AND expiry <= '2026-06-30'
GROUP BY expiry
ORDER BY expiry21 expiration dates in a 21-session month — one for every trading day. That daily cycle is what makes 0DTE options possible at scale: every session, some contracts are living their final hours. Single stocks are further along the same road than most people think. NVDA's June expirations, ranked by volume:
The exact SQL behind every number
SELECT toString(expiry) AS expiry_date,
round(sum(vol) / 1e6, 2) AS contracts_mm
FROM (
SELECT toDateOrNull(concat('20', substring(ticker, length(ticker) - 14, 6))) AS expiry,
toFloat64(volume) AS vol
FROM global_markets.options_minute_aggs
WHERE window_start >= '2026-06-01 04:00:00'
AND window_start < '2026-07-01 04:00:00'
AND ticker LIKE 'O:NVDA2%'
)
WHERE expiry >= '2026-06-01' AND expiry <= '2026-06-30'
GROUP BY expiry
ORDER BY contracts_mm DESC
LIMIT 6The leader, 2026-06-18 at 6.76 million contracts, is June's monthly expiration — relocated to Thursday, as covered below — and the rest of the top rows are dominated by weekly Fridays. NVDA lists mid-week expirations now too, and they trade, but the old weekly-and-monthly rhythm still owns most of the volume.
What happens when expiration Friday is a holiday?
The rule: expiration moves to the preceding trading day. The window measured here contains both 2026 examples. June 19 (Juneteenth) pushed the quarterly monthly expiration to Thursday June 18 — the triple witching session. And July 3, the Independence Day closure, pushed that week's Friday weeklies to Thursday July 2. The receipt for the July move, in SPY contracts:
The exact SQL behind every number
SELECT round(sumIf(vol, expiry = '2026-07-02') / 1e6, 2) AS thursday_july2_contracts_mm,
round(sumIf(vol, expiry = '2026-07-03') / 1e6, 2) AS friday_july3_contracts_mm
FROM (
SELECT toDateOrNull(concat('20', substring(ticker, length(ticker) - 14, 6))) AS expiry,
toFloat64(volume) AS vol
FROM global_markets.options_minute_aggs
WHERE window_start >= '2026-06-29 04:00:00'
AND window_start < '2026-07-03 04:00:00'
AND ticker LIKE 'O:SPY2%'
)
WHERE expiry IS NOT NULLContracts dated Friday July 3 traded 0 million — zero. No such contracts existed; the listing calendar routed that week's Friday expiration to Thursday July 2, which traded 12.84 million SPY contracts, the heaviest expiry of its week. Holiday weeks are covered more broadly in market holidays and early closes.
Why expiration dates dominate the volume tape
Expiration is a forced decision point, and the volume shows the deciding. A position that a holder wants to keep past expiry has to be rolled — closed in the expiring contract and reopened in a later-dated one — which prints volume in both. Positions nobody wants to carry into exercise get closed outright. Market makers hedge the shrinking time value of everything still open. All of that concentrates into the final sessions before each date, which is why the biggest bars in every panel above are expiration dates: the calendar itself manufactures the activity, on a schedule known years in advance.
A historical footnote that still confuses people: for decades, listed equity options technically expired on the Saturday following the third Friday — a paper-processing buffer from a pre-electronic era. The industry moved the legal expiration onto the Friday itself in 2015. If an older guide tells you options expire on Saturday, that is the fossil it is quoting.
What happens at expiration itself?
The mechanics, briefly. Most equity and ETF options stop trading at the 4:00 PM ET close on expiration day (a few index products differ). After the close, the Options Clearing Corporation runs exercise-by-exception: any option finishing in the money by $0.01 or more is exercised automatically unless the holder instructs otherwise. In-the-money calls become share purchases at the strike; in-the-money puts become sales; out-of-the-money contracts expire worthless and simply disappear from the account. Share delivery settles on the normal cycle. For a holder who does not want shares, the practical implication is that closing the position before the final bell is the routine path — which is a large part of why expiration days trade so heavily in the first place.
Options expiration FAQ
What time do options expire on expiration day?
Trading in most equity and ETF options ends at 4:00 PM ET on the expiration date. Exercise decisions process after the close, so an option's fate is set by where the underlying finishes the session.
Do all options expire on Fridays?
No — but Friday-dated contracts carried 47.8% of all volume in the six weeks measured here. SPY and several major ETFs list a new expiration every trading day, and active single names like NVDA carry mid-week dates too. The monthly cycle remains the third Friday.
What happens if my option expires in the money?
It is exercised automatically at expiration if it finishes $0.01 or more in the money — calls buy the shares at the strike, puts sell them — unless you instruct your broker otherwise before its cutoff.
What happens to options when the market is closed on a Friday?
The expiration moves to the preceding trading day. Both 2026 cases sit in the data above: Juneteenth moved June's monthly to Thursday June 18, and the July 4 closure moved that week's weeklies to Thursday July 2.
Every panel is a stored, versioned query over the full options tape — expand the SQL to see each measurement, or check any ticker's expiration calendar on the Strasmore terminal.