{"slug":"when-do-ndx-options-expire","qid":"opening_share_by_expiry","label":"opening_share_by_expiry","post_title":"when-do-ndx-options-expire","post_url":"/blog/when-do-ndx-options-expire#q-opening_share_by_expiry","columns":["session_date","expiry_label","first_15min_share_pct","session_volume_millions"],"rows":[{"session_date":"2025-09-19","expiry_label":"Sep 19, 2025","first_15min_share_pct":8.6,"session_volume_millions":51.6},{"session_date":"2025-10-17","expiry_label":"Oct 17, 2025","first_15min_share_pct":8,"session_volume_millions":64.2},{"session_date":"2025-11-21","expiry_label":"Nov 21, 2025","first_15min_share_pct":8,"session_volume_millions":90.2},{"session_date":"2025-12-19","expiry_label":"Dec 19, 2025","first_15min_share_pct":12,"session_volume_millions":51.7},{"session_date":"2026-01-16","expiry_label":"Jan 16, 2026","first_15min_share_pct":8.2,"session_volume_millions":54.4},{"session_date":"2026-02-20","expiry_label":"Feb 20, 2026","first_15min_share_pct":6.9,"session_volume_millions":69.5},{"session_date":"2026-03-20","expiry_label":"Mar 20, 2026","first_15min_share_pct":5.7,"session_volume_millions":81.1},{"session_date":"2026-04-17","expiry_label":"Apr 17, 2026","first_15min_share_pct":7.4,"session_volume_millions":46},{"session_date":"2026-05-15","expiry_label":"May 15, 2026","first_15min_share_pct":9.3,"session_volume_millions":42.3},{"session_date":"2026-07-17","expiry_label":"Jul 17, 2026","first_15min_share_pct":10.3,"session_volume_millions":46.5},{"session_date":"2026-08-21","expiry_label":"Aug 21, 2026","first_15min_share_pct":8,"session_volume_millions":28.6},{"session_date":"2026-09-18","expiry_label":"Sep 18, 2026","first_15min_share_pct":7.5,"session_volume_millions":38.6}],"shape":"series","sql":"SELECT\n    toString(d)                                  AS session_date,\n    formatDateTime(d, '%b %e, %Y')               AS expiry_label,\n    round(100 * toFloat64(sumIf(volume, minute_of_day < 585))\n              / toFloat64(sum(volume)), 1)       AS first_15min_share_pct,\n    round(toFloat64(sum(volume)) / 1e6, 1)       AS session_volume_millions\nFROM\n(\n    SELECT\n        toDate(toTimeZone(window_start, 'America/New_York'))         AS d,\n        toHour(toTimeZone(window_start, 'America/New_York')) * 60\n            + toMinute(toTimeZone(window_start, 'America/New_York')) AS minute_of_day,\n        volume\n    FROM global_markets.delayed_stocks_minute_aggs\n    WHERE ticker = 'QQQ'\n      AND window_start >= today() - 400\n      AND window_start <  today() - 1\n)\nWHERE minute_of_day >= 570\n  AND minute_of_day <  960\n  AND toDayOfWeek(d) = 5\n  AND toDayOfMonth(d) BETWEEN 15 AND 21\nGROUP BY d\nORDER BY d","computed_at":"2026-10-02T14:54:59.108746+00:00","elapsed":0.256987012}