← 返回模块
F1.1.1.3beta 可读 · 未来付费内容校验中内容版本 2026-05-25

价格形成与买卖价差

1.1.1 · 市场与微观结构 · 金融与量化投资

10:32:14,深圳。一家私募基金的策略交易员看着 300ETF(510300.SH)的盘口:最优买 4.218 / 最优卖 4.219,盘口报价价差正好 1 个最小变动单位(¥0.01)。她敲下一笔 5,000 股的市价买单。回报到达:成交价 4.2185,比她预期的 4.219 还便宜了半个 tick——是一家 ETF 主做市商在中间价格上吃了她的单子。同一时刻,她的同事在交易一只科创板小盘股(科创 50 成分外的一只名字),盘口是 17.62 / 17.69,价差 7 ticks 宽,市价单进去预计要付掉一格半。

同一家券商终端,同一个市价单类型,为什么一只标的价差是 1 tick 还能成交在中间,另一只价差宽到 7 ticks?这一节回答这个问题。上一节我们把订单簿当作机械结构看;这一节把它当作经济结构看——价差不是「最优卖 - 最优买」的数学差,而是某个挂两边的人愿意承担的风险溢价的体现。

1. 三个价差的定义

先把术语对齐。给定盘口报价 best bid BB 和 best ask AA

  • ​买卖价差(bid-ask spread,盘口报价价差 quoted spread)​​:
Squoted=ABS_{\text{quoted}} = A - B
  • ​中间价(mid-quote)​​:
M=A+B2M = \frac{A + B}{2}
  • ​有效价差(effective spread)​​:用真实成交价 PP 和成交时的中间价 MM 来度量你实际付了多少:
Seffective=2×PMS_{\text{effective}} = 2 \times |P - M|

为什么是 2 倍?因为 quoted spread 是从 BBAA 的距离,covers 双向。如果你一笔买单成交在 AA,则 PM=(AB)/2=Squoted/2|P - M| = (A - B)/2 = S_{\text{quoted}}/2,乘以 2 后正好恢复 quoted spread。这样定义的好处是 effective spread 和 quoted spread 同量纲、可直接比较。

举例。300ETF 盘口 4.218 / 4.219,Squoted=¥0.01S_{\text{quoted}} = ¥0.01M=4.2185M = 4.2185

  • 你的市价买单成交在 4.2185:Seffective=2×4.21854.2185=0S_{\text{effective}} = 2 \times |4.2185 - 4.2185| = 0。中间价成交意味着「免费过」,做市商在 ETF 上的隐藏报价让你绕开了正常价差。
  • 你的市价买单成交在 4.219:Seffective=2×4.2194.2185=¥0.01=SquotedS_{\text{effective}} = 2 \times |4.219 - 4.2185| = ¥0.01 = S_{\text{quoted}}。你付了完整的盘口报价价差。
  • 你的市价买单成交在 4.2188:Seffective=2×4.21884.2185=¥0.0006S_{\text{effective}} = 2 \times |4.2188 - 4.2185| = ¥0.0006。介于二者之间,做市商把一部分价差还给了你。

记住这三条公式。本节后面所有论述都建立在它们之上。

2. 价差里藏着什么:三大组成部分

现在回到经济学问题。为什么 300ETF 盘口报价价差只有 1 tick,而那只科创板小盘股是 7 ticks?把任何做市商挂在两边的报价拆开看,价差里包含三笔不同性质的费用:

组成部分含义经验信号
​订单处理成本(order-processing cost)​固定的运营成本:交易所席位费、技术系统折旧、撮合 / 清算手续费、做市义务的最低挂单成本价差在低活跃度小票上有非零下界;在最小变动单位极小的标的上 floor 触底体现
​存货成本(inventory cost)​做市商被动持有非期望仓位,需要补偿因风险敞口产生的资金 / 波动 / 资本成本价差在波动率高时拉宽;做市商净库存累计变大时报价偏斜
​逆向选择成本(adverse-selection cost)​做市商挂在两边,可能被掌握短期信息的对手方利用——卖出后行情上涨、买入后行情下跌的系统性损失价差在公告 / 数据发布前后变宽;机构大单可成交概率最高的窗口出现暂时性价差扩张

