{"slug":"what-is-triple-witching","qid":"closing_auction","label":"The closing-cross window (3:59-4:00 p.m. ET): dollar volume on witching day vs. a typical June 2026 session","post_title":"What Is Triple Witching? Volume & Volatility","post_url":"/blog/what-is-triple-witching#q-closing_auction","columns":["witching_close_dollars_b","other_june_median_close_dollars_b","times_median","witching_close_pct_of_day","other_june_median_close_pct_of_day"],"rows":[{"witching_close_dollars_b":56.1,"other_june_median_close_dollars_b":36.1,"times_median":1.56,"witching_close_pct_of_day":4.9,"other_june_median_close_pct_of_day":3.7}],"shape":"scalar","sql":"WITH sessions AS (\n    SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS day,\n           sumIf(toFloat64(close) * toFloat64(volume),\n                 toHour(toTimeZone(window_start, 'America/New_York')) = 16\n                 OR (toHour(toTimeZone(window_start, 'America/New_York')) = 15\n                     AND toMinute(toTimeZone(window_start, 'America/New_York')) = 59)) AS close_dollars,\n           sum(toFloat64(close) * toFloat64(volume)) AS day_dollars\n    FROM global_markets.delayed_stocks_minute_aggs\n    WHERE window_start >= '2026-06-01 04:00:00'\n      AND window_start < '2026-07-01 04:00:00'\n      AND toHour(toTimeZone(window_start, 'America/New_York')) >= 9\n      AND toHour(toTimeZone(window_start, 'America/New_York')) <= 16\n      AND NOT (toHour(toTimeZone(window_start, 'America/New_York')) = 9\n               AND toMinute(toTimeZone(window_start, 'America/New_York')) < 30)\n      AND NOT (toHour(toTimeZone(window_start, 'America/New_York')) = 16\n               AND toMinute(toTimeZone(window_start, 'America/New_York')) > 0)\n    GROUP BY day\n)\nSELECT round(anyIf(close_dollars, day = '2026-06-18') / 1e9, 1) AS witching_close_dollars_b,\n       round(quantileDeterministicIf(0.5)(close_dollars, cityHash64(toString(day)), day != '2026-06-18') / 1e9, 1) AS other_june_median_close_dollars_b,\n       round(anyIf(close_dollars, day = '2026-06-18')\n             / quantileDeterministicIf(0.5)(close_dollars, cityHash64(toString(day)), day != '2026-06-18'), 2) AS times_median,\n       round(anyIf(close_dollars / day_dollars, day = '2026-06-18') * 100, 1) AS witching_close_pct_of_day,\n       round(quantileDeterministicIf(0.5)(close_dollars / day_dollars, cityHash64(toString(day)), day != '2026-06-18') * 100, 1) AS other_june_median_close_pct_of_day\nFROM sessions\nHAVING countIf(day != '2026-06-18') > 0","computed_at":"2026-08-10T14:15:56.905132+00:00","elapsed":0.004504367}