Strasmore Research
学习 Matt Connor作者: Matt Connor · 更新于 2026-10-17 · data as of October 17, 2026 · refreshed weekly

什么是买卖价差?真实交易成本

了解买卖价差的定义、计算方法和每笔交易成本,并查看基于美国股票逐笔报价数据测得的真实价差,掌握即时成交为何会产生隐性成本。

买卖价差是指当前买方愿意为股票支付的最高价格(买价)与卖方愿意接受的最低价格(卖价)之间的差额。它是交易中固有的成本:按卖价买入、按买价卖出,差额由提供报价的一方获得。本页所有价差数据均基于逐笔报价数据计算,每个数字均附有对应的精确查询。

什么是买卖价差?通俗定义

在交易日的任何时刻,一只股票都有两个价格,而不是一个。买价是市场上买方愿意支付的最高价格。卖价有时也称为报价,是市场上卖方愿意接受的最低价格。买卖价差就是两者之间的差额。

举例来说,假设一只股票的买价为20.00美元、卖价为20.05美元,那么价差就是5美分。想立即买入的人须支付20.05美元;想立即卖出的人只能收到20.00美元。这5美分不是券商佣金,而是即时成交的价格。它由报价另一侧的交易者赚取。最常见的是专业做市商,其整个交易时段都会在买价买入、在卖价卖出。

在美国股票市场,所有交易所的最佳买价和最佳卖价会合并为全国最佳买卖报价,即NBBO。券商App显示的就是这一报价,本文测量的也是这项数据。(在金融市场中,“spread”也可表示其他差额:2s10s利差指的是美国国债收益率之间的差额,而不是股票价格之间的差额。)

买价与卖价:如何解读股票报价

下面是 Apple 的一条真实 NBBO 记录,也是我们数据窗口中的最后一条报价,来自综合行情源。

查询AAPL:数据窗口内最后记录的NBBO报价
股票买入价卖出价价差中间价价差百分比报价时间(ET)
AAPL340.71340.810.10340.760.0292026-10-15 19:59
每个数字背后的完整 SQL
SELECT stock,
       toDecimalString(bid, 2) AS bid_price,
       toDecimalString(ask, 2) AS ask_price,
       toDecimalString(ask - bid, 2) AS spread,
       toDecimalString((ask + bid) / 2, 2) AS midpoint_price,
       round((ask - bid) / ((ask + bid) / 2) * 100, 3) AS spread_pct,
       quote_time_et
FROM (
    SELECT ticker AS stock,
           argMax(toFloat64(bid_price), sip_timestamp) AS bid,
           argMax(toFloat64(ask_price), sip_timestamp) AS ask,
           formatDateTime(toTimeZone(max(sip_timestamp), 'America/New_York'), '%Y-%m-%d %H:%i') AS quote_time_et
    FROM global_markets.cache_stocks_quotes
    WHERE ticker = 'AAPL'
      AND sip_timestamp >= now() - INTERVAL 7 DAY
      AND bid_price > 0
      AND ask_price > bid_price
    GROUP BY ticker
)
自己运行这个查询

从左向右看:最佳买价为 $340.71,最佳卖价为 $340.81;卖价减去买价所得的价差为 $0.10,时间戳为 2026-10-15 19:59 ET。中间价为 $340.76,位于两者正中,通常用作该时点股票公允价值的参考。

还有一点值得注意:这条报价出现在延长交易时段接近尾声时,距离收盘铃响已有数小时。时间会影响价差;下文的日内走势图将进一步展示这种影响。

如何计算spread:美分、百分比和基点

同一价差可以用三种方式表示:

  1. 美元和美分。 价差=卖价减买价。计算简单,但难以比较不同股价的股票。
  2. 百分比。 价差÷中间价×100。20美元股票的五美分价差相当于股价的0.25%;200美元股票的同样五美分价差则相当于0.025%。
  3. 基点(bps)。 即百分之一个百分点,是专业市场的常用表示方式。将百分比乘以100:0.25%等于25个基点。

应用于上文真实的 Apple 报价:$0.10 ÷ $340.76 得出该价差占股价的0.029%。这是盘后交易数据,但仍明显低于股价的1%。

窄价差与宽价差:流动性高与流动性低股票的真实数据

多数科普文章只会说“流动性高的股票价差较窄”。下面是这一差异的实际幅度,数据覆盖近期连续多日窗口内的每一次 NBBO 更新。表格将六只交易活跃的股票与两只真正流动性低的小盘股进行对比:Pro-Dex(PDEX)和 Seneca Foods(SENEA)。“典型值”指该窗口内报价的中位数。最后一列将价差换算为买卖各 100 股往返交易的成本;每股美分数与每 100 股的美元数相同。

