{"slug":"when-do-0dte-options-trade","qid":"weekday","label":"Same-day share of options volume by weekday: all sessions, June 1 to July 10, 2026","post_title":"When Do 0DTE Options Trade? By the Hour","post_url":"/blog/when-do-0dte-options-trade#q-weekday","columns":["dow","weekday","sessions","avg_same_day_contracts_m","same_day_pct_of_volume"],"rows":[{"dow":1,"weekday":"Monday","sessions":6,"avg_same_day_contracts_m":22.91,"same_day_pct_of_volume":34.5},{"dow":2,"weekday":"Tuesday","sessions":6,"avg_same_day_contracts_m":18.92,"same_day_pct_of_volume":29.2},{"dow":3,"weekday":"Wednesday","sessions":6,"avg_same_day_contracts_m":22.72,"same_day_pct_of_volume":34.2},{"dow":4,"weekday":"Thursday","sessions":6,"avg_same_day_contracts_m":24.59,"same_day_pct_of_volume":35.4},{"dow":5,"weekday":"Friday","sessions":4,"avg_same_day_contracts_m":36.1,"same_day_pct_of_volume":46.1}],"shape":"series","sql":"WITH sessions AS (\n    SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS session_date,\n           sumIf(volume, substring(ticker, length(ticker) - 14, 6)\n                         = formatDateTime(toDate(toTimeZone(window_start, 'America/New_York')), '%y%m%d')) AS same_day_vol,\n           sum(volume) AS all_vol\n    FROM global_markets.options_minute_aggs\n    WHERE window_start >= toDateTime64('2026-06-01 13:30:00', 9)\n      AND window_start < toDateTime64('2026-07-10 20:00:00', 9)\n      AND toHour(toTimeZone(window_start, 'America/New_York')) BETWEEN 9 AND 15\n    GROUP BY session_date\n)\nSELECT toDayOfWeek(session_date) AS dow,\n       formatDateTime(session_date, '%W') AS weekday,\n       count() AS sessions,\n       round(avg(same_day_vol) / 1e6, 2) AS avg_same_day_contracts_m,\n       round(100.0 * sum(same_day_vol) / sum(all_vol), 1) AS same_day_pct_of_volume\nFROM sessions\nGROUP BY dow, weekday\nORDER BY dow","computed_at":"2026-08-13T14:43:39.010465+00:00","elapsed":0.002928114}