{"slug":"after-hours-and-premarket-trading","qid":"session_volume_split","label":"Share of a month's volume by clock window: SPY, AAPL, NVDA (full sessions only)","post_title":"Premarket and After-Hours Trading Hours (ET)","post_url":"/blog/after-hours-and-premarket-trading#q-session_volume_split","columns":["ticker","premarket_pct","regular_pct","post_close_30min_pct","evening_pct"],"rows":[{"ticker":"SPY","premarket_pct":5.1,"regular_pct":82.3,"post_close_30min_pct":10.9,"evening_pct":1.7},{"ticker":"AAPL","premarket_pct":6.7,"regular_pct":86.9,"post_close_30min_pct":3.8,"evening_pct":2.6},{"ticker":"NVDA","premarket_pct":5.3,"regular_pct":91.2,"post_close_30min_pct":2.2,"evening_pct":1.4}],"shape":"table","sql":"WITH full_sessions AS (\n    SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS session_date\n    FROM global_markets.delayed_stocks_minute_aggs\n    WHERE ticker = 'SPY'\n      AND window_start >= now() - INTERVAL 30 DAY\n      AND toDate(toTimeZone(window_start, 'America/New_York')) < toDate(toTimeZone(now(), 'America/New_York'))\n    GROUP BY session_date\n    HAVING max(toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) >= 1140\n)\nSELECT ticker,\n       round(100 * sumIf(volume, m < 570) / sum(volume), 1) AS premarket_pct,\n       round(100 * sumIf(volume, m >= 570 AND m < 960) / sum(volume), 1) AS regular_pct,\n       round(100 * sumIf(volume, m >= 960 AND m < 990) / sum(volume), 1) AS post_close_30min_pct,\n       round(100 * sumIf(volume, m >= 990) / sum(volume), 1) AS evening_pct\nFROM (\n    SELECT ticker, volume,\n           toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) AS m\n    FROM global_markets.delayed_stocks_minute_aggs\n    WHERE ticker IN ('SPY', 'AAPL', 'NVDA')\n      AND window_start >= now() - INTERVAL 30 DAY\n      AND toDate(toTimeZone(window_start, 'America/New_York')) IN (SELECT session_date FROM full_sessions)\n      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 240 AND 1199\n)\nGROUP BY ticker\nORDER BY indexOf(['SPY', 'AAPL', 'NVDA'], ticker)","computed_at":"2026-08-22T04:00:59.654851+00:00","elapsed":0.243659156}