查询典型报价价差:6只高流动性股票与2只流动性低的小盘股,含100股成本
ticker典型价差(美分)典型价差(基点)100股价差成本
SPY20.32.00
AAPL41.24.00
NVDA20.92.00
MSFT71.37.00
KO11.11.00
TSLA61.66.00
PDEX101162.5101.00
SENEA13272.7132.00
每个数字背后的完整 SQL
WITH early AS (
    SELECT date AS d,
           any(toHour(toTimeZone(close, 'America/New_York')) * 60
               + toMinute(toTimeZone(close, 'America/New_York'))) AS close_min
    FROM global_markets.stocks_market_holidays
    WHERE status = 'early-close'
    GROUP BY date
),
closed AS (
    SELECT DISTINCT date AS d
    FROM global_markets.stocks_market_holidays
    WHERE status = 'closed'
)
SELECT ticker,
       round(median_spread_usd * 100, 1) AS typical_spread_cents,
       round(median_spread_bps, 1) AS typical_spread_bps,
       toDecimalString(median_spread_usd * 100, 2) AS spread_cost_100_shares
FROM (
    SELECT ticker,
           quantileDeterministic(0.5)(toFloat64(ask_price - bid_price), toUInt64(sip_timestamp)) AS median_spread_usd,
           quantileDeterministic(0.5)(toFloat64(ask_price - bid_price) / (toFloat64(ask_price + bid_price) / 2), toUInt64(sip_timestamp)) * 10000 AS median_spread_bps
    FROM (
        SELECT ticker, bid_price, ask_price, sip_timestamp,
               toDate(toTimeZone(sip_timestamp, 'America/New_York')) AS d,
               toHour(toTimeZone(sip_timestamp, 'America/New_York')) * 60
                 + toMinute(toTimeZone(sip_timestamp, 'America/New_York')) AS et_min
        FROM global_markets.cache_stocks_quotes
        WHERE ticker IN ('SPY', 'AAPL', 'NVDA', 'MSFT', 'KO', 'TSLA', 'PDEX', 'SENEA')
          AND sip_timestamp >= now() - INTERVAL 7 DAY
          AND bid_price > 0
          AND ask_price > bid_price
    ) AS q
    LEFT JOIN early AS e ON q.d = e.d
    WHERE q.d NOT IN (SELECT d FROM closed)
      AND q.et_min >= 570
      AND q.et_min < if(e.close_min > 0, e.close_min, 960)
    GROUP BY ticker
)
ORDER BY indexOf(['SPY', 'AAPL', 'NVDA', 'MSFT', 'KO', 'TSLA', 'PDEX', 'SENEA'], ticker)
自己运行这个查询

在流动性较高的股票中,SPY 的典型报价价差为 2 美分,占其股价的 0.3 个基点;Coca-Cola 为 1 美分(1.1 个基点),Tesla 为 6 美分(1.6 个基点)。随后价差明显扩大:Pro-Dex 为 101 美分(162.5 个基点),Seneca Foods 为 132 美分(72.7 个基点)。市场相同,规则相同,差异来自流动性:在同一时间参与各只股票交易的买方、卖方和做市商数量不同。

真实交易中的价差成本

理解价差成本的一种实用方法,是计算一次往返交易:以卖价买入,并在片刻后以买价卖出。这样,每股都会损失全部价差。买入100股时,上表已列出换算结果;每股以美分计的典型价差,对应的美元金额相同。对知名公司而言,这笔成本相当于一杯咖啡的钱:买入100股Apple的成本为$4.00,Coca-Cola为$1.00。成交清淡的股票成本则高得多:Pro-Dex为$101.00,Seneca Foods为$132.00,且这还未计佣金,也未考虑订单推动价格变动的影响。上述数字假设订单以显示的报价成交;如果订单规模超过显示的挂单数量,实际成交成本可能更高。

点差何时扩大:开盘、收盘及盘后交易

点差并非全天保持不变。下图按30分钟时间段(美国东部时间)追踪了同一时间窗口内苹果的报价中位点差,并纳入延长交易时段,展示了许多解读文章经常提及却从未呈现的规律。

查询AAPL按30分钟区间划分的报价价差中位数(东部时间,含延长交易时段)
32 rows (showing 20)
ET时间价差中位数(美分)
04:0032
04:3025
05:0021
05:3015
06:0016
06:3017
07:0017
07:3013
08:0014
08:3020
09:0016
09:306
10:005
10:304
11:003
11:304
12:003
12:303
13:003
13:303
每个数字背后的完整 SQL
SELECT formatDateTime(toStartOfInterval(toTimeZone(sip_timestamp, 'America/New_York'), INTERVAL 30 MINUTE), '%H:%i') AS et_time,
       round(quantileDeterministic(0.5)(toFloat64(ask_price - bid_price), toUInt64(sip_timestamp)) * 100, 1) AS median_spread_cents
FROM global_markets.cache_stocks_quotes
WHERE ticker = 'AAPL'
  AND sip_timestamp >= now() - INTERVAL 7 DAY
  AND bid_price > 0
  AND ask_price > bid_price
GROUP BY et_time
ORDER BY et_time
自己运行这个查询

