{"slug":"us-market-volume-by-hour-lagos-time","qid":"dst_shift","label":"dst_shift","post_title":"us-market-volume-by-hour-lagos-time","post_url":"/blog/lang/pcm/us-market-volume-by-hour-lagos-time#q-dst_shift","columns":["month","month_label","busiest_30min_wat","busiest_30min_et","lagos_minus_ny_hours"],"rows":[{"month":"2025-12","month_label":"Dec 2025","busiest_30min_wat":"22:00","busiest_30min_et":"16:00","lagos_minus_ny_hours":6},{"month":"2026-01","month_label":"Jan 2026","busiest_30min_wat":"21:30","busiest_30min_et":"15:30","lagos_minus_ny_hours":6},{"month":"2026-02","month_label":"Feb 2026","busiest_30min_wat":"21:30","busiest_30min_et":"15:30","lagos_minus_ny_hours":6},{"month":"2026-03","month_label":"Mar 2026","busiest_30min_wat":"20:30","busiest_30min_et":"15:30","lagos_minus_ny_hours":5},{"month":"2026-04","month_label":"Apr 2026","busiest_30min_wat":"20:30","busiest_30min_et":"15:30","lagos_minus_ny_hours":5},{"month":"2026-05","month_label":"May 2026","busiest_30min_wat":"20:30","busiest_30min_et":"15:30","lagos_minus_ny_hours":5},{"month":"2026-06","month_label":"Jun 2026","busiest_30min_wat":"20:30","busiest_30min_et":"15:30","lagos_minus_ny_hours":5},{"month":"2026-07","month_label":"Jul 2026","busiest_30min_wat":"20:30","busiest_30min_et":"15:30","lagos_minus_ny_hours":5},{"month":"2026-08","month_label":"Aug 2026","busiest_30min_wat":"20:30","busiest_30min_et":"15:30","lagos_minus_ny_hours":5},{"month":"2026-09","month_label":"Sep 2026","busiest_30min_wat":"20:30","busiest_30min_et":"15:30","lagos_minus_ny_hours":5}],"shape":"series","sql":"WITH buckets AS\n(\n    SELECT\n        toStartOfInterval(window_start, INTERVAL 30 MINUTE) AS bucket,\n        sum(volume)                                         AS bucket_volume\n    FROM global_markets.delayed_stocks_minute_aggs\n    WHERE ticker = 'SPY'\n      AND window_start >= '2025-12-01 00:00:00'\n      AND window_start <  '2026-10-01 00:00:00'\n    GROUP BY bucket\n),\nmonthly AS\n(\n    SELECT\n        toStartOfMonth(bucket)        AS month_start,\n        argMax(bucket, bucket_volume) AS top_bucket,\n        max(bucket_volume)            AS top_volume\n    FROM buckets\n    GROUP BY month_start\n)\nSELECT\n    formatDateTime(month_start, '%Y-%m')                                AS month,\n    formatDateTime(month_start, '%b %Y')                                AS month_label,\n    formatDateTime(toTimeZone(top_bucket, 'Africa/Lagos'), '%H:%i')     AS busiest_30min_wat,\n    formatDateTime(toTimeZone(top_bucket, 'America/New_York'), '%H:%i') AS busiest_30min_et,\n    modulo(toHour(toTimeZone(top_bucket, 'Africa/Lagos'))\n         - toHour(toTimeZone(top_bucket, 'America/New_York')) + 24, 24) AS lagos_minus_ny_hours\nFROM monthly\nORDER BY month_start","computed_at":"2026-10-16T15:23:16.465770+00:00","elapsed":0.003385821}