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

什麼是開盤競價?股票如何開盤

了解開盤競價如何運作,以及美東時間上午9:30的一筆撮合如何決定股票正式開盤價,並說明開盤價為何可能不同於當日第一筆成交價。

開盤競價是美東時間上午 9:30 的單一撮合交易,用來決定各股票的正式開盤價。開盤鈴響前,掛牌交易所會收集所有指定於開盤時執行的委託單,計算出可撮合最多股數的單一價格,並以一筆成交完成整批委託。這是結束當日交易的收盤競價在早盤的對應形式。以下所有數字均來自 consolidated tape,也就是記錄美國所有股票交易的公開資料;每個圖表面板均附有完整 SQL。

什麼是開盤競價?白話定義

交易所並不是在9:30一到就直接開市,逐筆撮合訂單。隔夜及盤前期間,上市交易所會累積指定於開盤成交的訂單,以及掛在其訂單簿上、符合資格的限價單。開盤鐘響時,交易所會將整個訂單池以單一價格一次撮合成交。這筆成交會帶有專屬的成交條件標籤(代碼 17,「Market Center Opening Trade」,最後一個面板中的成交紀錄),其成交價也會成為官方開盤價:即當日價格紀錄中的「開盤價」,也是「跳空上漲」與「跳空下跌」所依據的參考價。開盤競價與連續交易屬於同一條成交行情;開盤鐘響時改變的是撮合機制。

開盤競價的真實成交:SPY、AAPL、NVDA

下表採用2026年7月2日這個經驗證的完整交易日(下一節附有收據),比較 SPY、AAPL 與 NVDA 的開盤集合競價成交量,以及其占當日成交量的比重。「撮合成交量」只計入成交紀錄新增至合併成交量的股數;行政訊息(成交條件 151638)不納入任何分母。

查詢開盤集合競價與其餘交易時段:SPY、AAPL、NVDA,2026年7月2日
股票代號集合競價股數(千股)集合競價價格集合競價時間(ET)開盤成交筆數09:30 開盤成交筆數最小開盤成交股數前5分鐘股數(千股)集合競價占前5分鐘(%)集合競價占全日(%)收盤集合競價股數(百萬股)收盤/開盤倍數
SPY122747.2209:30:0022412959.40.211.6513.5
AAPL323.3294.109:30:0011323338185617.40.4310.8933.7
NVDA690197.1209:30:0011690026500613.80.4817.3825.2
每個數據背後的精確 SQL 語法
SELECT
    ticker,
    round(toFloat64(maxIf(size, has(conditions, 17))) / 1e3, 1) AS auction_shares_k,
    toFloat64(argMaxIf(price, (size, sip_timestamp), has(conditions, 17))) AS auction_price,
    formatDateTime(toTimeZone(argMaxIf(sip_timestamp, (size, sip_timestamp), has(conditions, 17)), 'America/New_York'), '%H:%i:%S') AS auction_time_et,
    countIf(has(conditions, 17)) AS opening_print_count,
    countIf(has(conditions, 17) AND formatDateTime(toTimeZone(sip_timestamp, 'America/New_York'), '%H:%i:%S') = '09:30:00') AS open_prints_at_0930,
    minIf(size, has(conditions, 17)) AS smallest_open_print_shares,
    round(toFloat64(sumIf(size, NOT hasAny(conditions, [15, 16, 38]) AND (toHour(toTimeZone(sip_timestamp, 'America/New_York')) * 60 + toMinute(toTimeZone(sip_timestamp, 'America/New_York'))) >= 570 AND (toHour(toTimeZone(sip_timestamp, 'America/New_York')) * 60 + toMinute(toTimeZone(sip_timestamp, 'America/New_York'))) < 575)) / 1e3) AS first5_shares_k,
    round(100 * toFloat64(maxIf(size, has(conditions, 17))) / toFloat64(sumIf(size, NOT hasAny(conditions, [15, 16, 38]) AND (toHour(toTimeZone(sip_timestamp, 'America/New_York')) * 60 + toMinute(toTimeZone(sip_timestamp, 'America/New_York'))) >= 570 AND (toHour(toTimeZone(sip_timestamp, 'America/New_York')) * 60 + toMinute(toTimeZone(sip_timestamp, 'America/New_York'))) < 575)), 1) AS auction_pct_of_first5,
    round(100 * toFloat64(maxIf(size, has(conditions, 17))) / toFloat64(sumIf(size, NOT hasAny(conditions, [15, 16, 38]))), 2) AS auction_pct_of_day,
    round(toFloat64(maxIf(size, has(conditions, 8))) / 1e6, 2) AS closing_auction_shares_m,
    round(toFloat64(maxIf(size, has(conditions, 8))) / toFloat64(maxIf(size, has(conditions, 17))), 1) AS close_vs_open_x
