Strasmore Research
學習 Matt Connor作者: Matt Connor · 更新於 2026-07-25 · data as of July 25, 2026 · refreshed weekly

NBBO是什麼?

NBBO是跨交易所整合的最佳買賣價,券商必須以此為基準執行訂單。本文以可口可樂真實報價記錄,解析其更新速度與掛單量變化。

NBBO(全國最佳買賣報價)是美國股票的綜合報價:橫跨所有交易所,買方出價的最高價格與賣方要價的最低價格。這就是你應用程式上顯示的報價,也是你的券商在執行訂單時必須達到或超越的基準。以下所有數據均來自真實報價記錄,查詢條件附後。

什麼是 NBBO?用白話解釋的定義

一支美國股票不會只在一個地方交易。NYSE、Nasdaq 以及十多個其他交易所,各自為同一檔股票維護著各自的委託簿,各自擁有自己的最佳買價和最佳賣價。NBBO 將這些頂端價格縫合在一起:任何地方的最高買價、任何地方的最低賣價,並排顯示,並附上每個價格可交易的股數。這項縫合工作由證券資訊處理器(SIP)完成——這是由交易所共同營運的市場公用事業。

有兩個細節需要先了解。買價和賣價可以同時存在於兩個不同的交易所。而且,價格變動並非更新報價的必要條件:即使最佳價格不變,只要掛單數量改變,也會產生一筆新的記錄。交易員將這兩個最佳價格稱為最佳觸及價;兩者之間的差距就是買賣價差

如何解讀 NBBO 報價:價格、數量與節奏

以下是可口可樂(KO)在最近一個完整交易日東部時間下午 1:30 的連續十筆 NBBO 記錄——即實際送出的全國最佳買賣報價。

