Strasmore Research
學習 Matt Connor作者: Matt Connor · 更新於 2026-08-08

Level 1、Level 2、Level 3 市場資料差異

以實際報價面板說明 Level 1、Level 2 與 Level 3 市場資料,解析最優一檔、逐價位深度、逐筆訂單,以及零售資料流缺少的內容。

Level 1 與 Level 2 市場資料的差異,在於你可以查看多少訂單簿內容。Level 1 是最優一檔:最佳買價、最佳賣價、各自的報價數量,以及最新成交。Level 2 則是最佳一檔後方的深度,顯示每個掛單價格層級及其上的總掛單量。Level 3 會逐筆顯示每張訂單,並附有各自的識別碼。每一層都包含下一層的全部內容。

什麼是 Level 1 市場資料?

Level 1,也稱為最優一檔,只回答一個問題:目前可取得的最佳價格是多少,以及該價格上的報價量是多少。在美國股票市場,這一檔資料的整合版本就是全國最佳買價與賣價;NBBO 是什麼一文有完整說明。Level 1 紀錄包含最佳買價、最佳賣價、買賣兩側的顯示數量,以及成交側的最新成交價與成交量。不包含次佳價格,也不顯示哪些市場參與者正在報價。

這一層級主要看兩個數字:以美分計的買賣價差,以及以 basis points 計的相同價差;一個 basis point 是百分之一個百分點。下方圖表繪出某檔大型股在單一完整交易時段的兩項數據,期間從美東時間凌晨 4:00 的盤前交易開始,一直到晚上 8:00 盤後交易結束。

查詢第1層最佳五檔:完整交易時段的報價價差(AAPL,2026年6月17日)
每個數據背後的精確 SQL 語法
SELECT
    formatDateTime(
        toStartOfInterval(toTimeZone(sip_timestamp, 'America/New_York'), INTERVAL 30 MINUTE),
        '%H:%i'
    )                                                                      AS et_time,
    round(avg(toFloat64(ask_price) - toFloat64(bid_price)) * 100, 2)       AS spread_cents,
    round(avg((toFloat64(ask_price) - toFloat64(bid_price))
              / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2)) * 10000, 2) AS spread_bps
FROM global_markets.cache_stocks_quotes
WHERE ticker = 'AAPL'
  AND sip_timestamp >= '2026-06-17 08:00:00'
  AND sip_timestamp <  '2026-06-18 00:00:00'
  AND bid_price > 0
  AND ask_price > bid_price
  AND (toFloat64(ask_price) - toFloat64(bid_price)) / toFloat64(bid_price) < 0.05
GROUP BY et_time
ORDER BY et_time
Run this yourself

04:00 ET,平均報價價差為 37.38 美分,或 12.51 basis points。圖表最後一個區間 19:30 ET 的平均價差為 16.85 美分,或 5.67 basis points。這 32 個半小時區間呈現整個交易日的變化。圖上的每一個點都是 Level 1 資料:訂單簿的一行,持續反覆測量。

什麼是 Level 2 市場資料?

Level 2 也稱為 market by price 或訂單簿深度,顯示最優一檔以下的價格階梯。系統會針對每個價格,彙總該價格上的總顯示掛單量:49.98 美元的買方有 4,000 股、49.97 美元有 1,200 股、49.96 美元有 900 股、49.95 美元有 2,500 股;賣方則呈現相對應的另一側。交易員所說的市場深度,就是這種形狀。

Level 2 不會揭示訂單的組成。49.98 美元的 4,000 股可能來自一張機構訂單,也可能來自 40 張散戶訂單;無論是哪一種,價格階梯顯示的結果都相同。

公開成交資料也能呈現一種相關的形狀:股票實際在各個價格層級成交的股數。報價階梯代表尚未成交的掛單興趣。下方圖表則呈現同一交易時段內半小時的實際成交量。

查詢各價格層級的成交量:成交階梯(KO,30分鐘)
每個數據背後的精確 SQL 語法
SELECT
    toString(px)             AS price_level,
    round(sum(sz) / 1000, 1) AS shares_thousands,
    count()                  AS prints