FROM global_markets.stocks_trades
WHERE ticker IN ('SPY', 'AAPL', 'NVDA')
  AND sip_timestamp >= '2026-07-02 00:00:00' AND sip_timestamp < '2026-07-03 00:00:00'
GROUP BY ticker
ORDER BY indexOf(['SPY', 'AAPL', 'NVDA'], ticker)
自己執行這個查詢

先看 AAPL 這一列:開盤集合競價成交 323.3 千股,成交價為 $294.1,時間戳記為 09:30:00 ET。NVDA 的集合競價成交 690 千股,SPY 則為 122 千股。單計集合競價,AAPL 便占該交易日前五分鐘撮合股數的 17.4%(1856 千股);NVDA 為 13.8%,SPY 為 9.4%。但三者的全天成交股數分別僅為 0.43%、0.48% 與 0.21%,均不到百分之一的一半。

最後兩欄呈現首尾對照:AAPL 當日收盤集合競價成交 10.89 百萬股,為開盤成交量的 33.7 倍;NVDA 為 25.2 倍,SPY 為 13.5 倍。指數基金與以基準指數為依據的交易團隊會按官方收盤價進行交易,而這些交易集中於下午4點的收盤集合競價;早盤沒有相應的交易機制。收盤競價是當日最大的一筆交易,開盤競價則是官方交易日開始的地方。

為什麼官方開盤價可能不同於當天第一筆成交價?

競價撮合啟動時,股票通常已經交易數小時。盤前交易最早可於美東時間凌晨4:00開始,但這些成交紀錄都不會決定官方開盤價。下方這筆單列表涵蓋2026年7月1日至2日的 AAPL,並先進行交易時段檢查:SPY 在7月2日這個完整交易日中,確實產生了 390 根正規交易時段分鐘K線,而非僅憑假設認定交易時段完整。

查詢交易明細:AAPL開盤集合競價與其之前的所有成交,2026年7月1日至2日
SPY 7月2日交易時段 K線7月1日收盤成交筆數前收盤價開盤成交筆數集合競價價格集合競價(ET)隔夜跳空(%)首筆成交時間(ET)首筆成交價正式開盤前成交筆數開盤鈴至撮合成交筆數正式開盤訊息數掛牌場所開盤訊息數掛牌開盤訊息價差
3901294.381294.109:30:00.491313-0.104:00:00296.115832173210
每個數據背後的精確 SQL 語法
WITH
    (
        SELECT countIf(window_start >= toDateTime('2026-07-02 09:30:00', 'America/New_York') AND window_start < toDateTime('2026-07-02 16:00:00', 'America/New_York'))
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker = 'SPY' AND window_start >= toDateTime('2026-07-02 00:00:00', 'America/New_York') AND window_start < toDateTime('2026-07-03 00:00:00', 'America/New_York')
    ) AS bars_jul02,
    (
        SELECT argMax(sip_timestamp, (size, sip_timestamp))
        FROM global_markets.stocks_trades
        WHERE ticker = 'AAPL' AND sip_timestamp >= '2026-07-02 00:00:00' AND sip_timestamp < '2026-07-03 00:00:00' AND has(conditions, 17)
    ) AS auction_ts,
    (
        SELECT argMax(exchange, (size, sip_timestamp))
        FROM global_markets.stocks_trades
        WHERE ticker = 'AAPL' AND sip_timestamp >= '2026-07-02 00:00:00' AND sip_timestamp < '2026-07-03 00:00:00' AND has(conditions, 17)
    ) AS listing_exchange
