什么是买卖价差及其成本
深入了解买卖价差的定义与计算方法,通过 AAPL 等美股真实报价数据,揭示交易中的隐形成本。
买卖价差是指买方最高出价(买入价)与卖方最低要价(卖出价)之间的差额。这是交易的内置成本:以卖出价买入,以买入价卖出,差额归报价提供方所有。本页面上的所有价差数据均基于逐笔报价数据计算,每个数值均附有具体的查询逻辑。
什么是买卖价差?通俗定义
在交易日的任何时刻,一只股票都有两个价格,而非一个价格。买入价(Bid)是当前的最佳买入报价。卖出价(Ask,有时也称为 Offer)是当前的最佳卖出报价。买卖价差(Bid-ask spread)即两者之间的差额。
举例说明:假设某只股票的报价为买入价 $20.00 / 卖出价 $20.05,则价差为 5 美分。任何想要立即买入的人需支付 $20.05;任何想要立即卖出的人将收到 $20.00。这 5 美分并非经纪费,而是为实现即时成交而支付的成本。这笔钱归交易对手方所有,对方通常是 做市商,他们在整个交易时段内随时准备按买入价买入并按卖出价卖出。
在美国股票市场中,所有交易所的最佳买入价和最佳卖出价会被整合为统一的全国最佳买卖报价(NBBO)。您的经纪应用显示的即是该报价,本文衡量的数据也基于此。(在金融领域,“价差”也用于描述其他差异:例如 2s10s 价差 指的是国债收益率之间的差异,而非股票价格。)
买入价与卖出价:如何解读股票报价
以下是 Apple 的真实 NBBO 记录。这是我们从整合数据源中提取的窗口内最后一条报价。
每个数字背后的完整 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
)请从左至右阅读:最佳买入价为 $334.75,最佳卖出价为 $334.81,买卖价差(卖出价减去买入价)为 $0.06,时间戳为 2026-07-16 19:59 ET。中间价为 $334.78,位于两者正中间,通常作为该时刻股票公允价值的参考。
值得注意的一个细节:该报价出现在盘后交易接近尾声时,距离收盘已过去数小时。时间对价差影响很大——下方的日内图表展示了具体差异。
如何计算价差:美分、百分比与基点
相同的价差可以通过三种方式表示:
- 美元与美分。 价差 = 卖价减去买价。这种方式简单,但难以比较不同股价的股票。
- 百分比。 价差 ÷ 中间价 × 100。对于 20 美元的股票,5 美分的价差占股价的 0.25%;而对于 200 美元的股票,同样的 5 美分仅占 0.025%。
- 基点 (bps)。 百分之一百分比——这是专业惯例。将百分比乘以 100:0.25% 等于 25 bps。
应用于上述 Apple 的实际报价:$0.06 ÷ $334.78 等于股价的 0.018% ——这是盘后数据,且远低于股价的 1%。
价差宽窄对比:高流动性与低流动性股票的真实数据
大多数解释仅停留在“高流动性股票的价差较窄”这一层面。本文通过近期多日窗口内的每一次 NBBO 更新,展示了两者之间的实际差距。下表将六只高交易量股票与两只真正的低流动性小盘股进行了对比——分别是 Nathan's Famous (NATH) 和 Seneca Foods (SENEA)。“典型值”指该窗口内的报价中位数;最后一列将价差换算为每 100 股往返交易的美元金额——每股分值与每 100 股美元金额数值相同。
每个数字背后的完整 SQL
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 global_markets.cache_stocks_quotes
WHERE ticker IN ('SPY', 'AAPL', 'NVDA', 'MSFT', 'KO', 'TSLA', 'NATH', 'SENEA')
AND sip_timestamp >= now() - INTERVAL 7 DAY
AND bid_price > 0
AND ask_price > bid_price
GROUP BY ticker
)
ORDER BY indexOf(['SPY', 'AAPL', 'NVDA', 'MSFT', 'KO', 'TSLA', 'NATH', 'SENEA'], ticker)在高流动性股票中,SPY 的典型报价价差为 2¢(占股价的 0.3 bps),Coca-Cola 为 1¢(1.2 bps),Tesla 为 9¢(2.3 bps)。随后差距剧增:Nathan's Famous 为 71¢(70.5 bps),Seneca Foods 为 230¢(133.3 bps)。市场规则相同,区别在于流动性:即在同一时间内,每只股票中有多少买家、卖家和做市商在进行竞争。
实际交易中的价差成本
评估价差的一种有效方法是计算往返交易的成本:以卖出价买入,并在瞬间以买入价卖出,每股都会损失全部价差。对于 100 股的转换结果已见上表——每股典型的价差(美分)与总成本(美元)数值相同。对于知名股票,该成本极低:100 股 Apple 的成本为 $4.00,Coca-Cola 为 $1.00。流动性较差的股票成本则不同——在计入佣金及订单对价格的影响之前,Nathan's Famous 的成本为 $71.00,Seneca Foods 为 $230.00。上述数据假设订单按报价成交;若订单规模超过挂单量,成本可能会更高。
价差扩大时:开盘、收盘与盘后
价差在全天并非固定不变。下图追踪了 Apple 在同一时间窗口内的 30 分钟时间段(东部时间)中值报价价差,包含盘前盘后时段。大多数解释性文章都声称存在这种模式,但从未展示过。
每个数字背后的完整 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 型:开盘前价差较宽,日内交易期间价差极小,收盘后再次扩大。以下是该曲线中由具体时间点确定的四个关键点:
每个数字背后的完整 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 的盘前时段(全天第一个时段),Apple 的中值价差为 34¢。在 09:30 的时段(常规交易的前半小时),价差降至 7¢;13:00 的午后时段为 4¢。16:00 时段随 收盘竞价 一同开始,价差跳升至 15¢,且该缺口在整个晚间保持在高位——在交易日的最后一个时段为 15¢。在常规交易时段(东部时间上午 9:30 至下午 4:00)内,数十家做市商会同时对该股票进行报价;而在这些时段之外——即 盘后与盘前交易 期间——报价竞争者大幅减少,导致价差更宽。
影响买卖价差宽窄的因素
买卖价差收窄通常与以下四个因素相关:
- 竞争程度。 做市商数量越多、挂单量越大,买卖报价就越接近。交易清淡的股票可能仅由单一报价者决定市场价格。
- 成交量。 上表显示,高成交量通常伴随着窄价差;热门股的价差仅为清淡股票价差的一小部分。
- 波动率。 在剧烈波动的市场中,报价会频繁调整,价差往往会随之扩大,直到交易趋于平稳。
- 股价与最小报价单位(Tick Size)。 美国股价超过 1 美元的股票以 0.01 美元为报价增量,且 0.01 美元是最低限度;流动性极高的低价股全天大部分时间都维持在该价差水平。对于低价股而言,这 0.01 美元的最小增量占每股价格的比例更高。
如何降低价差成本
- 使用限价单指定价格。 市价单按报价成交;限价单仅在指定价格或更优价格成交。在买入价(Bid)挂单的买单可以赚取价差,而非在卖家匹配时支付价差——代价是订单可能无法成交。
- 交易时段内的高流动性品种成本最低。 上方的日内图表展示了规模:流动性良好的股票在午间时段价差最窄。
- 基点(Basis points)揭示了分币所掩盖的成本。 如上方的微盘股行所示,听起来微不足道的价差,对于流动性不足或低价股而言,可能是具有意义的百分比。
- 减少往返交易可降低总成本。 每一次往返交易都会支付一次价差;总成本随持仓周转率的提高而增加。
买卖价差常见问题解答
什么样的买卖价差是理想的?
目前没有官方标准,但上表提供了参考:在统计窗口内,SPY 的典型价差占股价的 0.3 bps,Tesla 为 2.3 bps,而流动性较差的小盘股价差则达到 70.5 和 133.3 bps。个位数基点(bps)属于紧凑价差;若价差超过股价约 1%,则使用限价单会更具优势。
谁赚取买卖价差?
报价的提供方(通常是 做市商)在报价的两端均成交时赚取价差。这是对其随时准备交易的补偿,而非经纪商或交易所收取的费用。
买卖价差过大是好事还是坏事?
买卖价差过大会增加您的往返交易成本,如上表中 100 股成本列所示。宽价差还传递了市场信息:报价参与者较少,且最后成交价对您订单的实际成交价参考价值较低。
为什么卖出价(Ask)高于买入价(Bid)?
这是市场机制决定的。买入价是买方愿意支付的最佳价格,卖出价是卖方愿意接受的最佳价格;一旦两者匹配,交易所会立即撮合交易并更新报价。因此,挂单的卖出价始终等于或高于买入价。
买卖价差对长期投资者重要吗?
其重要性低于活跃交易者。数据表明:SPY 每 100 股往返交易的典型价差成本为 $2.00。每十年支付一次此类成本可以忽略不计;但如果每周都要支付流动性较差股票的价差,累积起来将是一笔巨大的开支。
以上所有数据均由可审计的查询生成——您可以展开任何面板下的 SQL 语句进行审计。若要测量您持仓股票的价差,请在 Strasmore 终端使用英文进行查询。