{"slug":"after-hours-trading-on-holidays-and-weekends","qid":"weekday_tape","label":"weekday_tape","post_title":"after-hours-trading-on-holidays-and-weekends","post_url":"/blog/after-hours-trading-on-holidays-and-weekends#q-weekday_tape","columns":["weekday","avg_minute_bars","days_with_any_trading","days_counted"],"rows":[{"weekday":"Mon","avg_minute_bars":783.2,"days_with_any_trading":15,"days_counted":17},{"weekday":"Tue","avg_minute_bars":895.6,"days_with_any_trading":18,"days_counted":18},{"weekday":"Wed","avg_minute_bars":900.8,"days_with_any_trading":18,"days_counted":18},{"weekday":"Thu","avg_minute_bars":894.8,"days_with_any_trading":18,"days_counted":18},{"weekday":"Fri","avg_minute_bars":782.6,"days_with_any_trading":16,"days_counted":18},{"weekday":"Sat","avg_minute_bars":0,"days_with_any_trading":0,"days_counted":18},{"weekday":"Sun","avg_minute_bars":0,"days_with_any_trading":0,"days_counted":17}],"shape":"series","sql":"SELECT\n    formatDateTime(cal.day, '%a')      AS weekday,\n    round(avg(ifNull(t.bars, 0)), 1)   AS avg_minute_bars,\n    countIf(ifNull(t.bars, 0) > 0)     AS days_with_any_trading,\n    count()                            AS days_counted\nFROM\n(\n    SELECT today() - 126 + arrayJoin(range(126)) AS day\n) AS cal\nLEFT JOIN\n(\n    SELECT\n        toDate(toTimeZone(window_start, 'America/New_York')) AS d,\n        count()                                              AS bars\n    FROM global_markets.delayed_stocks_minute_aggs\n    WHERE ticker = 'SPY'\n      AND window_start >= today() - 130\n    GROUP BY d\n) AS t ON t.d = cal.day\nWHERE cal.day <= today() - 3\nGROUP BY weekday, toDayOfWeek(cal.day)\nORDER BY toDayOfWeek(cal.day)","computed_at":"2026-09-22T15:21:08.557229+00:00","elapsed":0.28616032}