halo 的技术博客

返回

上一篇 VWAP/TWAP 站在吃流动性的一方看执行成本,这一篇换到柜台对面:做市商为什么要收买卖价差?教科书的第一反应是「补偿库存风险和处理成本」,但 Glosten-Milgrom(1985)给出了一个更深刻的答案——哪怕做市商零成本、零库存约束、风险中性,价差依然必须存在,因为每一张进来的单子都可能来自比你知道更多的人。

这就是逆向选择价差,市场微观结构信息学派的奠基模型。

一、模型设定:一场不对称的重复博弈#

资产的真实价值 VV 是两值随机变量:V{VL,VH}V \in \{V_L, V_H\}(模拟里取 98 和 102),做市商的先验 p=P(V=VH)=0.5p = P(V = V_H) = 0.5

交易者逐个到达,每人交易 1 股。人群里混着两类人:

  • 知情者(占比 μ\mu):知道 VV 的真值。V=VHV = V_H 时必买,V=VLV = V_L 时必卖——永远朝对做市商不利的方向交易;
  • 不知情者(占比 1μ1-\mu):因流动性需求交易,50/50 随机买卖。

做市商看不出来者是谁,只能看到订单方向。它的武器是贝叶斯更新:买单本身就是「真值偏高」的证据(因为知情者只在高值时买)。

二、报价公式:把后验直接写进价格#

关键洞察:做市商报出的 ask 不应该是当前的期望值 E[V]E[V],而应该是条件在「下一单是买单」上的期望值——因为只有买单会打在 ask 上:

ask=E[V买单],bid=E[V卖单]\text{ask} = E[V \mid \text{买单}], \qquad \text{bid} = E[V \mid \text{卖单}]

用贝叶斯展开(以 ask 为例):

P(VH)=P(VH)pP()=(μ+1μ2)pμp+1μ2P(V_H \mid \text{买}) = \frac{P(\text{买} \mid V_H)\, p}{P(\text{买})} = \frac{(\mu + \frac{1-\mu}{2})\, p}{\mu p + \frac{1-\mu}{2}}

代码就是公式的直译:

V_L, V_H = 98.0, 102.0

def gm_quotes(p, mu):
    """p = P(V=V_H) 的当前信念, mu = 知情者占比"""
    p_buy  = mu * p + (1 - mu) / 2          # 买单的无条件概率
    p_sell = mu * (1 - p) + (1 - mu) / 2
    p_up_buy  = (mu + (1 - mu) / 2) * p / p_buy    # P(V_H | 买单)
    p_up_sell = ((1 - mu) / 2) * p / p_sell        # P(V_H | 卖单)
    ask = p_up_buy  * V_H + (1 - p_up_buy)  * V_L
    bid = p_up_sell * V_H + (1 - p_up_sell) * V_L
    return bid, ask, p_up_buy, p_up_sell
python

这个报价规则有个漂亮的性质:每笔成交的事前期望利润恰好为零(竞争性做市假设)。ask 定在「已知对方买入后」的公允价值上,成交瞬间做市商既不赚也不亏——期望意义上。

三、价差随知情者比例撑开#

p=0.5p = 0.5 时扫描 μ\mu

价差 vs 知情者比例

数值上:μ=0.1\mu = 0.1 时价差 0.40,μ=0.3\mu = 0.3 时 1.20,μ=0.6\mu = 0.6 时 2.40——在 p=0.5p=0.5 的对称点上价差恰好是 μ(VHVL)\mu \cdot (V_H - V_L),与知情者比例严格成正比。知情者越多,每张单子的「毒性」越大,做市商的自卫报价越宽。

这条曲线是很多实证现象的理论底座:财报公告前价差系统性走宽(μ\mu 临时上升)、小盘股价差大于大盘股(信息不对称更严重)、危机中流动性蒸发(做市商怀疑所有对手盘都知情,μ\mu \to 高位,价差宽到市场名存实亡)。

四、价格发现:速度与成本的对偶#

每笔成交后做市商更新信念,报价序列本身就是一台贝叶斯学习机。模拟真值 V=VHV = V_H 的路径:

价格发现路径

对比鲜明:

  • μ=0.5:订单流里一半是带信息的单子,中间价约 30 笔就收敛到 102 附近——但路上每一步的价差都很宽;
  • μ=0.15:价差窄、交易便宜,但订单流信噪比低,200 笔过去信念仍未完全收敛。

这是微观结构的一个基本对偶:**知情交易是价格发现的引擎,也是流动性成本的来源。**监管想同时要「价格有效」和「价差窄」,GM 模型直白地告诉你这两个目标天然互相打架。

价差本身也随成交衰减:

