什么是买卖价差?真实交易成本
了解买卖价差的定义、计算方法和每笔交易成本,并查看基于美国股票逐笔报价数据测得的真实价差,掌握即时成交为何会产生隐性成本。
买卖价差是指当前买方愿意为股票支付的最高价格(买价)与卖方愿意接受的最低价格(卖价)之间的差额。它是交易中固有的成本:按卖价买入、按买价卖出,差额由提供报价的一方获得。本页所有价差数据均基于逐笔报价数据计算,每个数字均附有对应的精确查询。
什么是买卖价差?通俗定义
在交易日的任何时刻,一只股票都有两个价格,而不是一个。买价是市场上买方愿意支付的最高价格。卖价有时也称为报价,是市场上卖方愿意接受的最低价格。买卖价差就是两者之间的差额。
举例来说,假设一只股票的买价为20.00美元、卖价为20.05美元,那么价差就是5美分。想立即买入的人须支付20.05美元;想立即卖出的人只能收到20.00美元。这5美分不是券商佣金,而是即时成交的价格。它由报价另一侧的交易者赚取。最常见的是专业做市商,其整个交易时段都会在买价买入、在卖价卖出。
在美国股票市场,所有交易所的最佳买价和最佳卖价会合并为全国最佳买卖报价,即NBBO。券商App显示的就是这一报价,本文测量的也是这项数据。(在金融市场中,“spread”也可表示其他差额:2s10s利差指的是美国国债收益率之间的差额,而不是股票价格之间的差额。)
买价与卖价:如何解读股票报价
下面是 Apple 的一条真实 NBBO 记录,也是我们数据窗口中的最后一条报价,来自综合行情源。
| 股票 | 买入价 | 卖出价 | 价差 | 中间价 | 价差百分比 | 报价时间(ET) |
|---|---|---|---|---|---|---|
| AAPL | 340.71 | 340.81 | 0.10 | 340.76 | 0.029 | 2026-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:美分、百分比和基点
同一价差可以用三种方式表示:
- 美元和美分。 价差=卖价减买价。计算简单,但难以比较不同股价的股票。
- 百分比。 价差÷中间价×100。20美元股票的五美分价差相当于股价的0.25%;200美元股票的同样五美分价差则相当于0.025%。
- 基点(bps)。 即百分之一个百分点,是专业市场的常用表示方式。将百分比乘以100:0.25%等于25个基点。
应用于上文真实的 Apple 报价:$0.10 ÷ $340.76 得出该价差占股价的0.029%。这是盘后交易数据,但仍明显低于股价的1%。
窄价差与宽价差:流动性高与流动性低股票的真实数据
多数科普文章只会说“流动性高的股票价差较窄”。下面是这一差异的实际幅度,数据覆盖近期连续多日窗口内的每一次 NBBO 更新。表格将六只交易活跃的股票与两只真正流动性低的小盘股进行对比:Pro-Dex(PDEX)和 Seneca Foods(SENEA)。“典型值”指该窗口内报价的中位数。最后一列将价差换算为买卖各 100 股往返交易的成本;每股美分数与每 100 股的美元数相同。
| ticker | 典型价差(美分) | 典型价差(基点) | 100股价差成本 |
|---|---|---|---|
| SPY | 2 | 0.3 | 2.00 |
| AAPL | 4 | 1.2 | 4.00 |
| NVDA | 2 | 0.9 | 2.00 |
| MSFT | 7 | 1.3 | 7.00 |
| KO | 1 | 1.1 | 1.00 |
| TSLA | 6 | 1.6 | 6.00 |
| PDEX | 101 | 162.5 | 101.00 |
| SENEA | 132 | 72.7 | 132.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分钟时间段(美国东部时间)追踪了同一时间窗口内苹果的报价中位点差,并纳入延长交易时段,展示了许多解读文章经常提及却从未呈现的规律。
| ET时间 | 价差中位数(美分) |
|---|---|
| 04:00 | 32 |
| 04:30 | 25 |
| 05:00 | 21 |
| 05:30 | 15 |
| 06:00 | 16 |
| 06:30 | 17 |
| 07:00 | 17 |
| 07:30 | 13 |
| 08:00 | 14 |
| 08:30 | 20 |
| 09:00 | 16 |
| 09:30 | 6 |
| 10:00 | 5 |
| 10:30 | 4 |
| 11:00 | 3 |
| 11:30 | 4 |
| 12:00 | 3 |
| 12:30 | 3 |
| 13:00 | 3 |
| 13:30 | 3 |
每个数字背后的完整 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:00 | 32 |
| 09:30 | 6 |
| 13:00 | 3 |
| 16:00 | 16 |
每个数字背后的完整 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_time04: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终端中用英语直接提出相同问题。