{"slug":"when-do-ndx-options-expire","qid":"expiry_friday_clock","label":"expiry_friday_clock","post_title":"when-do-ndx-options-expire","post_url":"/blog/when-do-ndx-options-expire#q-expiry_friday_clock","columns":["et_time","expiry_friday_millions","ordinary_friday_millions"],"rows":[{"et_time":"09:00","expiry_friday_millions":4.5,"ordinary_friday_millions":3.9},{"et_time":"10:00","expiry_friday_millions":5.8,"ordinary_friday_millions":4.8},{"et_time":"11:00","expiry_friday_millions":6.5,"ordinary_friday_millions":2.7},{"et_time":"12:00","expiry_friday_millions":3.8,"ordinary_friday_millions":1.8},{"et_time":"13:00","expiry_friday_millions":3,"ordinary_friday_millions":1.9},{"et_time":"14:00","expiry_friday_millions":4.1,"ordinary_friday_millions":2.2},{"et_time":"15:00","expiry_friday_millions":10.9,"ordinary_friday_millions":4.7}],"shape":"series","sql":"SELECT\n    formatDateTime(toStartOfHour(toTimeZone(window_start, 'America/New_York')), '%H:00') AS et_time,\n    round(toFloat64(sumIf(volume, is_expiry = 1)) / 1e6, 1) AS expiry_friday_millions,\n    round(toFloat64(sumIf(volume, is_expiry = 0)) / 1e6, 1) AS ordinary_friday_millions\nFROM\n(\n    SELECT\n        window_start,\n        volume,\n        toDate(toTimeZone(window_start, 'America/New_York')) = toDate('2026-09-18') AS is_expiry,\n        toHour(toTimeZone(window_start, 'America/New_York')) * 60\n            + toMinute(toTimeZone(window_start, 'America/New_York')) AS minute_of_day\n    FROM global_markets.delayed_stocks_minute_aggs\n    WHERE ticker = 'QQQ'\n      AND window_start >= toDateTime('2026-09-11 00:00:00')\n      AND window_start <  toDateTime('2026-09-19 05:00:00')\n      AND toDate(toTimeZone(window_start, 'America/New_York')) IN (toDate('2026-09-11'), toDate('2026-09-18'))\n)\nWHERE minute_of_day >= 570\n  AND minute_of_day <  960\nGROUP BY et_time\nORDER BY et_time","computed_at":"2026-10-02T14:54:59.200063+00:00","elapsed":0.00328588}