SELECT
    bars_jul02 AS spy_session_bars_jul02,
    countIf(has(conditions, 8) AND sip_timestamp < '2026-07-02 00:00:00') AS jul01_close_print_count,
    toFloat64(argMaxIf(price, (size, sip_timestamp), has(conditions, 8) AND sip_timestamp < '2026-07-02 00:00:00')) AS prior_close_price,
    countIf(has(conditions, 17) AND sip_timestamp >= '2026-07-02 00:00:00') AS opening_print_count,
    toFloat64(argMaxIf(price, (size, sip_timestamp), has(conditions, 17) AND sip_timestamp >= '2026-07-02 00:00:00')) AS auction_price,
    formatDateTime(toTimeZone(auction_ts, 'America/New_York'), '%H:%i:%S.%f') AS auction_et,
    round(100 * (toFloat64(argMaxIf(price, (size, sip_timestamp), has(conditions, 17) AND sip_timestamp >= '2026-07-02 00:00:00')) - toFloat64(argMaxIf(price, (size, sip_timestamp), has(conditions, 8) AND sip_timestamp < '2026-07-02 00:00:00'))) / toFloat64(argMaxIf(price, (size, sip_timestamp), has(conditions, 8) AND sip_timestamp < '2026-07-02 00:00:00')), 2) AS overnight_gap_pct,
    formatDateTime(toTimeZone(minIf(sip_timestamp, sip_timestamp >= '2026-07-02 00:00:00' AND NOT hasAny(conditions, [15, 16, 38])), 'America/New_York'), '%H:%i:%S') AS first_trade_et,
    toFloat64(argMinIf(price, (sip_timestamp, sequence_number), sip_timestamp >= '2026-07-02 00:00:00' AND NOT hasAny(conditions, [15, 16, 38]))) AS first_trade_price,
    countIf(sip_timestamp >= '2026-07-02 00:00:00' AND sip_timestamp < auction_ts AND NOT hasAny(conditions, [15, 16, 38])) AS trades_before_official_open,
    countIf(sip_timestamp >= toDateTime('2026-07-02 09:30:00', 'America/New_York') AND sip_timestamp < auction_ts AND NOT hasAny(conditions, [15, 16, 38])) AS bell_to_cross_trades,
    countIf(has(conditions, 16) AND sip_timestamp >= '2026-07-02 00:00:00') AS official_open_msgs,
    countIf(has(conditions, 16) AND sip_timestamp >= '2026-07-02 00:00:00' AND exchange = listing_exchange) AS listing_venue_open_msgs,
    round(toFloat64(anyIf(price, has(conditions, 16) AND sip_timestamp >= '2026-07-02 00:00:00' AND exchange = listing_exchange)) - toFloat64(argMaxIf(price, (size, sip_timestamp), has(conditions, 17) AND sip_timestamp >= '2026-07-02 00:00:00')), 4) AS listing_open_msg_price_difference
FROM global_markets.stocks_trades
WHERE ticker = 'AAPL' AND sip_timestamp >= '2026-07-01 00:00:00' AND sip_timestamp < '2026-07-03 00:00:00'
自己執行這個查詢

AAPL 在7月2日第一筆計入成交量的成交,於美東時間 04:00:00 以 $296.1 成交。直到美東時間 09:30:00.491313,官方開盤價才正式確立;當時競價撮合以 $294.1 成交。此時盤面上已經有 15832 筆 AAPL 成交紀錄,其中包括在9:30:00.000與競價撮合之間不到一秒內完成的 173 筆成交。這些是其他交易場所於開盤鐘響時開始撮合的連續交易。稍後出現 2 則「Market Center Official Open」訊息(成交條件 16),代表各市場中心對自身官方開盤價的紀錄,不會增加成交量;掛牌交易所發布的訊息則完全重複競價價格,差異為 0

這筆單列表也衡量了隔夜跳空。AAPL 前一日官方收盤價,即7月1日最後一筆、確切的 1 收盤成交,為 $294.38;隔日上午競價以 $294.1 成交,隔夜變動為 -0.1%。夜間市場平靜,因此跳空幅度不大。若財報或新聞在隔夜公布,盤前交易會先反映價格;競價則將這一變動正式記錄為官方開盤價。

開盤集合競價如何運作?開盤市價單與開盤限價單

有兩種專用委託類型會參與開盤集合競價,其功能類似收盤端的對應委託:

  • 開盤市價單(market-on-open,MOO)會以集合競價決定的任何價格成交,不提供價格保護,但幾乎可以確定參與正式開盤。
  • 開盤限價單(limit-on-open,LOO)只有在開盤價等於或優於指定限價時才會參與集合競價,具備價格保護,但可能無法成交。

這兩類委託都會留在交易所,直到集合競價撮合完成。在此之前,不會於盤前交易時段成交。交易所通常會在9:30前不久停止接受或修改開盤委託,但各交易所的截止時間不同,許多券商也會設定更早的截止時間。

什麼是開盤集合競價失衡?

開盤前,交易所會公布開盤失衡資料,包括排隊買進與賣出的股數,以及當下若進行集合競價撮合,可能達成成交的指示價格。買方失衡達一百萬股,表示截至目前有一百萬股開盤買進委託尚未找到對手方。盤前交易者會觀察這些資料,並據此調整部位。