FROM
(
    SELECT
        round(toFloat64(price), 2) AS px,
        toFloat64(size)            AS sz
    FROM global_markets.stocks_trades
    WHERE ticker = 'KO'
      AND sip_timestamp >= '2026-06-17 14:30:00'
      AND sip_timestamp <  '2026-06-17 15:00:00'
      AND price > 0
      AND size > 0
)
GROUP BY px
ORDER BY px
Run this yourself

該半小時的交易分布於 63 個不同價格層級,最低價為 $79.42,最高價為 $80.04。兩個極端價格層級的成交量都很少,低端為 0.1 千股,高端為 0.8 千股;大部分成交量集中在兩者之間。Level 1 feed 會在這段期間一次顯示一個價格。Level 2 feed 則會事先顯示價格階梯,呈現尚未成交的掛單,而不是事後顯示的成交紀錄。

什麼是 Level 3 市場資料?

Level 3,也稱為 market by order,提供完整的市場圖像:每張尚未成交的訂單都會個別列出,並附有識別碼、價格、數量及其在該價格排隊的位置。將 Level 3 feed 按價格彙總,就能還原 Level 2。取買賣兩側的最佳價格,就能得到 Level 1。

Level 3 能回答彙總層級無法回答的兩個問題。第一,某張訂單在特定價格的排隊位置為何;這會決定該價格成交時,訂單是否能夠成交。第二,某張特定訂單在整個存續期間發生了什麼事,從下單到取消的完整過程。Nasdaq TotalView-ITCH 等交易所 proprietary feed 會提供這類深度資料。整合行情資料則不會。

散戶訂閱的 Level 2 實際提供什麼?

在散戶平台上,這個名稱的定義通常比較寬鬆。「Level 2」很少代表完整的全國訂單簿深度。通常提供的是單一交易場所的訂單簿,往往是經紀商負責路由訂單的交易場所;或者是合併訂單簿,但每一側最多只顯示 5 或 10 個價格層級。對於以美分報價的股票,10 檔深度只涵蓋 10 美分的價格範圍;對活躍股票而言,這個範圍會持續更新。

訊息量是不同層級價格差距如此大的重要原因。下方圖表統計同一交易時段內,5 檔大型知名股票在一小時內的最優一檔報價紀錄數量,並列出各自的平均價差。

查詢各標的最佳五檔價差與報價訊息數(美東時間上午10:00至11:00)
每個數據背後的精確 SQL 語法
SELECT
    ticker                                                                 AS symbol,
    round(avg((toFloat64(ask_price) - toFloat64(bid_price))
              / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2)) * 10000, 2) AS spread_bps,
    count()                                                                AS quote_update_count
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('SPY', 'AAPL', 'MSFT', 'NVDA', 'KO')
  AND sip_timestamp >= '2026-06-17 14:00:00'
  AND sip_timestamp <  '2026-06-17 15:00:00'
  AND bid_price > 0
  AND ask_price > bid_price
  AND (toFloat64(ask_price) - toFloat64(bid_price)) / toFloat64(bid_price) < 0.05
GROUP BY symbol
ORDER BY spread_bps
Run this yourself

在這 5 檔股票中,SPY 的平均價差最窄,為 0.32 basis points;KO 的平均價差則為 1.95。這些更新次數僅涵蓋最優一檔。深度 feed 會記錄其下方每個價格層級的所有變化;逐筆訂單 feed 則會記錄這些變化背後的每一則訊息。Options 是同樣計算方式的極端案例:options 報價 feed 有多大一文提供了具體數字。

為什麼可見訂單簿會低估實際流動性

顯示的價格階梯只能代表可用流動性的下限,不能視為完整衡量。訂單簿之外還有兩大部分。

隱藏訂單與 reserve orders。 Iceberg order 只顯示一小部分,其餘數量則保留在後方;當可見部分成交後,系統會補上新的可見數量。訂單簿可能只顯示 200 股,但其後方可能還有 20,000 股。Iceberg orders 如何運作一文說明其機制。

場外成交。 美國股票交易量中,有相當大一部分是在非公開交易所的場所成交,包括券商 internalizers 與 alternative trading systems。這些場所完全不發布交易前報價。Dark pool trading 的運作方式一文說明這些成交量流向何處。

市場資料 feed 中的 conflation 是什麼意思?

Conflated feed 不會傳送每一次更新。它會按照固定間隔擷取訂單簿,例如每 250 毫秒或每秒一次,並傳送該時間點的狀態。兩次擷取之間發生的事件不會傳送出去;兩名訂閱者若使用不同的擷取間隔,也會看到兩個不同的訂單簿,而兩者都只在各自的時間點上準確。