图形呈U形,且两端较高:开盘前点差较大,日间中段仅几美分,收盘后再次扩大。沿着这条曲线,可按具体时间确定四个观察点:

查询同一曲线的四个时点:盘前、开盘、午盘、收盘
ET时间价差中位数(美分)
04:0032
09:306
13:003
16:0016
每个数字背后的完整 SQL
SELECT formatDateTime(toStartOfInterval(toTimeZone(sip_timestamp, 'America/New_York'), INTERVAL 30 MINUTE), '%H:%i') AS et_time,
       round(quantileDeterministic(0.5)(toFloat64(ask_price - bid_price), toUInt64(sip_timestamp)) * 100, 1) AS median_spread_cents
FROM global_markets.cache_stocks_quotes
WHERE ticker = 'AAPL'
  AND sip_timestamp >= now() - INTERVAL 7 DAY
  AND bid_price > 0
  AND ask_price > bid_price
GROUP BY et_time
HAVING et_time IN ('04:00', '09:30', '13:00', '16:00')
ORDER BY et_time
自己运行这个查询

04:00盘前交易时段是当天的第一个时间段,苹果的中位点差为32美分。09:30时间段是常规交易的第一个半小时,点差收窄至6美分;13:00的午后早段为3美分。16:00时间段从收盘铃响起时开始,同时进入收盘集合竞价,点差扩大至16美分;此后整个晚间仍处于较高水平,交易时段最后一个时间段为22美分。在常规交易时段(美国东部时间上午9:30至下午4:00),数十家做市商会同时为该股票报价;在盘后及盘前交易时段,参与竞争的报价大幅减少,因此点差更宽。

什么因素决定 spread 的宽窄

以下四个因素通常与较窄的 spread 同时出现:

  • 竞争。 做市商越多,股票中等待成交的订单越多,买卖两侧的报价通常越紧。一只交易清淡的股票可能只有一个活跃报价方主导整个市场。
  • 交易量。 上文表格显示,成交量大通常伴随较窄的 spread;交易活跃股票的价差仅为交易清淡股票价差的一小部分。
  • 波动率。 市场快速变动时,报价会不断重新定价。在交易恢复平稳前,买卖价差通常会维持在较宽水平。
  • 股价和最小变动单位。 股价高于 1 美元的美国股票以 1 美分为报价增量,1 美分也是最低价差。流动性最好的低价股在一天中的大部分时间里,价差都维持在这一最低水平。对低价股而言,同样的 1 美分占每股价格的比例更高。

如何降低spread成本

  • 限价单可以锁定成交价格。 市价单会按报价方提供的价格成交;限价单只有在指定价格或更优价格下才会成交。买单挂在买价处,等卖方主动来成交时,投资者可以赚取spread,而不是支付spread。代价是,订单可能始终无法成交。
  • 常规交易时段交易流动性高的标的,成本最低。 上方的日内走势图显示了差异:流动性高的股票在午盘时段spread最窄。
  • 用基点衡量,才能看出几分钱背后的成本。 对于价格较低或交易清淡的股票,听起来微不足道的价差可能已占股价的相当比例。上方的小盘股数据就体现了这一点。
  • 减少往返交易,承担的成本也会下降。 每次往返交易都会支付一次spread;总成本取决于持仓换手的频率。

买卖价差常见问题

什么样的买卖价差算合理?

没有官方统一标准,但上表可以提供尺度参考:在测量窗口内,SPY的典型价差约为股价的0.3个基点,Tesla为1.6个基点;成交清淡的小盘股则达到162.5和72.7个基点。个位数基点通常意味着价差较窄;当价差超过股价的约1%时,限价单的优势就会更加明显。

谁赚取买卖价差?

通常是提供报价的一方,即做市商。当其买卖两侧的报价都成交时,做市商就能赚取价差。这是其持续提供交易报价的补偿,并不是经纪商或交易所收取的费用。

买卖价差较大是好事还是坏事?

价差较大时,每次完整买卖的成本都会上升,上表中的100股成本一栏说明了这一点。较大的价差也传递出信息:提供报价的参与者较少,最近成交价对实际成交价格的参考价值也更低。

为什么卖价高于买价?

这是买卖报价的定义决定的。买价是买方愿意支付的最高价格,卖价是卖方愿意接受的最低价格;两者一旦相遇,交易所就会立即撮合成交,报价随之更新。持续存在的报价中,卖价总是高于或等于买价。

买卖价差对长期投资者重要吗?

其影响小于对活跃交易者的影响,数据也显示了这种差异:按100股计算,SPY一次完整买卖的典型价差成本为$2.00。十年才承担一次,这笔成本可以忽略;但如果每周交易低流动性股票,价差成本会不断累积,最终形成一笔实际金额不小的支出。


以上所有数字均来自可存储、可检查的查询。展开任意面板下方的SQL即可审查数据。若要测算自己持有的某个ticker的价差,可在Strasmore终端中用英语直接提出相同问题。