9:30分K線也不是官方開盤價

多數圖表平台會將開盤價納入第一根一分鐘K線:該K線涵蓋9:30:00.000至9:30:59.999期間、所有交易場所的成交資料,包括集合競價以及將近一分鐘的連續交易。這根K線的「開盤價」是該時間窗口內擷取到的第一筆成交價,不一定是集合競價價格。

查詢9:30時段與12:30時段:SPY、AAPL、NVDA,2026年7月2日
股票代號09:30 K線開盤價正式開盤價K線開盤價減正式開盤價(美分)09:30 K線成交量(千股)09:30 K線成交筆數12:30 K線成交量(千股)09:30/12:30 倍數
SPY747.4747.221847986321333.6
AAPL294.12294.12743146621216.1
NVDA197.14197.1221688363192267.5
每個數據背後的精確 SQL 語法
WITH auctions AS (
    SELECT ticker, toFloat64(argMax(price, (size, sip_timestamp))) AS official_open
    FROM global_markets.stocks_trades
    WHERE ticker IN ('SPY', 'AAPL', 'NVDA')
      AND sip_timestamp >= '2026-07-02 00:00:00' AND sip_timestamp < '2026-07-03 00:00:00'
      AND has(conditions, 17)
    GROUP BY ticker
)
SELECT
    b.ticker AS ticker,
    toFloat64(anyIf(b.open, b.window_start = toDateTime('2026-07-02 09:30:00', 'America/New_York'))) AS bar_0930_open,
    a.official_open AS official_open,
    round(100 * (toFloat64(anyIf(b.open, b.window_start = toDateTime('2026-07-02 09:30:00', 'America/New_York'))) - a.official_open), 0) AS bar_open_minus_official_cents,
    round(sumIf(b.volume, b.window_start = toDateTime('2026-07-02 09:30:00', 'America/New_York')) / 1e3) AS bar_0930_vol_k,
    anyIf(b.transactions, b.window_start = toDateTime('2026-07-02 09:30:00', 'America/New_York')) AS bar_0930_trades,
    round(sumIf(b.volume, b.window_start = toDateTime('2026-07-02 12:30:00', 'America/New_York')) / 1e3) AS bar_1230_vol_k,
    round(sumIf(b.volume, b.window_start = toDateTime('2026-07-02 09:30:00', 'America/New_York')) / sumIf(b.volume, b.window_start = toDateTime('2026-07-02 12:30:00', 'America/New_York')), 1) AS x_0930_vs_1230
FROM global_markets.delayed_stocks_minute_aggs AS b
INNER JOIN auctions AS a ON a.ticker = b.ticker
WHERE b.ticker IN ('SPY', 'AAPL', 'NVDA')
  AND b.window_start >= toDateTime('2026-07-02 00:00:00', 'America/New_York')
  AND b.window_start < toDateTime('2026-07-03 00:00:00', 'America/New_York')
GROUP BY b.ticker, a.official_open
ORDER BY indexOf(['SPY', 'AAPL', 'NVDA'], b.ticker)
自己執行這個查詢

7月2日,三個9:30分K線的開盤價都高於官方開盤價:AAPL的K線顯示為$294.12,官方開盤價則為$294.1,兩者相差2美分;SPY高於其官方開盤價18美分,NVDA則高出2美分。另一個交易場所的競價前成交先被納入每根K線;當圖表上的開盤價與官方開盤價相差幾美分時,通常就是這個機制造成的。

成交量欄顯示第一分鐘的成交權重。AAPL的9:30分K線成交量為743千股,分布於14662筆交易,為12:30午盤K線121千股成交量的6.1倍;NVDA的比率為7.5倍,SPY則為3.6倍。成交量如此龐大的分鐘K線,會對VWAP(成交量加權平均價)產生實質影響。

開盤前後的全天交易概況如何?

將 AAPL 7月2日全天的逐筆成交資料,按每64 15分鐘分箱,從凌晨4:00統計至晚上8:00,可看出開盤初段在全天中的位置:盤前各時段的成交量幾乎不顯著,9:30成交量大幅上升,接近午盤時逐步轉淡,並在收盤前再次增加。當天最後以一筆10.89百萬股 AAPL 的交叉交易作收,與開盤時的情況相呼應。

