{"slug":"why-stock-quotes-are-delayed-15-minutes","qid":"update_frequency","label":"How often the last price changes, minute by minute (June 2026)","post_title":"Why Stock Quotes Are Delayed 15 Minutes","post_url":"/blog/why-stock-quotes-are-delayed-15-minutes#q-update_frequency","columns":["ticker","minutes_price_moved_pct","median_move_bps"],"rows":[{"ticker":"AMD","minutes_price_moved_pct":99.8,"median_move_bps":9.6},{"ticker":"MSFT","minutes_price_moved_pct":99.3,"median_move_bps":4},{"ticker":"AAPL","minutes_price_moved_pct":98.7,"median_move_bps":3.8},{"ticker":"NVDA","minutes_price_moved_pct":98.7,"median_move_bps":5.3},{"ticker":"SPY","minutes_price_moved_pct":98.5,"median_move_bps":1.9},{"ticker":"KO","minutes_price_moved_pct":94.1,"median_move_bps":2.5}],"shape":"ranking","sql":"WITH regular_bars AS\n(\n    SELECT\n        ticker,\n        toDate(toTimeZone(window_start, 'America/New_York')) AS session_date,\n        toTimeZone(window_start, 'America/New_York')         AS et,\n        toFloat64(close)                                     AS px\n    FROM global_markets.delayed_stocks_minute_aggs\n    WHERE ticker IN ('SPY', 'KO', 'AAPL', 'MSFT', 'NVDA', 'AMD')\n      AND close > 0\n      AND window_start >= '2026-06-01 00:00:00'\n      AND window_start <  '2026-07-01 00:00:00'\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),\nstepped AS\n(\n    SELECT\n        ticker,\n        et,\n        px,\n        lagInFrame(px) OVER (PARTITION BY ticker, session_date ORDER BY et\n                             ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS prev_px\n    FROM regular_bars\n)\nSELECT\n    ticker,\n    round(100 * countIf(px != prev_px) / count(), 1)                                                       AS minutes_price_moved_pct,\n    round(quantileDeterministic(0.5)(abs(px / prev_px - 1) * 10000, toUInt64(toUnixTimestamp(et))), 1)      AS median_move_bps\nFROM stepped\nWHERE prev_px > 0\nGROUP BY ticker\nHAVING count() > 0\nORDER BY minutes_price_moved_pct DESC","computed_at":"2026-08-06T15:16:28.311713+00:00","elapsed":0.003464928}