Strasmore Research
Learn am Matt ConnorBy Matt Connor · Updated 2026-07-25

When options dey expire? Friday 4 PM ET & daily

Most options stop trading by 4 PM ET on expiration Friday. Weeklies dey expire Fridays, monthlies na third Friday, and SPY and QQQ dey expire daily. See the real calendar for 2026.

For US stock options, dem dey expire for the exact expiration date wey dem write — for most contracts, na Friday, and trading dey stop by 4:00 PM ET close for that day. Monthly contracts dey land for the third Friday; the most active ETFs and index products dey list new expiration every trading day; and when Friday be exchange holiday, the expiration go move go Thursday. Na so the rules be for paper. This page dey show the calendar as e dey trade for real — six weeks of the full options tape, the measured third-Friday dates for the rest of 2026, and one holiday week wey move one Friday.

Which days options dey actually expire?

Volume by the weekday wey dem dey trade expiration, from June 1 go reach July 9, 2026, across every listed US option:

QueryOptions volume by expiration weekday — all US options wey dem trade June 1 - July 9, 2026
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,
       uniqExact(root) AS underlyings
FROM (
    SELECT toDateOrNull(concat('20', substring(ticker, length(ticker) - 14, 6))) AS expiry,
           substring(ticker, 3, length(ticker) - 17) AS root,
           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 weekday

Contracts wey dem date for Friday draw 48.3% of all volume for that window — 903.2 million contracts across 39 distinct Friday expiration dates. Friday still be the center of gravity for calendar: weeklies dey expire there, and the monthly cycle dey land on the third Friday. The Thursday row dey punch above im weight — 21.6% of volume on just 14 dates — and two of those Thursdays na relocated Fridays, wey dem cover below.

The underlyings column dey answer the title question for your stock. Contracts wey dem date for Friday trade on 5871 distinct option roots — essentially every optionable name for America — while contracts wey dem date for Monday and Tuesday trade on just 33 and 30 roots (10% and 8% of volume) and Wednesday on 45: midweek expiration belong to index products, a few ETFs, and a handful of hyperactive single names. For everything else, expiration mean Friday. (Thursday im 5301 roots na the two relocated Fridays at work.) One oddity wey you go hold onto: Wednesday show 22 distinct expiration dates — e pass Thursday im 14 — on 12.1% of the volume; the index-options section go resolve that one.

Di tickers wey dey expire every day

For SPY and im mates, di question "when options dey expire" get one straight answer: today, any day wey today be. Every June 2026 session na SPY expiration date:

QuerySPY options volume by June 2026 expiration date — new expiry dey every session
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 expiry

21 expiration dates inside one 21-session month — one per trading day. Dat daily cycle na wetin dey make 0DTE options possible for large scale (DTE = days to expiration). So which tickers get daily expirations? For June 2026, exactly 11 option roots list expiration for all 21 sessions:

QueryDi daily-expiration club — every root wey get expiry on all 21 June 2026 sessions
The exact SQL behind every number
SELECT root,
       uniqExact(expiry) AS june_expiry_dates,
       round(sum(vol) / 1e6, 1) AS contracts_mm
FROM (
    SELECT substring(ticker, 3, length(ticker) - 17) AS root,
           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'
)
WHERE expiry >= '2026-06-01' AND expiry <= '2026-06-30' AND root != 'SPCX'
GROUP BY root
HAVING june_expiry_dates >= 20
ORDER BY june_expiry_dates DESC, contracts_mm DESC, root

Three na stock ETFs — SPY, QQQ, and IWM, wey SPY lead with im 240.3 million June contracts. Di other eight na cash-settled index roots: di S&P 500 weekly root SPXW and im mini XSP, plus Nasdaq-100, Russell 2000, and Dow variants. No ordinary single stock dey di list — even though single stocks dey closer dan wetin plenty people tink. NVDA im June expirations, rank by volume:

QueryNVDA options volume by June 2026 expiration date — top six expiries
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 6

Di leader, 2026-06-18 at 6.76 million contracts, na June monthly expiration — dem move am go Thursday, as wey dem cover below — and di rest of di top rows na weekly Fridays dey dominate. NVDA dey list midweek expirations too, and dem dey trade, but di weekly-and-monthly rhythm still get most of di volume.

Why my stock dey get only monthly expirations?

Na listing rules dey decide di calendar wey you dey see. Every stock wey get option dey carry di monthly third-Friday contract, and dem dey assign each class for listing to one of three old quarterly cycles wey dey control im further-out months: January/April/July/October, February/May/August/November, or March/June/September/December. Di assignment na fossil from di floor era, but e still dey decide which back months go siddon for a slower name board. Exchanges still dey list di two nearest months for every class, weekly Friday contracts where demand support am, and daily expirations for di 11 roots above. Na im make di pyramid be like dis: 5871 roots with a Friday date, 45 with a Wednesday, 33 with a Monday. A stock wey dey show one expiration per month na just name wey no get weekly listings.

Di rest of di 2026 expiration calendar

Dem don set expiration dates many years ahead, and forward-dated contracts dey trade already — di rest of 2026 calendar fit read straight from di tape. For each remaining month of 2026, di busiest expiration date for July 6–9 trading:

QueryDi rest of 2026, measured — each month im busiest forward expiration date, July 6-9 tape
The exact SQL behind every number
WITH per_expiry AS (
    SELECT toDateOrNull(concat('20', substring(ticker, length(ticker) - 14, 6))) AS expiry,
           sum(toFloat64(volume)) AS v,
           uniqExact(substring(ticker, 3, length(ticker) - 17)) AS underlyings
    FROM global_markets.options_minute_aggs
    WHERE window_start >= '2026-07-06 04:00:00'
      AND window_start < '2026-07-10 04:00:00'
    GROUP BY expiry
)
SELECT formatDateTime(toStartOfMonth(expiry), '%Y-%m') AS month,
       toString(argMax(expiry, (v, toString(expiry)))) AS busiest_expiry_date,
       dateName('weekday', argMax(expiry, (v, toString(expiry)))) AS weekday,
       round(max(v) / 1e6, 1) AS contracts_mm,
       argMax(underlyings, (v, toString(expiry))) AS underlyings
FROM per_expiry
WHERE expiry >= '2026-07-13' AND expiry <= '2026-12-31'
GROUP BY month
HAVING toDayOfWeek(argMax(expiry, (v, toString(expiry)))) = 5
   AND toDayOfMonth(argMax(expiry, (v, toString(expiry)))) BETWEEN 15 AND 21
ORDER BY month

Every single one land for Friday between di 15th and di 21st of im month — di third Friday: 2026-07-17, 2026-08-21, 2026-09-18, 2026-10-16, 2026-11-20, and 2026-12-18. Two na quarterly triple-witching dates (2026-09-18 and 2026-12-18), wen stock options, index options, and index futures expire together; 2026 other two quarterly dates don already pass — March 20, and di relocated June 18 wey dem cover next. Check November against December: 1493 roots carry di November monthly versus 2432 for December, di quarterly month wey anchor long-dated LEAPS listings.

Wetin dey happen when expiration Friday na holiday?

Di rule: expiration go move go di trading day wey dey before am. Di window get both 2026 examples. June 19 (Juneteenth) push di quarterly expiration go Thursday June 18 — di triple witching session. And July 3, di Independence Day closure, push dat week weeklies go Thursday July 2. Di receipt for di July move, for SPY contracts:

QueryDi July 2026 holiday move — SPY volume in contracts wey expire Thursday July 2 vs Friday July 3
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 NULL

Contracts wey dem date Friday July 3 trade 0 million — zero. No such contracts dey exist; di listing calendar route dat week Friday expiration go Thursday July 2, wey trade 12.84 million SPY contracts on im own. Dem cover holiday weeks more broadly for market holidays and early closes.

Index options dey follow different rules

Index options — di SPX family, NDX, RUT, VIX — na cash-settled (exercise na to move cash, no be shares, against one settlement level of di index) and dem be European-style (you no fit exercise before expiration). Plenty of dem dey trade until 4:15 PM ET, fifteen minutes after stock close, but one expiring PM-settled contract go settle to di index level wey dem compute from 4:00 PM closing prices. And di classic third-Friday SPX monthly na AM-settled: e dey stop trading Thursday for close and settle to one level wey dem compute from Friday morning opening prints. Newer weekly and daily index contracts (di SPXW root) na PM-settled.

VIX options na di other oddball for di calendar: dem dey expire on Wednesday mornings, AM-settled, one per monthly cycle, dem list am for many months out — na di resolution to di Wednesday puzzle wey dey up. Di roots wey get di most distinct Wednesday-dated expirations, from four July sessions of tape:

QueryWho get Wednesday — roots by distinct Wednesday-dated expirations, July 6-9, 2026 tape
The exact SQL behind every number
SELECT root,
       uniqExact(expiry) AS wednesday_expiry_dates,
       toString(min(expiry)) AS nearest,
       toString(max(expiry)) AS furthest,
       round(sum(vol) / 1000, 0) AS contracts_k
FROM (
    SELECT substring(ticker, 3, length(ticker) - 17) AS root,
           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-07-06 04:00:00'
      AND window_start < '2026-07-10 04:00:00'
)
WHERE expiry IS NOT NULL AND toDayOfWeek(expiry) = 3 AND expiry >= '2026-07-08' AND root != 'SPCX'
GROUP BY root
ORDER BY wednesday_expiry_dates DESC, contracts_k DESC, root
LIMIT 8

VIX carry 9 distinct Wednesday expirations — one chain wey run from 2026-07-22 reach 2027-03-17, one per cycle — and SPXW match am with 9. Di ETF rows dey nearer-dated: daily and weekly listings plus quarter-end contracts (June 30, 2027 na Wednesday). VIX far-dated monthlies wey stack on top di ETFs dailies make Wednesday get more distinct expiration dates pass any weekday except Friday — 22 inside di six-week window — on top small volume.

Wetin dey happen for expiration itself?

Most equity and ETF options dey stop to trade by 4:00 PM ET for expiration day. After di close, di Options Clearing Corporation (OCC) go run exercise-by-exception: any option wey finish in di money by $0.01 or more go exercise automatically unless di holder give different instruction. In-the-money calls turn to share purchases for di strike; in-the-money puts turn to sales; out-of-the-money contracts just expire worthless. Share delivery go settle for di normal cycle.

Expiration na di deadline, no be di only exercise window. Equity and ETF options na American-style: you fit exercise dem for any business day wey di contract still dey alive. Early exercise dey gada for deep-in-the-money calls di day before ex-dividend date, wen to collect di dividend fit pass di remaining time value — for anybody wey short such calls, assignment risk dey peak di night before di ex-date, no be for expiration.

Cutoffs, pin risk, and di last hour

  • Your broker cutoff dey come before OCC own. OCC dey accept exercise instructions until around 5:30 PM ET for expiration day; brokers normally dey cut customers off around 4:30 PM ET. To override auto-exercise dey happen for your broker own clock.
  • Di stock dey continue to move after di option stop to trade. Exercise-by-exception dey key off di 4:00 PM official close, but after-hours move wey cross di strike dey allow long holders to file fresh instructions while short holders fit only wait.
  • Pin risk. Wen di close land within pennies of one heavily traded strike, short holders no fit know how many contracts dem go assign until notice arrive overnight. Di normal mitigation: close or roll before di final bell.

Why expiration dates dey control di volume tape

Expiration na forced decision point, and di volume dey show di deciding. Any position wey holder wan keep pass expiry must be rolled — dem go close am for di expiring contract, open am back for later-dated one — e dey print volume for both sides. Positions wey dem no want, dem go close am straight; market makers dey hedge di shrinking time value of everi oda thing wey still dey open. How concentrated dat decision point be? Put everi SPY contract wey dem trade for June 2026 inside bucket by how many days e still get left to live for di moment dem trade am:

QueryJune 2026 SPY options volume by days-to-expiry as dem trade am
The exact SQL behind every number
SELECT dte_bucket,
       round(sum(vol) / 1e6, 1) AS contracts_mm,
       round(100.0 * sum(vol) / (sum(sum(vol)) OVER ()), 1) AS pct_of_month
FROM (
    SELECT multiIf(dte = 0, '0 days (expiry day)', dte = 1, '1 day left', dte <= 5, '2-5 days left', '6+ days left') AS dte_bucket,
           dte, vol
    FROM (
        SELECT dateDiff('day', toDate(toTimeZone(window_start, 'America/New_York')),
                        toDateOrNull(concat('20', substring(ticker, length(ticker) - 14, 6)))) AS dte,
               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 dte >= 0
)
GROUP BY dte_bucket
ORDER BY min(dte)

69.5% of di month contract volume trade for di expiry day itself, anoda 9.3% with one day left — di expiration date no just end di contract, e host most of di contract life volume. Di calendar itself dey manufacture di activity, on schedule wey dem know years ahead.

One historical footnote wey still dey confuse pipo: for decades, listed equity options technically dey expire for di Saturday after di third Friday — na paper-processing buffer from pre-electronic era. Di industry move di legal expiration go Friday itself for 2015; any older guide wey talk say options dey expire on Saturday dey quote dat fossil.

Options expiration FAQ

Wetin time options dey expire for expiration day?

Trading for most equity and ETF options dey end by 4:00 PM ET for expiration date; most index options dey trade reach 4:15 PM ET. Exercise decisions dey process after di close — OCC dey accept instructions till around 5:30 PM ET, but brokers dey set earlier cutoffs.

All options dey expire on Fridays?

No — but Friday-dated contracts carry 48.3% of all volume for di six weeks wey dem measure here, across 5871 underlying roots. Daily expirations dey exist for 11 index-tracking roots, a few dozen active names dey carry midweek dates, VIX dey expire on Wednesday mornings, and di monthly cycle dey land on di third Friday.

I fit exercise an option before expiration?

Yes for equity and ETF options — dem be American-style, wey you fit exercise on any business day. For practice, early exercise mostly involve deep-in-the-money calls just before an ex-dividend date. Index options like SPX na European-style: exercise dey happen only at expiration.

Wetin dey happen if my option expire in the money?

Dem dey exercise am automatically at expiration if e finish $0.01 or more in the money — calls dey buy di shares at di strike, puts dey sell dem — unless you tell your broker otherwise before im cutoff.

Wetin dey happen to options when market close on a Friday?

Di expiration dey move go di trading day wey dey before. Both 2026 cases dey inside di data above: Juneteenth move June monthly go Thursday June 18, and di July 4 closure move dat week weeklies go Thursday July 2.

Which stocks and ETFs get daily option expirations?

A handful of di most liquid index ETFs dey list a new expiration every trading day, with SPY and QQQ dey front for dat group. Single stocks dey top out at weekly expirations. Di full list, wey dem measure from di options tape, dey inside which stocks get daily options.

Wetin dey happen to an option Greeks as expiration dey near?

Time value dey drain fastest for di end — theta, di daily cost of holding, dey peak for di final days — while gamma, di speed wey delta itself dey move, dey spike for at-the-money strikes. Dat combination na why expiration-week contracts dey feel so twitchy. Di full set of sensitivities dey measured on real tape inside di option Greeks, dem explain am; how di Greeks dey change over a contract life dey follow dem from listing to expiry, and theta and gamma each get dia own deep dive.


Every panel na stored, versioned query over di full options tape — expand di SQL to see each measurement, or check any ticker expiration calendar for di Strasmore terminal.