{"slug":"what-time-do-options-start-trading","qid":"spy_open_ramp","label":"spy_open_ramp","post_title":"what-time-do-options-start-trading","post_url":"/blog/what-time-do-options-start-trading#q-spy_open_ramp","columns":["et_time","contract_volume","active_pct"],"rows":[{"et_time":"09:15","contract_volume":0,"active_pct":0},{"et_time":"09:16","contract_volume":0,"active_pct":0},{"et_time":"09:17","contract_volume":0,"active_pct":0},{"et_time":"09:18","contract_volume":0,"active_pct":0},{"et_time":"09:19","contract_volume":0,"active_pct":0},{"et_time":"09:20","contract_volume":0,"active_pct":0},{"et_time":"09:21","contract_volume":0,"active_pct":0},{"et_time":"09:22","contract_volume":0,"active_pct":0},{"et_time":"09:23","contract_volume":0,"active_pct":0},{"et_time":"09:24","contract_volume":0,"active_pct":0},{"et_time":"09:25","contract_volume":0,"active_pct":0},{"et_time":"09:26","contract_volume":0,"active_pct":0},{"et_time":"09:27","contract_volume":0,"active_pct":0},{"et_time":"09:28","contract_volume":0,"active_pct":0},{"et_time":"09:29","contract_volume":0,"active_pct":0},{"et_time":"09:30","contract_volume":79450,"active_pct":100},{"et_time":"09:31","contract_volume":7850,"active_pct":100},{"et_time":"09:32","contract_volume":26796,"active_pct":100},{"et_time":"09:33","contract_volume":45414,"active_pct":100},{"et_time":"09:34","contract_volume":15329,"active_pct":100},{"et_time":"09:35","contract_volume":49108,"active_pct":100},{"et_time":"09:36","contract_volume":18352,"active_pct":100},{"et_time":"09:37","contract_volume":31470,"active_pct":100},{"et_time":"09:38","contract_volume":20996,"active_pct":100},{"et_time":"09:39","contract_volume":36490,"active_pct":100},{"et_time":"09:40","contract_volume":42035,"active_pct":100},{"et_time":"09:41","contract_volume":21718,"active_pct":100},{"et_time":"09:42","contract_volume":28877,"active_pct":100},{"et_time":"09:43","contract_volume":39642,"active_pct":100},{"et_time":"09:44","contract_volume":35376,"active_pct":100},{"et_time":"09:45","contract_volume":41167,"active_pct":100},{"et_time":"09:46","contract_volume":40783,"active_pct":100},{"et_time":"09:47","contract_volume":54856,"active_pct":100},{"et_time":"09:48","contract_volume":29440,"active_pct":100},{"et_time":"09:49","contract_volume":51570,"active_pct":100},{"et_time":"09:50","contract_volume":28752,"active_pct":100},{"et_time":"09:51","contract_volume":29558,"active_pct":100},{"et_time":"09:52","contract_volume":31180,"active_pct":100},{"et_time":"09:53","contract_volume":21258,"active_pct":100},{"et_time":"09:54","contract_volume":20868,"active_pct":100},{"et_time":"09:55","contract_volume":22009,"active_pct":100},{"et_time":"09:56","contract_volume":34339,"active_pct":100},{"et_time":"09:57","contract_volume":18496,"active_pct":100},{"et_time":"09:58","contract_volume":25615,"active_pct":100},{"et_time":"09:59","contract_volume":27794,"active_pct":100},{"et_time":"10:00","contract_volume":35862,"active_pct":100}],"shape":"series","sql":"WITH tape AS\n(\n    SELECT\n        toHour(toTimeZone(window_start, 'America/New_York')) * 60\n      + toMinute(toTimeZone(window_start, 'America/New_York'))              AS minute_of_day,\n        countDistinct(toDate(toTimeZone(window_start, 'America/New_York'))) AS days_traded,\n        sum(volume)                                                         AS contracts\n    FROM global_markets.options_minute_aggs\n    WHERE startsWith(ticker, 'O:SPY')\n      AND length(ticker) = 20\n      AND window_start >= today() - 12\n      AND window_start <  today() - 2\n    GROUP BY minute_of_day\n)\nSELECT\n    formatDateTime(toDateTime('2026-01-01 00:00:00') + grid.minute_of_day * 60, '%H:%i')         AS et_time,\n    toUInt64(round(ifNull(t.contracts, 0) / greatest((SELECT max(days_traded) FROM tape), 1)))   AS contract_volume,\n    round(100 * ifNull(t.days_traded, 0) / greatest((SELECT max(days_traded) FROM tape), 1), 1)  AS active_pct\nFROM\n(\n    SELECT 555 + arrayJoin(range(46)) AS minute_of_day\n) AS grid\nLEFT JOIN tape AS t ON t.minute_of_day = grid.minute_of_day\nORDER BY grid.minute_of_day","computed_at":"2026-08-26T14:34:48.094373+00:00","elapsed":0.286710664}