{"slug":"what-time-do-options-stop-trading","qid":"last_print_by_session","label":"Last SPY and SPX option print, minutes past the 4:00 p.m. equity close","post_title":"What Time Do Options Stop Trading?","post_url":"/blog/what-time-do-options-stop-trading#q-last_print_by_session","columns":["session_date","spy_minutes_after_4pm","spx_minutes_after_4pm","spy_last_print_et"],"rows":[{"session_date":"2026-07-01","spy_minutes_after_4pm":15,"spx_minutes_after_4pm":59,"spy_last_print_et":"16:15"},{"session_date":"2026-07-02","spy_minutes_after_4pm":14,"spx_minutes_after_4pm":59,"spy_last_print_et":"16:14"},{"session_date":"2026-07-06","spy_minutes_after_4pm":14,"spx_minutes_after_4pm":59,"spy_last_print_et":"16:14"},{"session_date":"2026-07-07","spy_minutes_after_4pm":14,"spx_minutes_after_4pm":59,"spy_last_print_et":"16:14"},{"session_date":"2026-07-08","spy_minutes_after_4pm":14,"spx_minutes_after_4pm":59,"spy_last_print_et":"16:14"},{"session_date":"2026-07-09","spy_minutes_after_4pm":14,"spx_minutes_after_4pm":59,"spy_last_print_et":"16:14"},{"session_date":"2026-07-10","spy_minutes_after_4pm":14,"spx_minutes_after_4pm":59,"spy_last_print_et":"16:14"},{"session_date":"2026-07-13","spy_minutes_after_4pm":14,"spx_minutes_after_4pm":59,"spy_last_print_et":"16:14"},{"session_date":"2026-07-14","spy_minutes_after_4pm":14,"spx_minutes_after_4pm":59,"spy_last_print_et":"16:14"},{"session_date":"2026-07-15","spy_minutes_after_4pm":14,"spx_minutes_after_4pm":59,"spy_last_print_et":"16:14"},{"session_date":"2026-07-16","spy_minutes_after_4pm":14,"spx_minutes_after_4pm":59,"spy_last_print_et":"16:14"},{"session_date":"2026-07-17","spy_minutes_after_4pm":56,"spx_minutes_after_4pm":59,"spy_last_print_et":"16:56"}],"shape":"series","sql":"SELECT\n    session_date,\n    spy_last_minute - 960 AS spy_minutes_after_4pm,\n    spx_last_minute - 960 AS spx_minutes_after_4pm,\n    concat(toString(intDiv(spy_last_minute, 60)), ':',\n           leftPad(toString(modulo(spy_last_minute, 60)), 2, '0')) AS spy_last_print_et\nFROM\n(\n    WITH\n        extract(ticker, '^O:([A-Z]+)')                AS root,\n        toTimeZone(sip_timestamp, 'America/New_York') AS et\n    SELECT\n        toString(toDate(et))                                          AS session_date,\n        maxIf(toHour(et) * 60 + toMinute(et), root = 'SPY')            AS spy_last_minute,\n        maxIf(toHour(et) * 60 + toMinute(et), root IN ('SPX', 'SPXW')) AS spx_last_minute\n    FROM global_markets.options_trades\n    WHERE (ticker LIKE 'O:SPY%' OR ticker LIKE 'O:SPX%')\n      AND root IN ('SPY', 'SPX', 'SPXW')\n      AND sip_timestamp >= '2026-07-01 20:00:00'\n      AND sip_timestamp <  '2026-07-17 21:00:00'\n      AND (toHour(et) * 60 + toMinute(et)) BETWEEN 960 AND 1020\n    GROUP BY session_date\n    HAVING countIf(root = 'SPY') > 0\n       AND countIf(root IN ('SPX', 'SPXW')) > 0\n)\nORDER BY session_date","computed_at":"2026-08-16T14:08:28.573593+00:00","elapsed":0.003897839}