STRASMORE/EXPLORE 2,948 QUERIES

canada_holiday_sessions

Answered against 22 years of US equities and 12 years of US options data and published with the query that produced it. This result is stored as of 2026-10-02, from canada-after-hours-trading.

as of series 5×3read in context →
canada_holiday_sessions — 5 rows by 3 columns, computed from US exchange, SIP and OPRA data.
labelbasket_volume_millionspct_of_typical_session
Thanksgiving CA, Oct 13 202522.766
Boxing Day, Dec 26 20259.829
Victoria Day, May 18 202626.277
Canada Day, Jul 1 202621.663
Civic Holiday, Aug 3 202624.572
Rows × columns
5 × 3
Computed
Completeness
No missing values
Source
US exchange, SIP and OPRA market data
Licence
Strasmore terms · free, no signup
Formats
JSON · CSV · the SQL below

What each column holds

Column definitions for canada_holiday_sessions, derived from the stored result.
ColumnTypeRangeNotes
label text 5 distinct values
basket_volume_millions number 9.8 to 26.2 count
pct_of_typical_session number 29 to 77 percent

Computed from Strasmore's warehouse of US exchange, SIP and OPRA market data. Equity prices are delayed; options greeks and implied volatility are end-of-day. This result is stored, not recomputed on load — it is exactly the numbers that were returned on , and the query below is what returned them.

Run it yourself

This is the exact query behind the result above. Change a ticker, a date or a column and run it against the warehouse — no account, no key. The no-signup tier is smaller than the one this page was computed on; a query that reaches past it comes back saying which plan runs it.

SELECT
    h.label                                         AS label,
    round(h.day_volume / 1e6, 1)                    AS basket_volume_millions,
    round(100 * h.day_volume / b.typical_volume, 0) AS pct_of_typical_session
FROM
(
    SELECT
        toDate(toTimeZone(window_start, 'America/New_York')) AS d,
        multiIf(d = toDate('2025-10-13'), 'Thanksgiving CA, Oct 13 2025',
                d = toDate('2025-12-26'), 'Boxing Day, Dec 26 2025',
                d = toDate('2026-05-18'), 'Victoria Day, May 18 2026',
                d = toDate('2026-07-01'), 'Canada Day, Jul 1 2026',
                                          'Civic Holiday, Aug 3 2026') AS label,
        sum(toFloat64(volume))                                         AS day_volume
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('RY', 'TD', 'BNS', 'BMO', 'ENB', 'TRP', 'CNQ', 'SU', 'CP', 'CNI', 'SHOP', 'MFC', 'AEM')
      AND window_start >= '2025-10-12 00:00:00'
      AND window_start <  '2026-08-05 00:00:00'
      AND toDate(toTimeZone(window_start, 'America/New_York')) IN
          (toDate('2025-10-13'), toDate('2025-12-26'), toDate('2026-05-18'), toDate('2026-07-01'), toDate('2026-08-03'))
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
           + toMinute(toTimeZone(window_start, 'America/New_York'))) >= 570
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
           + toMinute(toTimeZone(window_start, 'America/New_York'))) < 960
    GROUP BY d, label
) AS h
CROSS JOIN
(
    SELECT quantileDeterministic(0.5)(dv, dk) AS typical_volume
    FROM
    (
        SELECT
            toDate(toTimeZone(window_start, 'America/New_York'))           AS d2,
            toUInt32(toYYYYMMDD(toDate(toTimeZone(window_start, 'America/New_York')))) AS dk,
            sum(toFloat64(volume))                                         AS dv
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker IN ('RY', 'TD', 'BNS', 'BMO', 'ENB', 'TRP', 'CNQ', 'SU', 'CP', 'CNI', 'SHOP', 'MFC', 'AEM')
          AND window_start >= today() - 400
          AND window_start <  today() - 1
          AND toDate(toTimeZone(window_start, 'America/New_York')) NOT IN
              (toDate('2025-10-13'), toDate('2025-12-26'), toDate('2026-05-18'), toDate('2026-07-01'), toDate('2026-08-03'))
          AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
               + toMinute(toTimeZone(window_start, 'America/New_York'))) >= 570
          AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
               + toMinute(toTimeZone(window_start, 'America/New_York'))) < 960
        GROUP BY d2, dk
        HAVING dv > 0
    )
) AS b
ORDER BY h.d
⌘/Ctrl + Enter

Work with this data in your AI assistant

Opens ready to query, with this page's data. Free, no account.

More from this analysiscanada-after-hours-trading
post_close_curve series 16×4 → upcoming_us_closures series 12×6 → interlisted_after_hours_share ranking 13×3 → The 2s10s spread by month, full history series 604×5 → One SPY $600 LEAPS call's price over two years (expired Jan 16 2026) series 470×2 → The 5s30s spread month by month, with both legs series 241×4 → See all 2,948 queries →