鎖定與交叉市場是什麼?
鎖定市場買賣價相等,交叉市場買價高於賣價。本文以數據說明 Reg NMS 為何禁止兩者,以及各自在報價紀錄中出現的頻率。
鎖定市場(locked market)是指股票的最佳買價等於最佳賣價,買賣價差恰好為零的狀態。交叉市場(crossed market)則更進一步:最佳買價高於最佳賣價。美國市場規則禁止交易所顯示這兩種報價,但它們仍經常出現在整合報價紀錄中。本頁將定義兩者、解釋相關規則,並衡量各自出現的頻率。
什麼是鎖定市場?
每一檔美股在任何時刻都同時掛著兩個價格:買價,即買方願意支付的最高價格,以及賣價,即賣方願意接受的最低價格。賣價通常高於買價;兩者之間的差距就是買賣價差,也就是立即交易時內含的成本。
鎖定市場,就是這個價差歸零的瞬間:一檔股票報價為買價 $10.00/賣價 $10.05,價差為五分錢;如果最佳賣價跌到 $10.00,而買價維持不動,這筆報價就會鎖定在 $10.00/$10.00。
在單一交易所內,這種狀態無法持續——一筆 $10.00 的買單碰上一筆 $10.00 的賣單,當下就會成交。鎖定報價只會存在於不同交易場所之間。美股同時在十幾個交易所交易,而 NBBO——全國最佳買賣報價,也就是你券商 App 顯示的報價——是從所有交易所中拼湊出最佳買價與賣價。某個場所的 $10.00 買價,碰上另一個場所的 $10.00 賣價,就會鎖定全國報價,但這兩個場所各自的委託簿並未鎖定。
什麼是交叉市場?
交叉市場顛覆了正常的報價排列:最佳買價高於最佳賣價——例如,買價報 $10.02,賣價卻報 $10.00。理論上,任何人都可以用 $10.00 買進,再用 $10.02 賣出,每股無風險套利兩美分。這種免費的獲利機會,正是交叉報價無法持續的原因:專業機構——包括為多數股票提供雙邊報價的造市商——會在套利機會成真的瞬間進場,而套利行為本身就會消耗掉這兩筆報價。最終留在數據裡的,只是一個短暫的閃爍:一個在不同交易場所更新之間被捕捉到的交叉記錄。
為何 Reg NMS 禁止鎖定與交叉報價
這項禁令載於 Regulation NMS,即美國證券交易委員會(SEC)於 2005 年通過、規範全美證券交易所交易的規則手冊。第 610(d) 條要求各交易所,在常規交易時段內,防止其會員顯示鎖定或交叉保護報價——亦即其他交易所自動化系統中的最佳買價與賣價。其立法意旨在於:當買價等於他人的賣價時,該筆交易本可立即成交,規則手冊要求的是將其路由執行,而非以一種自相矛盾的狀態掛單展示。
該規則中有一項邊界條件,對理解下方數據至關重要:它規範的是「顯示」行為,而非「存在」狀態。各交易場所僅控制自家報價簿所呈現的內容;全市場的整合記錄,則是透過彼此競速的數據饋送,跨場所即時拼湊而成。因此,即便沒有任何單一參與者違規,整合後的 NBBO 仍可能出現鎖定狀態。
為何鎖定與交叉報價仍會出現
速度。交易所每隔幾微秒便更新報價,而整合報價饋送會在每次更新時重新構建。兩個普通事件會把鎖定與交叉紀錄塞進饋送裡:
- 競速。 某家交易所將買價提高到 $10.00,同時另一家仍顯示 $10.00 的賣價。拼在一起後,NBBO 在慢的一方更新之前會讀出鎖定狀態;同樣的競速若多衝出一分錢,就會讀出交叉狀態。
- 過時與單邊紀錄。 有些紀錄只帶單邊 — 有買價無賣價,或反之。成交量稀薄的標的名稱整天處於該狀態的時間要多得多,如下方的普查所示。
本頁的計數規則:鎖定 = 買價等於賣價,且兩邊均為正數;交叉 = 買價高於正數賣價;單邊 = 任一邊為零或缺失。沒有任何紀錄被悄悄丟棄 — 單邊紀錄自有獨立欄位。
鎖定市場與交叉市場發生的頻率為何?
從整盤報價開始:在 2026-07-14 —— 我們普查窗口中最接近且已完成的一個交易時段 —— 所有掛牌標的的每一次 NBBO 更新。
每個數據背後的精確 SQL 語法
WITH (
SELECT max(toDate(toTimeZone(window_start, 'America/New_York')))
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY' AND window_start < toDateTime(today() - 3)
) AS census_day
SELECT
formatDateTime(census_day, '%Y-%m-%d') AS session_date,
round(count() / 1e6, 0) AS updates_m,
round(countIf(bid_price = ask_price AND bid_price > 0) / 1e6, 2) AS locked_m,
round(countIf(bid_price > ask_price AND ask_price > 0) / 1e3, 1) AS crossed_k,
round(countIf(bid_price = ask_price AND bid_price > 0) / toFloat64(greatest(countIf(bid_price > ask_price AND ask_price > 0), 1)), 0) AS locked_per_crossed,
round(countIf(bid_price >= ask_price AND ask_price > 0 AND bid_price > 0) / toFloat64(count()) * 1e4, 1) AS locked_or_crossed_per_10k,
round(countIf(bid_price <= 0 OR ask_price <= 0) / toFloat64(count()) * 1e4, 1) AS one_sided_per_10k
FROM global_markets.cache_stocks_quotes
WHERE sip_timestamp >= toDateTime(census_day)
AND sip_timestamp < toDateTime(census_day + 1)該交易時段承載了 477 百萬次報價更新:其中 9.7 百萬次為鎖定,67 千次為交叉 —— 合計佔每萬次更新中的 204.9 次,鎖定次數與交叉次數的比例為 145 比一。缺少單邊報價的紀錄,每萬次更新中發生 2.8 次。7月7日市場回顧在每一個它衡量的價差旁,也揭露了相同的計數。
全市場的比率混合了數千檔特性迥異的股票。下表在一個經過查驗的十檔股票集合上重新執行普查 —— 八檔家喻戶曉的代號,加上兩檔真正交易清淡的小型股,Nathan's Famous (NATH) 與 Seneca Foods (SENEA) —— 涵蓋近期已完成的交易時段,包含延長交易時段,並附上各股典型的報價價差。
每個數據背後的精確 SQL 語法
SELECT ticker,
round(count() / 1e3, 1) AS updates_k,
round(quantileExactIf(0.5)(toFloat64(ask_price - bid_price), bid_price > 0 AND ask_price >= bid_price) * 100, 1) AS median_spread_cents,
countIf(bid_price = ask_price AND bid_price > 0) AS locked_records,
countIf(bid_price > ask_price AND ask_price > 0) AS crossed_records,
round(countIf(bid_price >= ask_price AND ask_price > 0 AND bid_price > 0) / toFloat64(count()) * 1e4, 1) AS locked_or_crossed_per_10k,
round(countIf(bid_price <= 0 OR ask_price <= 0) / toFloat64(count()) * 1e4, 1) AS one_sided_per_10k
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('SPY', 'QQQ', 'AAPL', 'NVDA', 'MSFT', 'TSLA', 'KO', 'AMD', 'NATH', 'SENEA')
AND sip_timestamp >= toDateTime(today() - 10)
AND sip_timestamp < toDateTime(today() - 3)
GROUP BY ticker
ORDER BY ticker將價差欄位與發生率對照閱讀。可口可樂,典型的報價價差為 1¢,每萬次更新中出現鎖定或交叉報價的次數為 215.9 次;輝達(2¢)為每萬次 91 次,而 SPY(2¢)則為 52.2 次。AMD,其典型的延長交易時段報價價差為 44¢,發生率僅為每萬次 5.9 次。一次鎖定需要兩個交易場所在同一瞬間抵達同一個價位 —— 典型的報價價差越寬,這段路程就越長。
交易清淡的股票幾乎沒有紀錄:Nathan's Famous 在 8.4 千次更新中,印出了 0 次鎖定與 0 次交叉紀錄;Seneca Foods 則在 40.5 千次更新中,印出了 0 次與 0 次。它們的欄位是另一回事:單邊報價紀錄在 Nathan's Famous 為每萬次 41.5 次,在 Seneca Foods 為 17 次,相較之下 SPY 為 0 次。鎖定與交叉紀錄存在於報價快速且緊密之處;單邊報價紀錄則存在於報價稀少之處。
鎖定與交叉報價何時群聚?
名稱普查說明了地點;時鐘說明了時間。以下是受檢集合在東部時間上午4:00至晚上8:00,以30分鐘為區間的鎖定或交叉比率,旁邊並列每個區間的更新流量。
每個數據背後的精確 SQL 語法
SELECT formatDateTime(toStartOfInterval(toTimeZone(sip_timestamp, 'America/New_York'), INTERVAL 30 MINUTE), '%H:%i') AS et_time,
round(countIf(bid_price >= ask_price AND ask_price > 0 AND bid_price > 0) / toFloat64(count()) * 1e4, 1) AS locked_or_crossed_per_10k,
round(count() / 1e6, 2) AS updates_m
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('SPY', 'QQQ', 'AAPL', 'NVDA', 'MSFT', 'TSLA', 'KO', 'AMD', 'NATH', 'SENEA')
AND sip_timestamp >= toDateTime(today() - 10)
AND sip_timestamp < toDateTime(today() - 3)
GROUP BY et_time
HAVING et_time >= '04:00' AND et_time < '20:00'
ORDER BY et_time該比率在交易時段內逐步攀升。盤前05:00區間在0.59百萬筆更新中測得每萬筆3;09:30區間——常規交易首個半小時,由開盤集合競價開啟——在9.98百萬筆更新中達到每萬筆24.9。此後比率持續累積至收盤,在15:30區間——即收盤集合競價前夕——達到每萬筆109.9。一列收據資料勾勒出此輪廓:
每個數據背後的精確 SQL 語法
SELECT
round(countIf(is_locked) / 1e3, 1) AS locked_k,
round(countIf(is_crossed) / 1e3, 1) AS crossed_k,
round(countIf(is_locked) / toFloat64(greatest(countIf(is_crossed), 1)), 1) AS locked_per_crossed,
round(countIf((is_locked OR is_crossed) AND et_minute BETWEEN 240 AND 569) / toFloat64(countIf(et_minute BETWEEN 240 AND 569)) * 1e4, 1) AS premarket_per_10k,
round(countIf((is_locked OR is_crossed) AND et_minute BETWEEN 570 AND 599) / toFloat64(countIf(et_minute BETWEEN 570 AND 599)) * 1e4, 1) AS opening_half_hour_per_10k,
round(countIf((is_locked OR is_crossed) AND et_minute BETWEEN 720 AND 779) / toFloat64(countIf(et_minute BETWEEN 720 AND 779)) * 1e4, 1) AS midday_hour_per_10k,
round(countIf((is_locked OR is_crossed) AND et_minute BETWEEN 930 AND 959) / toFloat64(countIf(et_minute BETWEEN 930 AND 959)) * 1e4, 1) AS closing_half_hour_per_10k,
round((countIf((is_locked OR is_crossed) AND et_minute BETWEEN 930 AND 959) / toFloat64(countIf(et_minute BETWEEN 930 AND 959)))
/ (countIf((is_locked OR is_crossed) AND et_minute BETWEEN 570 AND 599) / toFloat64(countIf(et_minute BETWEEN 570 AND 599))), 1) AS close_to_open_ratio,
round((countIf((is_locked OR is_crossed) AND et_minute BETWEEN 930 AND 959) / toFloat64(countIf(et_minute BETWEEN 930 AND 959)))
/ (countIf((is_locked OR is_crossed) AND et_minute BETWEEN 720 AND 779) / toFloat64(countIf(et_minute BETWEEN 720 AND 779))), 1) AS close_to_midday_ratio,
round((countIf((is_locked OR is_crossed) AND et_minute BETWEEN 930 AND 959) / toFloat64(countIf(et_minute BETWEEN 930 AND 959)))
/ (countIf((is_locked OR is_crossed) AND et_minute BETWEEN 240 AND 569) / toFloat64(countIf(et_minute BETWEEN 240 AND 569))), 1) AS close_to_premarket_ratio
FROM (
SELECT
bid_price = ask_price AND bid_price > 0 AS is_locked,
bid_price > ask_price AND ask_price > 0 AS is_crossed,
toHour(toTimeZone(sip_timestamp, 'America/New_York')) * 60 + toMinute(toTimeZone(sip_timestamp, 'America/New_York')) AS et_minute
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('SPY', 'QQQ', 'AAPL', 'NVDA', 'MSFT', 'TSLA', 'KO', 'AMD', 'NATH', 'SENEA')
AND sip_timestamp >= toDateTime(today() - 10)
AND sip_timestamp < toDateTime(today() - 3)
)在整個觀察窗內,受檢集合印出了257.2千筆鎖定記錄,對比25.6千筆交叉記錄——即每筆交叉對應10.1筆鎖定。收盤前半小時的比率為每萬筆109.9,是開盤前半小時24.9的4.4倍,也是中午時段48.5的2.3倍。
顯示禁令在上午9:30之前根本不適用,然而整個4:00–9:30時段——盤前交易,報價量僅為常規時段流量的一小部分——僅顯示每萬筆10.9,而收盤前半小時的比率是該數值的10.1倍。這些記錄群聚於報價快速且緊密之處,而非規則手冊最寬鬆之處。
資料說明:觀察窗與範圍
- 全市場磁帶普查涵蓋一個完整的UTC日曆日,包含所有上市代號;受檢集合面板則涵蓋近期已完成交易日的滾動觀察窗,包含延長交易時段(美東時間上午4:00至晚上8:00)。每個觀察窗的截止日皆落後更新日期三天——報價倉儲在其前端存有一至兩天的導入延遲。
- 十檔名單表格為受檢集合,而非全市場排名;下午4:00之後的時鐘區間,其流量僅佔常規交易時段的一小部分(更新筆數欄為此特別繪製)。
- 這些是記錄筆數,而非持續時間。逐筆更新的微觀分析——奈秒級間隙,以及單一交易日SPY磁帶上的交叉與零買價收據——詳見6月29日微結構深度探討。
常見問答
什麼是股票鎖定市場?
鎖定市場指的是最佳買價等於最佳賣價的報價——即價差為零。這種情況發生在不同交易所之間——某一個交易所的買價與另一個交易所的賣價相同——而 Regulation NMS 禁止交易所在正常交易時段內,顯示會造成此種情況的報價。
當買價高於賣價時,代表什麼意思?
買價高於賣價即為交叉市場。單一交易所的委託簿不可能維持這種狀態——因為重疊的訂單會立即成交——而交叉的全國最佳買賣報價(NBBO),幾乎總是兩個交易所的報價在更新途中被捕捉到的瞬間狀態。
鎖定和交叉市場是違法的嗎?
對一般投資人來說並非如此。Regulation NMS 的 Rule 610(d) 要求交易所,必須防止其會員在正常交易時段內顯示鎖定或交叉的報價。綜合報價饋送中出現的短暫記錄,僅是各交易所在些微不同的瞬間進行更新所產生的暫時現象。
鎖定和交叉市場發生的頻率有多高?
這是常態:光是在 2026-07-14 這一天,綜合報價饋送中就出現了 9.7 百萬筆鎖定記錄和 67 千筆交叉記錄——相當於每 10,000 次更新中就有 204.9 次。這種情況在報價密集的標的中,發生率遠高於報價稀疏的標的,且在接近收盤時高於開盤時。
本頁面上的每一個數字,都是從儲存的查詢中產生的——展開任何一個面板下的 SQL 語法,就能確切看到鎖定或交叉是如何被計算的。若想針對您交易的標的執行相同的統計,請在 Strasmore terminal 上用簡單的英文提出要求。