Strasmore Research
学习 Matt Connor作者: Matt Connor · 更新于 2026-08-01

什么是开盘集合竞价?股票如何开盘

了解开盘集合竞价如何通过东部时间上午9:30的一次集中撮合,确定每只股票的官方开盘价,以及为何开盘价可能不同于当日首笔成交价。

开盘集合竞价是东部时间上午 9:30 的一次集中撮合交易,用于确定每只股票的官方开盘价。开盘铃响前,上市交易所汇总所有标记为开盘交易的订单,计算出能够撮合最多股票的单一价格,并通过一笔成交一次性执行全部订单。这是结束当日交易的收盘集合竞价在早晨的对应环节。以下所有数字均来自合并行情系统,即记录每笔美国股票交易的公开数据库;每个图表均附有完整的 SQL 查询。

什么是开盘集合竞价?通俗定义

交易所并不是在9:30简单开市,然后逐笔撮合订单。在隔夜时段和盘前交易期间,上市交易所会汇集指定在开盘时执行的订单,以及簿记系统中尚未成交且符合条件的限价单。开盘铃响时,交易所会以一个价格将全部订单一次性撮合成交。这笔成交带有专属的成交条件标签(代码 17,“Market Center Opening Trade”,收据见最后一个面板),其价格成为官方开盘价:即当日价格记录中的“开盘价”,也是“跳空高开”和“跳空低开”所依据的参考价格。集合竞价与连续交易属于同一条行情记录;开盘铃响时改变的是交易机制。

真实成交记录中的开盘集合竞价:SPY、AAPL、NVDA

下方面板选取了2026年7月2日这一完整且已核验的交易日(下一面板提供凭证),并将SPY、AAPL和NVDA的开盘集合竞价规模与当日其余交易进行比较。“匹配成交量”仅统计成交记录计入合并成交量的股票数量;行政消息(成交条件 151638)不计入任何分母。

查询开盘集合竞价与其余交易时段对比:SPY、AAPL、NVDA,2026年7月2日
股票代码竞价股数 k竞价价格竞价时间 ET开盘成交笔数0930 开盘成交最小开盘成交股数前5分钟股数 k竞价占前5分钟比例竞价占全天比例收盘竞价股数 m收盘/开盘倍数
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,并先进行交易时段核验:7 月 2 日,SPY 正好有 390 根常规交易时段分钟线,这是一个完整交易日,经过核实而非推定。

查询交易凭证: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%。夜间市场平静,跳空幅度较小。如果财报或新闻在隔夜发布,盘前交易会先行重新定价;开盘竞价则将这一变动写入官方记录。

开盘集合竞价如何运作?开盘市价单和开盘限价单

两种专用订单类型参与开盘集合竞价,与收盘侧的对应订单相似:

  • 开盘市价单(MOO)按集合竞价确定的价格成交,不提供价格保护,几乎可以确保参与官方开盘价成交。
  • 开盘限价单(LOO)只有在开盘价达到或优于其限价时才参与集合竞价,具备价格保护,但也存在无法参与撮合的风险。

这两类订单都会留在交易所,直到集合竞价撮合完成。在此之前,它们不会在盘前交易时段成交。各交易所通常会在9:30前不久停止接受或修改开盘订单,具体截止时间因交易所而异。许多券商设定的截止时间更早。

什么是开盘集合竞价失衡?

临近开盘时,交易所会公布开盘失衡数据:排队买入的股票数量与排队卖出的股票数量,以及当时撮合成交所对应的指示性价格。买方失衡达到一百万股,意味着截至当时有一百万股买入订单尚未找到匹配的卖出订单。盘前交易者会关注这些数据,并据此调整仓位。

9:30分钟K线也不是官方开盘价

大多数图表平台会将开盘价纳入第一根一分钟K线:该K线涵盖9:30:00.000至9:30:59.999期间、所有交易场所的成交,包括集合竞价以及接近一分钟的连续交易。其“开盘价”是时间窗口内记录到的第一笔成交价,不一定是集合竞价成交价。

查询9:30时段与12:30时段对比:SPY、AAPL、NVDA,2026年7月2日
股票代码0930 K线开盘价正式开盘K线开盘价减正式开盘价(美分)0930 K线成交量 k0930 K线交易笔数1230 K线成交量 k0930/1230 倍数
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倍。成交量如此巨大的分钟具有重要权重,尤其是在计算成交量加权平均价格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 时间股数 m
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 终端中用普通英语提出同样的问题。