對於以 feed 建構系統的人而言,這項差異最為重要。未 conflated 的資料會依序傳送每一則訊息,matching-engine simulation 或 queue-position model 都是以此為基礎。使用 conflated feed 時,這些計算只能視為近似值。對於用肉眼閱讀價格階梯的人而言,更新間隔幾乎無關緊要。

查詢最佳五檔訊息頻率,逐分鐘顯示(NVDA,1小時)
每個數據背後的精確 SQL 語法
SELECT
    et_time,
    round(avg(sec_updates), 1) AS avg_updates_per_second,
    max(sec_updates)           AS peak_updates_in_one_second
FROM
(
    SELECT
        formatDateTime(toStartOfMinute(toTimeZone(sip_timestamp, 'America/New_York')), '%H:%i') AS et_time,
        toDateTime(sip_timestamp)                                                              AS et_second,
        count()                                                                                AS sec_updates
    FROM global_markets.cache_stocks_quotes
    WHERE ticker = 'NVDA'
      AND sip_timestamp >= '2026-06-17 14:00:00'
      AND sip_timestamp <  '2026-06-17 15:00:00'
    GROUP BY et_time, et_second
)
GROUP BY et_time
ORDER BY et_time
Run this yourself

在該小時的第一分鐘,即 10:00 ET,最優一檔紀錄平均每秒傳來 163.8 筆;該分鐘內最繁忙的單一秒則有 371 筆。每秒擷取一次的 feed,只會從這串資料中傳送一個訂單簿狀態。這只是單一股票的最優一檔資料。深度 feed 與逐筆訂單 feed 會使訊息數量倍增。

Level 2 資料值得付費嗎?

價值取決於持有期間。若交易員要在買賣價差內執行訂單,並在幾秒內掌握進場時機,深度資料能提供最優一檔沒有的資訊:掛單量集中在哪裡,以及哪一側的掛單正在減少。由於前述隱藏流動性因素,這種解讀並不完美,但仍比完全沒有價格階梯好。

若持有期間是數天或數週,10 檔深度所提供的額外資訊相較於成本通常很有限。Level 1 以下的層級在此也值得注意:延遲報價通常落後 15 分鐘,在多數平台上免費,對以數天為決策期間的交易已經足夠。股票報價為何延遲 15 分鐘一文說明了這項慣例的由來。最後還要確認資料傳送方式:如果價格階梯只來自單一交易場所,而且以供應商從未公布的時間間隔進行 conflation,那麼它只是局部視角中的局部視角。

常見問題

Level 1 與 Level 2 市場資料有什麼差異?

Level 1 提供最佳買價與最佳賣價,以及各自的報價量,並附上最新成交。Level 2 會增加最優一檔以下的顯示價格層級,以及每個層級上的總掛單量,因此包含 Level 1 的全部內容,並提供更多資訊。

Level 2 市場資料是即時的嗎?

這取決於訂閱內容。交易所的深度 feed 是即時資料,但需要付費;許多散戶平台則提供按固定間隔擷取的 conflated 版本。產品頁面很少說明具體類型,投資人可以向經紀商客服確認。

Level 2 會顯示隱藏訂單嗎?

不會。訂單簿深度 feed 只會顯示可見掛單量。Iceberg order 的 reserve quantity 及完全隱藏的訂單,在成交並形成 prints 前,都不會出現在價格階梯中。

Level 3 市場資料有什麼用途?

Level 3,也稱為 market by order,會提供每張尚未成交訂單的個別資料,包括專屬識別碼、價格、數量及排隊位置。這類資料主要由執行交易與訂單路由模型的機構購買,因為排隊位置會改變成交的經濟效益。

交易需要 Level 2 資料嗎?

不需要。Level 1 報價與成交明細已足以讓投資人在任何散戶平台上下單及管理訂單。只有當決策取決於執行當下的流動性,而不是收盤價位時,市場深度才會特別有用。


這裡的每個圖表都附有底層 SQL,打開後即可查看每個數字的計算方式。同樣的問題也能在 Strasmore terminal 上套用至任何 ticker 與任何交易時段。

#market data#level 2#order book#depth of book#nbbo