股票交易的真实成本:买卖价差测算
佣金为零并不代表交易免费。查看十二只热门股票和 ETF 的买卖价差成本,以基点衡量,并通过完整 SQL 了解每个数字的来源。
股票交易成本并未因佣金降至零而消失。每笔可成交订单仍需支付买卖价差,即买方愿意支付的最高价格与卖方愿意接受的最低价格之间的差额。交易者在买入和卖出时各承担一半。本页面基于逐笔报价数据,衡量十二只热门股票和 ETF 的这一成本(以基点计),并附上每个数字背后的完整 SQL。
佣金降至零,但价差没有消失
股票从来不只有一个价格,而是有两个。买价(bid)是当前最优买入报价;卖价(ask)是当前最优卖出报价。此刻交易就意味着跨越这段差距:市价买单按卖价成交,市价卖单按买价成交,而这部分差额由报价方获得。报价方通常是专业的做市商,在整个交易时段同时提供买卖双边报价。什么是买卖价差详细介绍了其运作机制;本页则对其进行定价。
一个假设示例可以直观说明计算过程。某股票的报价为买价20.00美元、卖价20.05美元,其中间价为20.025美元,通常可作为该时点公允价值的参考。市价买单按20.05美元成交,比中间价高出2.5美分,即报价宽度的一半。市价卖单按20.00美元成交,承担另一半价差。完成一次买入和卖出的往返交易后,每股的全部5美分都会被留下,而账单上不会出现任何佣金。
专业市场通常用基点(bp)衡量这项成本。一个基点等于百分之一的一个百分点。将价差表示为中间价的占比,可以把个位数美元的ETF与数百美元的ETF放在同一尺度上比较。这个指标揭示的差异,往往比多数零佣金交易者预期的更大。
交易成本阶梯:十二只标的的测算结果
下表列出十二只持有者广泛的股票和 ETF,并按报价 spread 中位数占中间价的百分比排序。数据涵盖每一次 NBBO 更新。NBBO 是所有美国交易所汇总后的最佳买价和卖价,也是券商应用显示的报价。统计时间窗口固定为 UTC 13:30–19:59,对应夏令时期间美东时间上午 9:30 至下午 4:00 的常规交易时段。表中反映的是本页面截至目前测量的所有窗口。窗口涵盖我们数据中最近完成的交易时段,并有意比今天提前几天结束,以排除任何尚未完整录入的交易日。缺少一侧报价,或卖价小于等于买价的更新,不计入中位数;这些更新会计入最后一列,而不会被静默剔除。
| ticker | 典型价差(基点) | 典型价差(美分) | 报价更新(百万) | 排除的更新比例 |
|---|---|---|---|---|
| SPY | 0.26 | 2 | 12 | 0.41 |
| IWM | 0.34 | 1 | 10 | 1.74 |
| QQQ | 0.42 | 3 | 19.3 | 0.24 |
| NVDA | 0.91 | 2 | 9.2 | 0.91 |
| AAPL | 0.94 | 3 | 3.7 | 0.87 |
| KO | 1.12 | 1 | 1.6 | 3.03 |
| MSFT | 1.77 | 9 | 1.3 | 0.44 |
| DIS | 1.88 | 2 | 0.6 | 0.57 |
| SOXS | 2.07 | 1 | 10.2 | 2.25 |
| TSLA | 2.18 | 8 | 2.2 | 0.54 |
| AMD | 4.91 | 23 | 0.9 | 0.07 |
| F | 7.19 | 1 | 0.5 | 4.07 |
每个数字背后的完整 SQL
SELECT ticker,
round(quantileExactIf(0.5)(toFloat64(ask_price - bid_price) / (toFloat64(ask_price + bid_price) / 2), bid_price > 0 AND ask_price > bid_price) * 10000, 2) AS typical_spread_bps,
round(quantileExactIf(0.5)(toFloat64(ask_price - bid_price), bid_price > 0 AND ask_price > bid_price) * 100, 1) AS typical_spread_cents,
round(count() / 1e6, 1) AS quote_updates_m,
round(100 * countIf(bid_price <= 0 OR ask_price <= 0 OR ask_price <= bid_price) / count(), 2) AS pct_updates_excluded
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('SPY', 'QQQ', 'IWM', 'AAPL', 'MSFT', 'NVDA', 'AMD', 'TSLA', 'KO', 'DIS', 'F', 'SOXS')
AND sip_timestamp >= toDateTime(today() - 10)
AND sip_timestamp < toDateTime(today() - 3)
AND (toHour(sip_timestamp) * 60 + toMinute(sip_timestamp)) BETWEEN 810 AND 1199
GROUP BY ticker
ORDER BY typical_spread_bps位居首位的是 SPY,为 0.26 个基点,仅略高于一个基点;其中位数基于 12 百万次报价更新。第四档的 NVDA 报价为 0.91 个基点。末档 F 的测算值为 7.19 个基点。其美分列揭示了整张表的关键:报价差为 1 美分,是与全表最高百分比成本相对应的以一美分为尺度的价差。美分会掩盖低价股的成本;基点才能如实反映成本。
一个基点相当于每10,000美元收取一美元
bps列按固定算式换算为金额:对于10,000美元的订单,一个基点等于一美元(10,000 × 0.0001 = 1)。将该阶梯表理解为每交易10,000美元的往返交易价格表:顶档的0.26个基点约为$0.26;底档的7.19个基点约为$7.19。只进行一次交叉交易、仅买入或仅卖出时,成本分别为上述金额的一半。
频率会放大这项成本。假设同一笔10,000美元的交易每周进行一次往返交易,并承受20个基点的spread,52周累计成本约为1,040美元(20 × $1 × 52);在零佣金情况下,这约占账户资产的百分之一。同样的交易习惯,如果spread为1个基点,每年的成本约为52美元。一个标的处于哪个档位,比任何佣金项目都更重要。
大盘股与杠杆反向 ETF
价差阶梯的高端需要一个代表,紧窄区间上三分之一中的大盘股也一样。NVIDIA(NVDA)是股价在数百美元的大盘半导体股。Ford(F)是家喻户晓的汽车制造商,股价在十几美元区间。价格本身说明了一切:一个美股报价可显示的最小价差是一美分。对于一股十四美元的股票而言,这一美分所占比例远高于一股五百美元的股票。两者均采用相同方法,在相同窗口内测算:
| NVDA价差(基点) | F价差(基点) | 宽出倍数 | 测量交易日数 | 最小日间差距(倍) |
|---|---|---|---|---|
| 0.91 | 7.19 | 7.9 | 5 | 5.4 |
每个数字背后的完整 SQL
WITH per_day AS (
SELECT toDate(toTimeZone(sip_timestamp, 'America/New_York')) AS et_date,
quantileExactIf(0.5)(toFloat64(ask_price - bid_price) / (toFloat64(ask_price + bid_price) / 2), ticker = 'NVDA' AND bid_price > 0 AND ask_price > bid_price) * 10000 AS nvda_bps,
quantileExactIf(0.5)(toFloat64(ask_price - bid_price) / (toFloat64(ask_price + bid_price) / 2), ticker = 'F' AND bid_price > 0 AND ask_price > bid_price) * 10000 AS f_bps
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('NVDA', 'F')
AND sip_timestamp >= toDateTime(today() - 10)
AND sip_timestamp < toDateTime(today() - 3)
AND (toHour(sip_timestamp) * 60 + toMinute(sip_timestamp)) BETWEEN 810 AND 1199
GROUP BY et_date
),
whole AS (
SELECT quantileExactIf(0.5)(toFloat64(ask_price - bid_price) / (toFloat64(ask_price + bid_price) / 2), ticker = 'NVDA' AND bid_price > 0 AND ask_price > bid_price) * 10000 AS nvda_bps,
quantileExactIf(0.5)(toFloat64(ask_price - bid_price) / (toFloat64(ask_price + bid_price) / 2), ticker = 'F' AND bid_price > 0 AND ask_price > bid_price) * 10000 AS f_bps
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('NVDA', 'F')
AND sip_timestamp >= toDateTime(today() - 10)
AND sip_timestamp < toDateTime(today() - 3)
AND (toHour(sip_timestamp) * 60 + toMinute(sip_timestamp)) BETWEEN 810 AND 1199
)
SELECT round((SELECT nvda_bps FROM whole), 2) AS nvda_spread_bps,
round((SELECT f_bps FROM whole), 2) AS f_spread_bps,
round((SELECT f_bps FROM whole) / (SELECT nvda_bps FROM whole), 1) AS times_wider,
(SELECT count() FROM per_day) AS sessions_measured,
round((SELECT min(f_bps / nvda_bps) FROM per_day), 1) AS smallest_daily_gap_xNVDA的报价中位价差为0.91个基点。Ford为7.19个基点,宽7.9倍。在该窗口的全部5个交易日中,单日价差从未收窄至低于5.4倍。同一对股票也处于7月7日半导体板块下跌的两端。当天早盘低点逐笔成交,正好测量了这一鲜明对比。
| 美东时间日期 | NVDA价差(基点) | F价差(基点) | 宽出倍数 |
|---|---|---|---|
| 2026-08-26 | 0.94 | 7.22 | 7.7 |
| 2026-08-27 | 1.31 | 7.14 | 5.5 |
| 2026-08-28 | 0.91 | 7.2 | 7.9 |
| 2026-08-31 | 0.91 | 7.16 | 7.9 |
| 2026-09-01 | 0.92 | 7.2 | 7.8 |
每个数字背后的完整 SQL
SELECT et_date,
nvda_spread_bps,
f_spread_bps,
round(f_spread_bps / nvda_spread_bps, 1) AS times_wider
FROM (
SELECT toDate(toTimeZone(sip_timestamp, 'America/New_York')) AS et_date,
round(quantileExactIf(0.5)(toFloat64(ask_price - bid_price) / (toFloat64(ask_price + bid_price) / 2), ticker = 'NVDA' AND bid_price > 0 AND ask_price > bid_price) * 10000, 2) AS nvda_spread_bps,
round(quantileExactIf(0.5)(toFloat64(ask_price - bid_price) / (toFloat64(ask_price + bid_price) / 2), ticker = 'F' AND bid_price > 0 AND ask_price > bid_price) * 10000, 2) AS f_spread_bps
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('NVDA', 'F')
AND sip_timestamp >= toDateTime(today() - 10)
AND sip_timestamp < toDateTime(today() - 3)
AND (toHour(sip_timestamp) * 60 + toMinute(sip_timestamp)) BETWEEN 810 AND 1199
GROUP BY et_date
)
ORDER BY et_date在2026-08-26,即该窗口的第一个交易日,NVDA的报价中位价差为0.94个基点,而Ford为7.22个基点,成本是其7.7倍。两者的排序在各交易日之间始终不变:便宜的股票持续便宜,昂贵的股票持续昂贵。股票在成本阶梯上的位置是一项长期属性,而不是某一天的市场情绪。
为什么低价股票的交易成本高于高价股票
其中一部分差异源于市场基础设施。价格高于 $1 的美国股票和 ETF 以一美分为最小报价变动单位,一美分也是报价能够显示的最小价差。固定的一美分相对于不同股价所占的比例不同:相对于表格顶部的 $767.18 ETF 几乎可以忽略不计,但相对于底部的 $13.92 股票却非常庞大。下表衡量了这一下限的约束程度,包括各标的报价更新中恰好相差一美分的比例、一美分在该股价下相当于多少个基点,以及中位数价差高于这一最低值的幅度。
| ticker | 典型股价 | 报价为1美分的比例 | 1美分(基点) | 典型价差(基点) | 距下限(基点) |
|---|---|---|---|---|---|
| SPY | 767.18 | 29.1 | 0.13 | 0.26 | 0.13 |
| AAPL | 316.17 | 16.9 | 0.32 | 0.94 | 0.62 |
| KO | 89.46 | 75.3 | 1.12 | 1.12 | 0 |
| SOXS | 49.14 | 73.1 | 2.04 | 2.07 | 0.03 |
| F | 13.92 | 99.6 | 7.18 | 7.19 | 0.01 |
每个数字背后的完整 SQL
SELECT ticker,
typical_share_price,
pct_quotes_at_one_cent,
round(100 / typical_share_price, 2) AS one_cent_in_bps,
typical_spread_bps,
round(abs(typical_spread_bps - 100 / typical_share_price), 2) AS dist_from_floor_bps
FROM (
SELECT ticker,
round(quantileExactIf(0.5)((toFloat64(ask_price) + toFloat64(bid_price)) / 2, bid_price > 0 AND ask_price > bid_price), 2) AS typical_share_price,
round(100 * countIf(bid_price > 0 AND ask_price > bid_price AND abs(toFloat64(ask_price - bid_price) - 0.01) < 0.001) / countIf(bid_price > 0 AND ask_price > bid_price), 1) AS pct_quotes_at_one_cent,
round(quantileExactIf(0.5)(toFloat64(ask_price - bid_price) / (toFloat64(ask_price + bid_price) / 2), bid_price > 0 AND ask_price > bid_price) * 10000, 2) AS typical_spread_bps
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('SPY', 'AAPL', 'KO', 'F', 'SOXS')
AND sip_timestamp >= toDateTime(today() - 10)
AND sip_timestamp < toDateTime(today() - 3)
AND (toHour(sip_timestamp) * 60 + toMinute(sip_timestamp)) BETWEEN 810 AND 1199
GROUP BY ticker
)
ORDER BY typical_share_price DESCSPY 的股价接近每股 $767.18,其中 29.1% 的报价更新恰好相差一美分。对于股价最高的股票,一美分仅相当于 0.13 个基点。在表格中部,股价接近 $89.46 的 KO 有 75.3% 的报价更新处于这一最低价差。随后,这一下限完全主导报价:股价接近 $49.14 的 SOXS,有 73.1% 的报价更新相差一美分;股价接近 $13.92 的 F,这一比例为 99.6%。它们的中位数价差分别仅高于一美分下限 0.03 和 0.01 个基点。对于最低价股票,交易成本占股价的比例只是换了一种计量单位:报价不可能窄于一美分。
降低交易成本
- 限价单决定成交价格。 市价单按报价中的价格成交;限价单则按指定价格或更优价格成交。买单挂在买价上,等待卖方主动成交,可以收取而不是支付 spread;代价是订单可能始终无法成交。
- 时间很重要。 开盘前、收盘前后和盘后交易时段的报价 spread 通常最宽。常规交易时段流动性最强的中段,spread 通常最窄。我们的买卖价差指南中的日内图表基于真实数据,显示出这一 U 形走势。
- 看基点,不要只看美分。 同样的一美分,在 SPY 上相当于 0.13 个基点,在 F 上相当于 7.18 个基点。看似“紧窄”的一美分报价,可能是报价板上成本最高的一档。
- 统计往返交易次数。 每次往返交易都要完整支付一次报价区间,交易成本取决于换手率,而不是账户规模或交易意图。相对成交量等活跃度指标可以显示某只股票何时远高于自身正常的高换手水平;在这种情况下,spread 成本会悄然累积。
常见问题
交易零佣金股票的成本是多少?
买入时承担报价买卖价差的一半,卖出时承担另一半。按我们这组十二只股票测算,完成一买一卖的往返交易成本占交易金额的 0.26 个基点(SPY)至 7.19 个基点(F),约合每交易 $10,000 支付 $0.26 至 $7.19。
一个基点折算成美元是多少?
一个基点是百分之一个百分点:每 $10,000 为 $1,每 $100,000 为 $10。以基点报价的价差,也相当于每 $10,000 的往返交易成本。例如,假设价差为 20 个基点,成本约为 $20。
为什么杠杆 ETF 的价差按百分比计算会这么宽?
原因是股价较低,但报价最小变动单位仍为一美分。我们列表中价格最低的股票 F 的交易价格接近 $13.92,其 99.6% 的报价正好相差一美分。对于该股,一美分相当于每笔交易金额的 7.18 个基点。
买卖价差对长期投资者重要吗?
其影响远小于对活跃交易者的影响。在这组股票中,价差最高的一档完成一次往返交易的成本为 0.26 个基点,约合每 $10,000 支付 $0.26。如果十年只支付一次,这一成本几乎可以忽略。成本取决于换手率,而不是持有期限。
价差是仅剩的交易成本吗?
价差是每笔可成交订单都要承担的交易成本,也是本页面测量的成本。其他成本则分别计算:大额订单在完全成交前可能推动价格变动,基金会持续收取费用率,保证金会产生利息。这些成本不会取代价差,而是叠加在价差之上。
上方每个面板都附有生成结果的完整 SQL。打开其中一个面板,替换为您实际交易的 ticker,即可在 Strasmore 终端上测算您自己的交易成本阶梯。