查詢AAPL每15分鐘成交量,2026年7月2日:盤前至盤後(ET)
64 rows (showing 20)
ET 時間股數(百萬股)
04:000.1
04:150.01
04:300
04:450
05:000.01
05:150
05:300.01
05:450.01
06:000.01
06:150.01
06:300.01
06:450
07:000.02
07:150.01
07:300.01
07:450.01
08:000.02
08:150.02
08:300.04
08:450.03
每個數據背後的精確 SQL 語法
SELECT
    formatDateTime(toStartOfInterval(toTimeZone(window_start, 'America/New_York'), INTERVAL 15 MINUTE), '%H:%i') AS et_time,
    round(sum(volume) / 1e6, 2) AS shares_m
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'AAPL'
  AND window_start >= toDateTime('2026-07-02 00:00:00', 'America/New_York')
  AND window_start < toDateTime('2026-07-03 00:00:00', 'America/New_York')
GROUP BY et_time
ORDER BY et_time
自己執行這個查詢

如何辨識開盤競價成交?成交條件代碼

哪一筆成交屬於競價成交?交易帶本身會給出答案;代碼字典也在同一份資料中提供,以下收據是查詢結果,而非主張。

查詢交易紀錄對開盤的原始標籤,直接取自代碼字典
nameid計入成交量
Closing Prints81
Market Center Official Close150
Market Center Official Open160
Market Center Opening Trade171
Corrected Consolidated Close (per listing market)380
每個數據背後的精確 SQL 語法
SELECT
    name,
    id,
    toUInt8(JSONExtractBool(update_rules, 'consolidated', 'updates_volume')) AS counts_toward_volume
FROM global_markets.stocks_condition_codes
WHERE asset_class = 'stocks' AND type = 'sale_condition' AND id IN (8, 15, 16, 17, 38)
ORDER BY id
自己執行這個查詢

其中一項不對稱性很重要。收盤成交只有一個整合標籤(代碼 8,「Closing Prints」);開盤成交的標籤則按交易場所區分:代碼 17,「Market Center Opening Trade」,會標示各市場中心自己的開盤成交,而掛牌交易所的那一筆就是競價成交。SPY 7月2日的交易帶有 2 筆此類成交,包括 122 千股的交叉成交,以及另一交易場所的一筆 4 股成交;AAPL 與 NVDA 則各有一筆(分別為 11),全部發生在9:30:00這一秒內(open_prints_at_0930 欄位可確認時間)。上述每個競價成交數字,都是該交易時段中此類成交的最大筆數。代碼 16,「Market Center Official Open」,是沒有成交量的行政回聲(成交量欄顯示 0),因此與代碼 1538 一樣,均排除在所有分母之外。

開盤競價常見問答

開盤競價在什麼時間進行?

美東時間上午9:30,與正常交易時段同步開始;流動性較低的股票可能在稍後幾個瞬間才撮合。2026年7月2日,SPY、AAPL 與 NVDA 的撮合時間均精確記錄為美東時間 09:30:00。預定提前收市日會縮短下午交易時段,而非上午時段;收盤競價會改在下午1:00進行,詳見市場假日與提前收市

什麼是官方開盤價?

官方開盤價是股票上市交易所開盤競價的成交價格。2026年7月2日,AAPL 的撮合價格為$294.1,即當日官方開盤價,儘管當日上午較早時間已有 15832 筆 AAPL 成交。

我可以參與開盤競價交易嗎?

可以。多數券商都提供市價開盤(MOO)與限價開盤(LOO)委託:MOO 會以競價決定的任何價格成交;LOO 只有在限價或更有利的價格下才會撮合。許多券商會在上午9:30前不久停止接受委託,部分券商的截止時間更早。

為什麼股票開盤價與昨日收盤價相差很大?

交易所關閉期間,委託會持續累積;開盤競價則以一筆成交撮合這些累積的買賣需求。若隔夜市場平靜,價差通常不大:AAPL 在2026年7月2日的隔夜變動為 -0.1%。

開盤競價的成交量是否大於收盤競價?

不是,收盤競價的成交量大得多。2026年7月2日,AAPL 的收盤撮合量是開盤撮合量的 33.7 倍,NVDA 為 25.2 倍,SPY 為 13.5 倍。追蹤基準的資金會在官方收盤價成交,收盤競價涵蓋了這一端的訂單簿。


以上每項數據均來自可儲存且可檢視的查詢。展開任何面板下方的 SQL,即可進行稽核。若要拆解你所追蹤股票的開盤撮合,請在 Strasmore terminal 以自然語言提出相同問題。

#market structure#auctions#volume