{"slug":"when-do-options-expire","qid":"daily_club","label":"The daily-expiration club: every root with an expiry on all 21 June 2026 sessions","post_title":"When Do Options Expire? Friday 4 PM ET & Daily","post_url":"/blog/when-do-options-expire#q-daily_club","columns":["root","june_expiry_dates","contracts_mm"],"rows":[{"root":"SPY","june_expiry_dates":21,"contracts_mm":240.3},{"root":"QQQ","june_expiry_dates":21,"contracts_mm":151.2},{"root":"SPXW","june_expiry_dates":21,"contracts_mm":80.7},{"root":"IWM","june_expiry_dates":21,"contracts_mm":36.1},{"root":"XSP","june_expiry_dates":21,"contracts_mm":3.6},{"root":"NDXP","june_expiry_dates":21,"contracts_mm":2.1},{"root":"RUTW","june_expiry_dates":21,"contracts_mm":0.9},{"root":"DJXW","june_expiry_dates":21,"contracts_mm":0},{"root":"MGTNW","june_expiry_dates":21,"contracts_mm":0},{"root":"MRUT","june_expiry_dates":21,"contracts_mm":0},{"root":"XND","june_expiry_dates":21,"contracts_mm":0}],"shape":"ranking","sql":"SELECT root,\n       uniqExact(expiry) AS june_expiry_dates,\n       round(sum(vol) / 1e6, 1) AS contracts_mm\nFROM (\n    SELECT substring(ticker, 3, length(ticker) - 17) AS root,\n           toDateOrNull(concat('20', substring(ticker, length(ticker) - 14, 6))) AS expiry,\n           toFloat64(volume) AS vol\n    FROM global_markets.options_minute_aggs\n    WHERE window_start >= '2026-06-01 04:00:00'\n      AND window_start < '2026-07-01 04:00:00'\n)\nWHERE expiry >= '2026-06-01' AND expiry <= '2026-06-30' AND root != 'SPCX'\nGROUP BY root\nHAVING june_expiry_dates >= 20\nORDER BY june_expiry_dates DESC, contracts_mm DESC, root","computed_at":"2026-08-10T14:10:45.961378+00:00","elapsed":0.002526011}