{"slug":"what-is-the-nbbo","qid":"nbbo_stream","label":"KO: ten consecutive NBBO updates from 1:30 p.m. ET on a recent session","post_title":"What Is the NBBO? National Best Bid and Offer","post_url":"/blog/what-is-the-nbbo#q-nbbo_stream","columns":["et_time","elapsed_ms","bid_shares","best_bid","best_ask","ask_shares","spread_cents"],"rows":[{"et_time":"13:30:00.057","elapsed_ms":0,"bid_shares":100,"best_bid":88.74,"best_ask":88.75,"ask_shares":300,"spread_cents":1},{"et_time":"13:30:00.057","elapsed_ms":0,"bid_shares":100,"best_bid":88.74,"best_ask":88.75,"ask_shares":400,"spread_cents":1},{"et_time":"13:30:00.057","elapsed_ms":0,"bid_shares":100,"best_bid":88.74,"best_ask":88.75,"ask_shares":400,"spread_cents":1},{"et_time":"13:30:00.057","elapsed_ms":0.03,"bid_shares":100,"best_bid":88.74,"best_ask":88.75,"ask_shares":400,"spread_cents":1},{"et_time":"13:30:00.057","elapsed_ms":0.04,"bid_shares":200,"best_bid":88.74,"best_ask":88.75,"ask_shares":400,"spread_cents":1},{"et_time":"13:30:00.057","elapsed_ms":0.24,"bid_shares":200,"best_bid":88.74,"best_ask":88.75,"ask_shares":300,"spread_cents":1},{"et_time":"13:30:00.057","elapsed_ms":0.33,"bid_shares":200,"best_bid":88.74,"best_ask":88.75,"ask_shares":300,"spread_cents":1},{"et_time":"13:30:00.057","elapsed_ms":0.34,"bid_shares":200,"best_bid":88.74,"best_ask":88.75,"ask_shares":300,"spread_cents":1},{"et_time":"13:30:00.058","elapsed_ms":0.81,"bid_shares":200,"best_bid":88.74,"best_ask":88.75,"ask_shares":400,"spread_cents":1},{"et_time":"13:30:00.058","elapsed_ms":0.83,"bid_shares":200,"best_bid":88.74,"best_ask":88.75,"ask_shares":800,"spread_cents":1}],"shape":"series","sql":"WITH (\n    SELECT max(session_date)\n    FROM (\n        SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS session_date,\n               countIf((toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) AS regular_bars\n        FROM global_markets.delayed_stocks_minute_aggs\n        WHERE ticker = 'SPY'\n          AND window_start >= toDateTime(today() - 10)\n          AND window_start < toDateTime(today() - 3)\n        GROUP BY session_date\n        HAVING regular_bars = 390\n    )\n) AS last_session\nSELECT substring(toString(toTimeZone(sip_timestamp, 'America/New_York')), 12, 12) AS et_time,\n       round((toUnixTimestamp64Nano(sip_timestamp) - min(toUnixTimestamp64Nano(sip_timestamp)) OVER ()) / 1e6, 2) AS elapsed_ms,\n       bid_size AS bid_shares,\n       toFloat64(bid_price) AS best_bid,\n       toFloat64(ask_price) AS best_ask,\n       ask_size AS ask_shares,\n       round((toFloat64(ask_price) - toFloat64(bid_price)) * 100, 1) AS spread_cents\nFROM global_markets.cache_stocks_quotes\nWHERE ticker = 'KO'\n  AND sip_timestamp >= toDateTime(last_session, 'America/New_York') + INTERVAL 13 HOUR + INTERVAL 30 MINUTE\n  AND sip_timestamp < toDateTime(last_session, 'America/New_York') + INTERVAL 14 HOUR\n  AND bid_price > 0\n  AND ask_price > bid_price\nORDER BY sip_timestamp, sequence_number\nLIMIT 10","computed_at":"2026-08-22T04:34:52.783447+00:00","elapsed":0.216305611}