查詢KO — 近期交易日美東時間下午1:30起連續十筆NBBO更新
每個數據背後的精確 SQL 語法
WITH (
    SELECT max(session_date)
    FROM (
        SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS session_date,
               countIf((toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) AS regular_bars
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker = 'SPY'
          AND window_start >= toDateTime(today() - 10)
          AND window_start < toDateTime(today() - 3)
        GROUP BY session_date
        HAVING regular_bars = 390
    )
) AS last_session
SELECT substring(toString(toTimeZone(sip_timestamp, 'America/New_York')), 12, 12) AS et_time,
       round((toUnixTimestamp64Nano(sip_timestamp) - min(toUnixTimestamp64Nano(sip_timestamp)) OVER ()) / 1e6, 2) AS elapsed_ms,
       bid_size AS bid_shares,
       toFloat64(bid_price) AS best_bid,
       toFloat64(ask_price) AS best_ask,
       ask_size AS ask_shares,
       round((toFloat64(ask_price) - toFloat64(bid_price)) * 100, 1) AS spread_cents
FROM global_markets.cache_stocks_quotes
WHERE ticker = 'KO'
  AND sip_timestamp >= toDateTime(last_session, 'America/New_York') + INTERVAL 13 HOUR + INTERVAL 30 MINUTE
  AND sip_timestamp < toDateTime(last_session, 'America/New_York') + INTERVAL 14 HOUR
  AND bid_price > 0
  AND ask_price > bid_price
ORDER BY sip_timestamp, sequence_number
LIMIT 10

將第一列視為兩個持續有效的報價,時間戳記為美東時間 13:30:02.886。買方最佳報價:$83.3,掛單 200 股。賣方最佳報價:$83.31,掛單 200 股。兩者之間的價差為 1 美分。

掛單股數代表最佳價格上的掛單量——即兩個最優價格上顯示的流動性。任何大於該數量的訂單都會耗盡該價位,剩餘部分則以委託簿中次優的價格成交。顯示的掛單量是流動性的下限,而非全部庫存:通常還有更多未顯示的興趣存在於這兩個價格之間或之外,包括在暗池中。

接著往下逐列閱讀。全部 10 筆記錄都在第一筆記錄後的 484.95 毫秒內送達。這並非按照固定時程——只要任何一檔贏家報價發生變動,證券資訊處理系統(SIP)就會發布更新,而以下四種事件中的任何一種都會產生一列新記錄:更優的買價、更優的賣價、任一最佳價格上的股數變動,或是一家交易所取代另一家成為最佳報價。若想了解整個交易時段的觀點,請參閱市場微觀結構深度解析

NBBO 是否包含零股?

大多數情況下,不包含。全國最佳報價僅由整股委託構成。少於一個整股單位的委託稱為零股:它可以掛在交易所委託簿上,價格優於全國最佳買價,並在該價位成交,但永遠不會出現在 NBBO 中。

整股單位不再固定為 100 股。根據 SEC 修訂後的 Reg NMS 報價規則,整股單位按股價分級:股價在 $250 以下為 100 股,$250.01 至 $1,000 為 40 股,$1,000.01 至 $10,000 為 10 股,超過則為 1 股。這些分級可在成交帶中觀察到——下圖顯示了六檔橫跨不同價格區間的股票,在該時段內綜合報價中出現過的最小買價掛單量。

查詢NBBO顯示的最小交易單位 — 各價格層級六檔標的
每個數據背後的精確 SQL 語法
WITH (
    SELECT max(session_date)
    FROM (
        SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS session_date,
               countIf((toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) AS regular_bars
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker = 'SPY'
          AND window_start >= toDateTime(today() - 10)
          AND window_start < toDateTime(today() - 3)
        GROUP BY session_date
        HAVING regular_bars = 390
    )
) AS last_session
SELECT ticker,
       round(quantileDeterministic(0.5)(toFloat64(bid_price), toUInt64(sequence_number)), 2) AS share_price,
       min(bid_size) AS smallest_quoted_size,
       round(quantileDeterministic(0.5)(toFloat64(bid_size), toUInt64(sequence_number)), 0) AS median_bid_size
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('F', 'KO', 'NVDA', 'AAPL', 'SPY', 'AZO')
  AND sip_timestamp >= toDateTime(last_session, 'America/New_York') + INTERVAL 10 HOUR
  AND sip_timestamp < toDateTime(last_session, 'America/New_York') + INTERVAL 11 HOUR
  AND bid_price > 0
  AND bid_size > 0
GROUP BY ticker
ORDER BY share_price

福特汽車股價約 $13.9,在該小時內從未顯示少於 100 股的買價掛單;可口可樂股價 $84.18,情況亦然。蘋果股價 $314.36,最低降至 40 股;AutoZone 每股 $3030.52,最低降至 10 股,顯示買價掛單中位數為 10 股。最低門檻與價格分級完全吻合。價格更優的零股委託可能隱藏在公開價差之內而不顯示,因此真正的最佳可成交價格有時會優於 NBBO 所暗示的價位。

為什麼你 App 裡的報價不完全是即時的 NBBO

你在手機上看到的報價,已經走過一段路:交易所撮合引擎 → SIP → 數據供應商 → 券商 → 螢幕。每一筆記錄都帶著兩個時鐘——交易所自己的時間戳,以及 SIP 發布時的時間戳——兩者之間的差距,就是整合這一步所花的時間。

查詢交易所時間戳至SIP時間戳 — 整合步驟,單位微秒
每個數據背後的精確 SQL 語法
WITH (
    SELECT max(session_date)
    FROM (
        SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS session_date,
               countIf((toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) AS regular_bars
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker = 'SPY'
          AND window_start >= toDateTime(today() - 10)
          AND window_start < toDateTime(today() - 3)
        GROUP BY session_date
        HAVING regular_bars = 390
    )
) AS last_session
SELECT ticker,
       round(quantileDeterministic(0.5)((toUnixTimestamp64Nano(sip_timestamp) - toUnixTimestamp64Nano(participant_timestamp)) / 1000.0, toUInt64(sequence_number)), 1) AS median_micros,
       round(quantileDeterministic(0.99)((toUnixTimestamp64Nano(sip_timestamp) - toUnixTimestamp64Nano(participant_timestamp)) / 1000.0, toUInt64(sequence_number)), 1) AS p99_micros
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('SPY', 'NVDA', 'AAPL', 'KO')
  AND sip_timestamp >= toDateTime(last_session, 'America/New_York')
  AND sip_timestamp < toDateTime(last_session + 1, 'America/New_York')
  AND participant_timestamp > toDateTime64('2020-01-01 00:00:00', 9)
GROUP BY ticker
ORDER BY indexOf(['SPY', 'NVDA', 'AAPL', 'KO'], ticker)

SPY 的差距中位數是 229.1 微秒——也就是百萬分之一秒——蘋果則是 203.4。極端值的差距比中位數大得多:輝達的第 99 百分位數來到 536.9 微秒。以人類的感知來說,SIP 並不慢。慢的是另外兩件事。

第一,你的數據可能被刻意延遲了。根據交易所授權條款,零售 App 和看圖網站上的免費報價串流,通常會延遲 15 分鐘;即時串流是付費才能享有的權利。

第二,專業機構不會等 SIP。每家交易所也單獨販售自己撮合引擎的直接報價源。一家主機共置的公司讀取這份直接報價源,並在 SIP 版本的同一事件送達之前,就計算出自己的最佳買價和最佳賣價——這是一段微秒級的優勢,對於整天雙邊報價的造市商來說,至關重要。

NBBO 更新頻率為何?流動性佳與交易清淡的股票對比

每檔掛牌股票都有 NBBO,其更新速率正是流動性的溫度計。下表彙整了四檔交易熱絡的個股與兩檔交易清淡的小型股——Nathan's Famous (NATH) 與 Seneca Foods (SENEA)——近期完整交易日的平均值。

查詢每盤NBBO更新次數 — 四檔熱門股 vs. 兩檔冷門小型股
每個數據背後的精確 SQL 語法
SELECT ticker,
       uniqExact(toDate(toTimeZone(sip_timestamp, 'America/New_York'))) AS sessions,
       round(count() / uniqExact(toDate(toTimeZone(sip_timestamp, 'America/New_York')))) AS avg_updates_per_session,
       round(count() / uniqExact(toDate(toTimeZone(sip_timestamp, 'America/New_York'))) / 1e6, 3) AS avg_updates_per_session_m,
       round((count() / uniqExact(toDate(toTimeZone(sip_timestamp, 'America/New_York')))) / min(count() / uniqExact(toDate(toTimeZone(sip_timestamp, 'America/New_York')))) OVER (), 0) AS multiple_of_quietest
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('SPY', 'NVDA', 'AAPL', 'KO', 'SENEA', 'NATH')
  AND sip_timestamp >= toDateTime(today() - 10)
  AND sip_timestamp < toDateTime(today() - 3)
  AND toDate(toTimeZone(sip_timestamp, 'America/New_York')) IN (
      SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS session_date
      FROM global_markets.delayed_stocks_minute_aggs
      WHERE ticker = 'SPY'
        AND window_start >= toDateTime(today() - 10)
        AND window_start < toDateTime(today() - 3)
      GROUP BY session_date
      HAVING countIf((toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) = 390
  )
GROUP BY ticker
ORDER BY indexOf(['SPY', 'NVDA', 'AAPL', 'KO', 'SENEA', 'NATH'], ticker)

SPY,這檔標普 500 ETF,平均每交易日 NBBO 更新次數達 3.428 百萬次——是表中最清淡個股的 2031 倍。Nvidia 平均為 1.85 百萬次,Apple 為 1.336 百萬次。接著出現斷崖式落差:Seneca Foods 平均每交易日僅產生 8097 次更新,Nathan's Famous 為 1688 次。沒有人能以 SPY 的速率用肉眼讀取螢幕:NBBO 本質上是為軟體而建的數據饋送。

全國最佳買賣報價何時更新最快:開盤 vs. 盤中

更新速率同樣維持著每日節奏。圖表以半小時為單位(美東時間),呈現蘋果每分鐘全國最佳買賣報價的平均更新次數;最後一欄則將每個時段的讀數表示為上午9:30時段的百分比。

查詢AAPL — 每半小時區間平均每分鐘NBBO更新次數(美東時間,凌晨4點至晚上8點)
每個數據背後的精確 SQL 語法
SELECT et_time,
       avg_updates_per_minute,
       round(100 * avg_updates_per_minute / maxIf(avg_updates_per_minute, et_time = '09:30') OVER (), 1) AS pct_of_opening_bucket
FROM (
    SELECT formatDateTime(toStartOfInterval(toTimeZone(sip_timestamp, 'America/New_York'), INTERVAL 30 MINUTE), '%H:%i') AS et_time,
           round(count() / (uniqExact(toDate(toTimeZone(sip_timestamp, 'America/New_York'))) * 30)) AS avg_updates_per_minute
    FROM global_markets.cache_stocks_quotes
    WHERE ticker = 'AAPL'
      AND sip_timestamp >= toDateTime(today() - 10)
      AND sip_timestamp < toDateTime(today() - 3)
      AND toDate(toTimeZone(sip_timestamp, 'America/New_York')) IN (
      SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS session_date
      FROM global_markets.delayed_stocks_minute_aggs
      WHERE ticker = 'SPY'
        AND window_start >= toDateTime(today() - 10)
        AND window_start < toDateTime(today() - 3)
      GROUP BY session_date
      HAVING countIf((toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) = 390
  )
    GROUP BY et_time
    HAVING et_time >= '04:00' AND et_time < '20:00'
)
ORDER BY et_time

開盤集合競價後的半小時內,蘋果的全國報價平均每分鐘更新 5657 次,而上午10:00時段仍維持該速度的 89.5%。此後,報價單在日間中段逐漸稀疏:下午2:30時段每分鐘更新 1973 次,為開盤速度的 34.9%。下午3:30進入收盤前的時段僅收復部分速度——每分鐘 3345 次,為開盤的 59.1%——因此最密集的報價集中在第一個小時,而非最後一個小時。在常規交易時段之外,報價單近乎沉寂,在下午4:00收市鐘響後降至每分鐘 17 次更新。

交易暫停期間,NBBO 會發生什麼事?

當股價波動過快過大時,漲跌停機制會將其暫停交易五分鐘。報價既不會消失,也不會保持即時更新:它會停止刷新,暫停前的最後一筆記錄,就是留在你螢幕上的定格畫面。GameStop (GME) 在 2024 年 5 月 14 日美東時間上午 11 點剛過,就觸發了這樣一次暫停;下方面板逐分鐘追蹤了期間的報價更新與交易情況。

查詢GME,2024-05-14 — 五分鐘LULD暫停期間每分鐘NBBO更新與成交筆數
每個數據背後的精確 SQL 語法
WITH spine AS (
    SELECT toStartOfMinute(toTimeZone(window_start, 'America/New_York')) AS et_min
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'SPY'
      AND window_start >= toDateTime('2024-05-14 10:57:00', 'America/New_York')
      AND window_start < toDateTime('2024-05-14 11:12:00', 'America/New_York')
),
gme_trades AS (
    SELECT toStartOfMinute(toTimeZone(window_start, 'America/New_York')) AS et_min,
           sum(transactions) AS trades
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'GME'
      AND window_start >= toDateTime('2024-05-14 10:57:00', 'America/New_York')
      AND window_start < toDateTime('2024-05-14 11:12:00', 'America/New_York')
    GROUP BY et_min
),
gme_quotes AS (
    SELECT toStartOfMinute(toTimeZone(sip_timestamp, 'America/New_York')) AS et_min,
           count() AS nbbo_updates
    FROM global_markets.cache_stocks_quotes
    WHERE ticker = 'GME'
      AND sip_timestamp >= toDateTime('2024-05-14 10:57:00', 'America/New_York')
      AND sip_timestamp < toDateTime('2024-05-14 11:12:00', 'America/New_York')
    GROUP BY et_min
)
SELECT formatDateTime(spine.et_min, '%H:%i') AS et_time,
       ifNull(gme_quotes.nbbo_updates, 0) AS nbbo_updates,
       toUInt64(ifNull(gme_trades.trades, 0)) AS trades
FROM spine
LEFT JOIN gme_quotes ON gme_quotes.et_min = spine.et_min
LEFT JOIN gme_trades ON gme_trades.et_min = spine.et_min
ORDER BY spine.et_min

在暫停前一分鐘,11:00,GameStop 的綜合報價更新了 4511 次,對應 12419 筆交易。隨後兩項數據驟降:0 筆報價記錄發生在 11:020 筆發生在 11:03,並伴隨 0 筆交易——報價停止變動,股票停止交易。報價在 11:06 恢復,即重新開盤的那一分鐘,出現 4155 次更新與 14007 筆交易,是表格中交易量最大的一分鐘。暫停股票的最终 NBBO 只是化石,而非可成交價格;2021 年 1 月 GameStop 的交易時段 展示了連續多次此類暫停會對交易記錄造成何種影響。

為何你的券商必須以 NBBO 或更優價格為你成交

NBBO 是一項監管基準。美國證監會於 2005 年通過的市場結構規範——Regulation NMS——載有訂單保護規則,即 Rule 611:交易場所不得以劣於其他交易所顯示的受保護報價之價格執行交易。券商亦對客戶負有最佳執行義務,並以 NBBO 為衡量標準:市價買單應以全國最佳賣價或更低價格成交,市價賣單則應以全國最佳買價或更高價格成交。

多數散戶讀者忽略了這一點:你的市價單通常根本不會送達交易所。大多數散戶的可成交訂單流會被導向批發商——這些場外造市者付費取得成交這些訂單的權利——並在內部執行,再申報至場外交易回報機構。NBBO 依然約束著他們:批發商在執行當下,必須等於或優於全國報價,並透過更優的價格來競爭這批訂單流——在買賣價差內以零點幾美分的幅度成交,這稱為價格改善。NBBO 是參考價格,而非交易場所;你選擇的訂單類型才決定了你是否會跨越買賣價差。

常見問答

NBBO 包含零股嗎?

不包含。全國最佳報價僅由整股報價組合而成,且 Reg NMS 根據價格將整股分級——股價低於 250 美元時為 100 股,高於 10,000 美元時降至 1 股。上方福特股票在報價揭示畫面顯示的最小買單為 100 股,而股價高出許多的 AutoZone 則為 10 股。價格更優的零股則隱藏在已公布的價差之內,不會顯示。

為何我券商 App 的報價與即時 NBBO 不同?

有兩個原因,但都與 SIP 無關。根據交易所授權規則,免費的零售報價通常延遲 15 分鐘,除非你付費訂閱即時報價。此外,整合數據是已發布的快照:以 SPY 為例,整合步驟的中位數延遲為 229.1 微秒,而使用交易所直接數據源的機構則能更早看到事件。

股票暫停交易時,NBBO 會如何?

它會凍結。在上方 GameStop 五分鐘的漲跌停暫停期間,報價揭示畫面在 11:030 筆交易中,記錄了 0 次報價更新。最後一筆報價會停留在螢幕上,但無法交易;重新開盤的競價會決定下一個報價。

NBBO 在盤後還存在嗎?

是的。整合報價從美東時間凌晨 4:00 到晚上 8:00 持續串流,因此 盤前與盤後交易 期間都存在全國最佳報價——只是更新速度僅為日間的一小部分:蘋果在盤前最後一個時段每分鐘更新 65 次,而開盤後則為 5657 次。

數據說明:時間窗口與篩選條件

滾動窗口的截止日為生成日期前三天(數據接收前端存在短暫的寫入延遲),且僅計算完整交易時段——即 SPY 完整印出所有 390 根常規交易時段分鐘 K 線的交易日。可口可樂的數據面板排除了單邊報價與交叉報價記錄;計數面板則照實收錄所有記錄(鎖定與交叉市場 涵蓋了被排除的記錄)。GameStop 的數據面板鎖定於一個固定日期,並以 SPY 的分鐘 K 線作為時間軸骨幹,因此暫停交易的分鐘會顯示為零。


每個數據面板都附帶產生該數據的 SQL 查詢語句——打開它,換成你自己的股票代碼,就能在 Strasmore 終端機上計算其 NBBO 更新次數。