写成结构式公式(不带具体常数,是直觉而非闭式解):

Squoted2×(cOP+cINV+cADV)S_{\text{quoted}} \approx 2 \times (c_{\text{OP}} + c_{\text{INV}} + c_{\text{ADV}})

每一项都是「单边补偿」,乘 2 是因为做市商要在买卖两边都收回成本。

把三只标的放在同一张表上对比:

标的主要价差成分表现
300ETF(4.219 元、日成交 ¥40B、ETF 主做市商在场)几乎全是 cOPc_{\text{OP}}价差 1 tick 触底,主做市商频繁在中间价格内成交
招商银行 600036(46 元、日成交 ¥3B、机构跟踪密集)cOP+cINVc_{\text{OP}} + c_{\text{INV}}价差 1–2 ticks,盘中波动期间扩到 3 ticks
科创板某非热门小盘股(18 元、日成交 ¥80M、信息不对称大)cOP+cINV+c_{\text{OP}} + c_{\text{INV}} + 大量 cADVc_{\text{ADV}}价差 5–10 ticks,公告前进一步扩张

A 股现货市场几乎全部由限价单驱动(order-driven);主板没有 NYSE 式指定做市商。但是 ETF 期权(沪深300ETF期权、上证50ETF期权)有指定的主做市商承担连续报价义务,科创板有 STAR Market 做市商制度,部分小盘 ETF 也有做市商。所以你在 510300.SH 上能享受到的中间价成交,本质是 ETF 主做市商主动挤压自己的 cADVc_{\text{ADV}}(ETF 标的基础资产分散,信息不对称低)。

3. 报价驱动 vs 订单驱动:两种价格形成

价差三组成的相对权重,取决于市场是 quote-driven 还是 order-driven。

​订单驱动市场(order-driven)​​:A 股、美股主板、CFFEX 主力合约。任何参与者都可以挂限价单,价格 = 当前订单簿上的最优买 / 最优卖。「做市商」是一种行为,不是一种身份:任何在两边持续挂单的人都在做市,赚的钱就是 quoted spread 减去仓位带来的损失。价格的连续移动靠新进的限价单和成交后的撤单重排。

​报价驱动市场(quote-driven)​​:境内的银行间债券市场(交易商通过电话 / 钱龙等系统报价)、外汇即期、利率掉期。价格不在公共订单簿上,由一组持牌做市商对自己客户报双边价;客户接受报价后双边成交。客户没法看到全市场最优价,每笔报价高度依赖客户身份、规模、关系。同一只信用债,对一家百亿私募和对一家小型保险公司报出来的价格可能差 5–10 bp。

把两者并排:

维度报价驱动(quote-driven)订单驱动(order-driven)
代表市场银行间债券、FX spot、IRS、欧元美债 OTCA 股 SSE/SZSE、CFFEX IF、欧元 Stoxx 50 期货
价格形成机制持牌做市商对客户双边报价全市场限价单汇聚到中央订单簿
透明度低;价格不公开高;盘前 + 盘后行情公开
谁承担 cADVc_{\text{ADV}}做市商;通过对不同客户报不同价价来部分对冲所有挂限价单的参与者均匀承担
谁主导价差做市商集中定价集体竞争压价差

银行间债券市场的典型对比:一只 10 年期国债(10y CGB),活跃券和非活跃券(off-the-run)的报价价差差距可能在 0.5 bp vs 5 bp 量级。差距大部分来自存货成本(活跃券周转快)+ 逆向选择成本(非活跃券更可能被信息驱动的买家击中)。

4. 报价之间:中间价为什么会漂

把镜头放回订单驱动的 A 股盘口。盘口报价 4.218 / 4.219,30 秒后变成 4.219 / 4.220——没有任何一笔成交。中间价从 4.2185 漂到 4.2195,涨了半个 tick。这是 quote revision(报价重置),其经济含义是:在这 30 秒里,做市商和挂限价单的人​​根据新到达的信息修改了愿意成交的价格​​,但没有触发任何撮合。

