{"slug":"how-ohlcv-bars-are-built","qid":"minute_coverage","label":"How many of the 390 session minutes each US symbol traded in","post_title":"How OHLCV Bars Are Built From Ticks","post_url":"/blog/how-ohlcv-bars-are-built#q-minute_coverage","columns":["minutes_traded_bucket","stock_count"],"rows":[{"minutes_traded_bucket":"1-39","stock_count":4677},{"minutes_traded_bucket":"40-78","stock_count":1155},{"minutes_traded_bucket":"79-117","stock_count":747},{"minutes_traded_bucket":"118-156","stock_count":602},{"minutes_traded_bucket":"157-195","stock_count":475},{"minutes_traded_bucket":"196-234","stock_count":470},{"minutes_traded_bucket":"235-273","stock_count":476},{"minutes_traded_bucket":"274-312","stock_count":518},{"minutes_traded_bucket":"313-351","stock_count":644},{"minutes_traded_bucket":"352-390","stock_count":2020}],"shape":"ranking","sql":"WITH per_symbol AS\n(\n    SELECT\n        ticker,\n        count() AS populated_minutes\n    FROM global_markets.delayed_stocks_minute_aggs\n    WHERE window_start >= '2026-06-10 00:00:00'\n      AND window_start <  '2026-06-11 06:00:00'\n      AND toDate(toTimeZone(window_start, 'America/New_York')) = '2026-06-10'\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 ticker\n)\nSELECT\n    multiIf(\n        populated_minutes <=  39, '1-39',\n        populated_minutes <=  78, '40-78',\n        populated_minutes <= 117, '79-117',\n        populated_minutes <= 156, '118-156',\n        populated_minutes <= 195, '157-195',\n        populated_minutes <= 234, '196-234',\n        populated_minutes <= 273, '235-273',\n        populated_minutes <= 312, '274-312',\n        populated_minutes <= 351, '313-351',\n                                  '352-390') AS minutes_traded_bucket,\n    count()                                  AS stock_count\nFROM per_symbol\nGROUP BY minutes_traded_bucket\nORDER BY min(populated_minutes)","computed_at":"2026-08-08T15:20:36.476937+00:00","elapsed":0.003330326}