{"slug":"why-trading-volume-dies-at-midday","qid":"by_ticker","label":"Open, midday and close volume against an average session minute","post_title":"Why Trading Volume Dies at Midday: U-Shape","post_url":"/blog/why-trading-volume-dies-at-midday#q-by_ticker","columns":["ticker","open30_index","midday_index","close30_index"],"rows":[{"ticker":"KO","open30_index":1.93,"midday_index":0.65,"close30_index":2.58},{"ticker":"SPY","open30_index":1.57,"midday_index":0.7,"close30_index":2.38},{"ticker":"MSFT","open30_index":2.31,"midday_index":0.68,"close30_index":1.98},{"ticker":"AAPL","open30_index":2.31,"midday_index":0.7,"close30_index":1.88},{"ticker":"QQQ","open30_index":1.87,"midday_index":0.75,"close30_index":1.71},{"ticker":"NVDA","open30_index":2.34,"midday_index":0.72,"close30_index":1.38}],"shape":"ranking","sql":"WITH session_minutes AS\n(\n    SELECT\n        ticker,\n        toHour(toTimeZone(window_start, 'America/New_York')) * 60\n          + toMinute(toTimeZone(window_start, 'America/New_York'))     AS et_minute,\n        toFloat64(volume)                                              AS share_volume\n    FROM global_markets.delayed_stocks_minute_aggs\n    WHERE ticker IN ('SPY', 'QQQ', 'AAPL', 'MSFT', 'NVDA', 'KO')\n      AND window_start >= '2025-01-02 00:00:00'\n      AND window_start <  '2026-07-01 00:00:00'\n)\nSELECT\n    ticker                                                             AS ticker,\n    round((sumIf(share_volume, et_minute >= 570 AND et_minute < 600)\n           / countIf(et_minute >= 570 AND et_minute < 600))\n          / (sum(share_volume) / count()), 2)                          AS open30_index,\n    round((sumIf(share_volume, et_minute >= 690 AND et_minute < 840)\n           / countIf(et_minute >= 690 AND et_minute < 840))\n          / (sum(share_volume) / count()), 2)                          AS midday_index,\n    round((sumIf(share_volume, et_minute >= 930 AND et_minute < 960)\n           / countIf(et_minute >= 930 AND et_minute < 960))\n          / (sum(share_volume) / count()), 2)                          AS close30_index\nFROM session_minutes\nWHERE et_minute >= 570 AND et_minute < 960\nGROUP BY ticker\nHAVING countIf(et_minute >= 570 AND et_minute < 600) > 0\n   AND countIf(et_minute >= 690 AND et_minute < 840) > 0\n   AND countIf(et_minute >= 930 AND et_minute < 960) > 0\nORDER BY close30_index DESC","computed_at":"2026-08-10T14:42:48.451297+00:00","elapsed":0.003940337}