价差衰减

逻辑清晰:随着信息进价,pp 趋向 0 或 1,剩余的不确定性(也就是知情者的剩余优势)缩小,逆向选择风险下降,价差收窄。开盘后价差快速收窄的日内模式,GM 给出了信息论解释。

五、损益分解:价差是一张转移税单#

做市商到底赚谁的钱?把 100 笔成交、400 次模拟的损益按对手方类型拆开:

# 客户买 -> 做市商在 ask 卖出,损益 = ask - V_true
# 客户卖 -> 做市商在 bid 买入,损益 = V_true - bid
mm_pnl = (px - V_true) if side == BUY else (V_true - px)
python

做市商损益分解

μ=0.1 那组:对知情者累计亏 12.0,从不知情者赚 11.2,合计 −0.8 ≈ 0。所有 μ 下合计都贴着零——竞争性零利润条件在模拟里精确成立,这也是对实现正确性的最好自检。

这张图值得每个交易者盯着看一分钟:**做市商只是过路财神,价差的净流向是从不知情者流向知情者。**你每次以市价单成交,付出的半价差里有一部分是在补贴市场里比你知道更多的人。推论也直接:如果你没有信息优势,你的最优行为是尽量少穿越价差(限价单、耐心执行);如果你有真 alpha,你的利润上限正是市场为你这类人定的逆向选择税率。

六、工程含义与诚实边界#

**GM 是后续一整条工具链的地基。**Easley-O’Hara 把它扩展成事件不确定性模型,PIN(知情交易概率)直接从 GM 结构的订单流数据里极大似然估计 μ\mu,VPIN 再把它做成高频毒性监控指标——这些都是这个系列后面的主题。做执行的人也用得上:如果你的母单会被市场解读为知情单(比如总在利好前买入),你面对的价差就是为你定制的。

边界同样要说清:

  1. 两值真值是为了解析可解。连续真值版本(Kyle 1985 走的是另一条线性均衡路线)里价差的表达式复杂得多,但逆向选择的逻辑不变;
  2. 单位单量假设回避了订单大小的信息含量——真实世界里大单更可能知情,做市商会报出随量递增的价差曲线(这正是 Glosten 1994 限价簿模型的方向);
  3. 零库存成本、风险中性意味着 GM 价差是真实价差的下界。实证拆解(如 Huang-Stoll 分解)通常把价差分成订单处理、库存、逆向选择三块,GM 只解释最后一块——大盘股里逆向选择约占价差的 20-40%,剩下的是另两个成分;
  4. μ 是外生常数。真实市场里知情者会择时进场(在流动性好时隐藏自己),μ 内生化后模型变成动态博弈,价差行为更复杂。

七、从模型到数据:怎么把 μ 估出来#

GM 的结构给了一条从公开数据反推信息不对称的路。最直接的入口是价差回归:把日度相对价差对市值、波动率、成交量回归,残差里携带逆向选择成分的截面差异;更干净的是 Huang-Stoll(1997)分解——用成交价与中间价的序列协方差把价差拆成订单处理、库存、逆向选择三个组分,逆向选择占比就是 μ 的一个代理。

结构化估计走得更远:Easley 等人的 PIN 框架假设每天以概率 α 发生信息事件,事件日知情单以强度 μ 到达,然后用每日买卖单数量 (Bt,St)(B_t, S_t) 的联合分布做极大似然,直接估出「任意一笔成交来自知情者」的概率。GM 模型里那个外生的 μ,在 PIN 里变成了可以逐股、逐月估计的参数——小盘股 PIN 普遍在 0.2 以上,大盘股常低于 0.1,与本文价差曲线的预测方向完全一致。对量化研究者的直接用途:PIN/逆向选择代理是流动性风险因子的原料,也是事件研究里筛选『聪明钱先行』样本的工具。

八、总结#

Glosten-Milgrom 用最小的模型回答了最根本的问题:价差不是垄断租金,不是摩擦残渣,而是信息不对称的市场定价。μ 从 0.1 到 0.6,价差从 0.40 到 2.40 严格线性;做市商对知情者亏的每一块钱,都精确地从不知情者的价差里收回来。价格发现越快的市场交易成本越高,因为两者是同一枚硬币——知情订单流——的两面。下次看到 Level-2 上的价差数字,可以把它读成市场对「下一单来自内行」的概率报价。

Glosten-Milgrom 模型:逆向选择如何撑开买卖价差
https://blog.halo26812.eu.org/blog/glosten-milgrom-spread
Author halo
Published at 2026年7月28日
版权声明 CC BY-NC-SA 4.0
Comment seems to stuck. Try to refresh?✨