{"slug":"canada-after-hours-trading","qid":"post_close_curve","label":"post_close_curve","post_title":"canada-after-hours-trading","post_url":"/blog/canada-after-hours-trading#q-post_close_curve","columns":["et_time","volume_millions","pct_of_post_close","cumulative_pct"],"rows":[{"et_time":"16:00","volume_millions":11.61,"pct_of_post_close":54.51,"cumulative_pct":54.5},{"et_time":"16:15","volume_millions":0.82,"pct_of_post_close":3.84,"cumulative_pct":58.3},{"et_time":"16:30","volume_millions":1.06,"pct_of_post_close":4.98,"cumulative_pct":63.3},{"et_time":"16:45","volume_millions":2.17,"pct_of_post_close":10.18,"cumulative_pct":73.5},{"et_time":"17:00","volume_millions":3.4,"pct_of_post_close":15.98,"cumulative_pct":89.5},{"et_time":"17:15","volume_millions":1.37,"pct_of_post_close":6.45,"cumulative_pct":95.9},{"et_time":"17:30","volume_millions":0.13,"pct_of_post_close":0.6,"cumulative_pct":96.5},{"et_time":"17:45","volume_millions":0.13,"pct_of_post_close":0.63,"cumulative_pct":97.2},{"et_time":"18:00","volume_millions":0.08,"pct_of_post_close":0.38,"cumulative_pct":97.5},{"et_time":"18:15","volume_millions":0.06,"pct_of_post_close":0.27,"cumulative_pct":97.8},{"et_time":"18:30","volume_millions":0.09,"pct_of_post_close":0.4,"cumulative_pct":98.2},{"et_time":"18:45","volume_millions":0.06,"pct_of_post_close":0.26,"cumulative_pct":98.5},{"et_time":"19:00","volume_millions":0.05,"pct_of_post_close":0.25,"cumulative_pct":98.7},{"et_time":"19:15","volume_millions":0.08,"pct_of_post_close":0.4,"cumulative_pct":99.1},{"et_time":"19:30","volume_millions":0.09,"pct_of_post_close":0.44,"cumulative_pct":99.6},{"et_time":"19:45","volume_millions":0.09,"pct_of_post_close":0.44,"cumulative_pct":100}],"shape":"series","sql":"SELECT\n    et_time,\n    round(vol / 1e6, 2)                    AS volume_millions,\n    round(100 * vol / sum(vol) OVER (), 2) AS pct_of_post_close,\n    round(100 * sum(vol) OVER (ORDER BY et_time ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)\n              / sum(vol) OVER (), 1)       AS cumulative_pct\nFROM\n(\n    SELECT\n        formatDateTime(toStartOfInterval(toTimeZone(window_start, 'America/New_York'), INTERVAL 15 minute), '%H:%i') AS et_time,\n        sum(toFloat64(volume)) AS vol\n    FROM global_markets.delayed_stocks_minute_aggs\n    WHERE ticker IN ('RY', 'TD', 'BNS', 'BMO', 'ENB', 'TRP', 'CNQ', 'SU', 'CP', 'CNI', 'SHOP', 'MFC', 'AEM')\n      AND window_start >= today() - 60\n      AND window_start <  today() - 1\n      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60\n           + toMinute(toTimeZone(window_start, 'America/New_York'))) >= 960\n      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60\n           + toMinute(toTimeZone(window_start, 'America/New_York'))) < 1200\n    GROUP BY et_time\n)\nORDER BY et_time","computed_at":"2026-10-02T15:41:16.141898+00:00","elapsed":0.695500807}