quote revision 是市场理解订单流(order flow)信息含量的指标。Glosten-Milgrom 模型的直觉(不做正式推导)是:每一笔市价买单都让做市商提高它对真实价值的后验估计——因为可能这笔买单来自一位掌握利好信息的对手方。所以当一连串市价买单到达,即使中间没有任何「公开消息」,最优卖价(和中间价)也会被做市商系统性上调。我们看到的「中间价漂移」就是这一信息更新过程在盘口上的投影。

这也解释了为什么本节开头那位策略交易员的市价买单​​没有移动最优卖价​​——这只 300ETF 的资产是一篮子大盘股,单笔小订单泄露的信息几乎为零,做市商不需要把后验上调。但如果同一笔 5,000 股市价买单打在那只小盘科创板股票上,可能立刻看到最优卖价上跳一档,因为信息不对称大,做市商必须假定你是被告知方。

把这一点写进结论:​​价差宽度与盘口的报价更新速度,是同一件事的两面。​ 第 4 节课讲流动性时,我们会把这两个量都拍成可观测的统计量。

5. 一个完整的有效价差计算

回到开头那位交易员。她依次发出三笔市价买单到 300ETF,盘口在交易前和每笔成交之间的状态如下:

笔次成交前盘口(B/A)成交价 PP中间价 MMSeffectiveS_{\text{effective}}
14.218 / 4.2194.21854.21850
24.218 / 4.2194.2194.21850.001
34.219 / 4.2204.2194.21950.001

观察:第 1 笔获得了 ETF 主做市商的中间价成交(effective = 0,做市商在不显示挂单的隐藏价格上接了她);第 2 笔以挂单价成交(effective = quoted);第 3 笔的成交价是 4.219,但​​此时盘口已经上移​​,相对新的中间价 4.2195 仍是 0.001 的有效价差。三笔成交的平均有效价差 = (0+0.001+0.001)/3¥0.00067(0 + 0.001 + 0.001) / 3 ≈ ¥0.00067,约为 quoted spread 的 67%。这个比值——effective / quoted——是评估盘口报价相对真实成交价友好程度的标准指标。

6. 练习

Exercise

下面是一家私募基金在 SSE 300ETF 上的连续三笔市价买单成交记录。每笔成交瞬时盘口报价如下:

时间成交前最优买成交前最优卖成交价成交量
10:01:123.9983.9993.99908,000
10:03:453.9994.0003.999512,000
10:05:214.0004.0024.001010,000

请:

  1. 对每笔成交计算 SquotedS_{\text{quoted}}MMPPSeffectiveS_{\text{effective}}(单位:¥)。
  2. 计算三笔成交的成交量加权平均有效价差。
  3. 用一句话解释为什么第 3 笔的有效价差比 quoted 小,但比前两笔大。
提示

用第 1 节的三条公式:Squoted=ABS_{\text{quoted}} = A - BM=(A+B)/2M = (A+B)/2Seffective=2×PMS_{\text{effective}} = 2 \times |P - M|。注意第 3 笔的盘口已经从 1 tick 扩到 2 ticks,quoted 变化会影响有效价差的天花板。

提示

成交量加权平均:Sˉ=iViSi/iVi\bar{S} = \sum_i V_i S_i / \sum_i V_i,其中 ViV_i 是第 ii 笔的成交量。第 3 笔成交在 4.0010,相对该时刻中间价 M3=(4.000+4.002)/2=4.001M_3 = (4.000 + 4.002)/2 = 4.001 的偏差正好为零——也即第 3 笔成交在中间价上,effective = 0;用这个细节确认你的算式。

7. 下一节:流动性与市场冲击

你现在可以读出一只标的的盘口报价价差、把它拆成三个经济成分、分辨它来自报价驱动还是订单驱动市场,还能用 effective spread 度量真实成本。下一节把这条线再拉长一格:当订单大到一笔吃光最优档之外,「价差」概念本身不够用——我们要谈深度(depth)、流动性(liquidity)、市场冲击(market impact)。我们会从这一节留下的「单笔小订单 vs 中间价」的视角,过渡到「大单的边际成本如何按订单量 scaling」的定量模型。