{"slug":"canada-after-hours-trading","qid":"canada_holiday_sessions","label":"canada_holiday_sessions","post_title":"canada-after-hours-trading","post_url":"/blog/canada-after-hours-trading#q-canada_holiday_sessions","columns":["label","basket_volume_millions","pct_of_typical_session"],"rows":[{"label":"Thanksgiving CA, Oct 13 2025","basket_volume_millions":22.7,"pct_of_typical_session":66},{"label":"Boxing Day, Dec 26 2025","basket_volume_millions":9.8,"pct_of_typical_session":29},{"label":"Victoria Day, May 18 2026","basket_volume_millions":26.2,"pct_of_typical_session":77},{"label":"Canada Day, Jul 1 2026","basket_volume_millions":21.6,"pct_of_typical_session":63},{"label":"Civic Holiday, Aug 3 2026","basket_volume_millions":24.5,"pct_of_typical_session":72}],"shape":"series","sql":"SELECT\n    h.label                                         AS label,\n    round(h.day_volume / 1e6, 1)                    AS basket_volume_millions,\n    round(100 * h.day_volume / b.typical_volume, 0) AS pct_of_typical_session\nFROM\n(\n    SELECT\n        toDate(toTimeZone(window_start, 'America/New_York')) AS d,\n        multiIf(d = toDate('2025-10-13'), 'Thanksgiving CA, Oct 13 2025',\n                d = toDate('2025-12-26'), 'Boxing Day, Dec 26 2025',\n                d = toDate('2026-05-18'), 'Victoria Day, May 18 2026',\n                d = toDate('2026-07-01'), 'Canada Day, Jul 1 2026',\n                                          'Civic Holiday, Aug 3 2026') AS label,\n        sum(toFloat64(volume))                                         AS day_volume\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 >= '2025-10-12 00:00:00'\n      AND window_start <  '2026-08-05 00:00:00'\n      AND toDate(toTimeZone(window_start, 'America/New_York')) IN\n          (toDate('2025-10-13'), toDate('2025-12-26'), toDate('2026-05-18'), toDate('2026-07-01'), toDate('2026-08-03'))\n      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60\n           + toMinute(toTimeZone(window_start, 'America/New_York'))) >= 570\n      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60\n           + toMinute(toTimeZone(window_start, 'America/New_York'))) < 960\n    GROUP BY d, label\n) AS h\nCROSS JOIN\n(\n    SELECT quantileDeterministic(0.5)(dv, dk) AS typical_volume\n    FROM\n    (\n        SELECT\n            toDate(toTimeZone(window_start, 'America/New_York'))           AS d2,\n            toUInt32(toYYYYMMDD(toDate(toTimeZone(window_start, 'America/New_York')))) AS dk,\n            sum(toFloat64(volume))                                         AS dv\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() - 400\n          AND window_start <  today() - 1\n          AND toDate(toTimeZone(window_start, 'America/New_York')) NOT IN\n              (toDate('2025-10-13'), toDate('2025-12-26'), toDate('2026-05-18'), toDate('2026-07-01'), toDate('2026-08-03'))\n          AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60\n               + toMinute(toTimeZone(window_start, 'America/New_York'))) >= 570\n          AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60\n               + toMinute(toTimeZone(window_start, 'America/New_York'))) < 960\n        GROUP BY d2, dk\n        HAVING dv > 0\n    )\n) AS b\nORDER BY h.d","computed_at":"2026-10-02T15:41:22.847069+00:00","elapsed":5.765370751}