信息不对称模型:Glosten-Milgrom模型的核心假设与推导

做市商这行当,说白了就是跟市场里的信息优势方对赌。我刚开始接触高频交易那会儿,总觉得做市商就是个提供流动性的工具人,后来被市场狠狠教育了几次才明白——信息不对称才是做市商定价的核心矛盾

今天咱们聊的Glosten-Milgrom模型(简称GM模型),就是用来量化这个矛盾的。它不像Kyle模型那样关注订单流的影响,而是聚焦在做市商如何通过价差来保护自己。嗯,这模型1985年提出,到现在还是很多做市策略的理论基石。

1. 核心假设:做市商不是傻子

GM模型做了几个关键假设,我一个个说:

  • 单一风险资产:只交易一种股票或债券,价值V是随机的
  • 两类交易者:知情交易者(知道V的真实值)和不知情交易者(纯粹为了流动性)
  • 做市商是风险中性的:不关心风险,只关心期望收益
  • 竞争性做市商:期望利润为零(Bertrand竞争)
  • 交易是离散的:每次只交易一个单位

关键点:做市商不知道谁是谁,只能通过订单类型来推断信息。这就是逆向选择的根源。

你想想看,如果做市商能分辨出谁是知情者,那直接拒绝交易就行了。但现实是——做市商永远在跟幽灵博弈

2. 逆向选择:做市商的噩梦

逆向选择是什么意思?我举个例子你就明白了。

假设某只股票的真实价值V要么是100元(概率50%),要么是120元(概率50%)。做市商只能报一个买价和一个卖价。

如果做市商报买价105元,卖价115元:

  • 知情交易者看到真实价值是120元时,会果断买入(赚5元)
  • 知情交易者看到真实价值是100元时,会果断卖出(赚5元)
  • 不知情交易者随机买卖

结果呢?做市商总是在不利的方向上被知情者狙击。这就是逆向选择——做市商接到的订单,信息含量比随机订单高得多。

我曾经踩过的坑:刚开始做市时,我天真地以为只要把价差设得够小就能吸引订单。结果被知情交易者反复收割,一天亏了3个BP。后来才明白,价差不是用来吸引流动性的,是用来对冲信息不对称风险的。

3. 模型推导:从假设到定价公式

好,咱们来推导GM模型的定价公式。这个过程不复杂,但逻辑很精巧。

3.1 符号定义

符号含义
V资产真实价值(随机变量)
V_H高价值状态
V_L低价值状态
δ知情交易者比例
1-δ不知情交易者比例
A做市商卖价(ask)
B做市商买价(bid)

3.2 做市商的期望利润

做市商报出卖价A时,只有两种情况会成交:

  • 知情者买入(当V_H > A时)
  • 不知情者买入(随机)

做市商的期望利润为0(竞争性假设):

E[π | 卖出] = δ * (A - V_H) + (1-δ) * (A - E[V]) = 0

解这个方程:

A = δ * V_H + (1-δ) * E[V]

同理,买价B:

B = δ * V_L + (1-δ) * E[V]

核心结论:价差 = A - B = δ * (V_H - V_L)

价差完全由知情交易者比例δ资产价值波动范围决定。

4. 价差分解:逆向选择成本 vs 订单处理成本

实际做市商的价差包含两部分:

  1. 逆向选择成本:δ * (V_H - V_L) —— 这是GM模型的核心
  2. 订单处理成本:包括交易所费用、清算成本、库存风险等

我习惯用信息份额来衡量逆向选择的严重程度:

信息份额 = 逆向选择成本 / 总价差

如果这个比例超过50%,说明你的做市策略基本是在给知情者打工。

5. 动态扩展:学习与更新

GM模型还有一个很漂亮的扩展——做市商会根据历史订单更新信念

假设做市商初始认为V_H的概率是π₀。收到一个买入订单后,用贝叶斯更新:

π₁ = P(V_H | 买入) = [δ + (1-δ)/2] * π₀ / [δ * π₀ + (1-δ)/2]

这个公式告诉我们:连续的买入订单会推高做市商对V_H的信念,从而推高卖价A。

实战技巧:我在做市策略中会实时计算这个后验概率。当连续3笔买入订单出现时,我会把卖价上调0.5个tick。这不是拍脑袋,而是GM模型的直接应用。

6. 逆向选择强度的SVG框架图

下面这张图展示了逆向选择强度与价差的关系:

逆向选择强度与做市商定价 知情交易者比例 δ δ↑ → 信息不对称加剧 逆向选择成本 δ × (V_H - V_L) 做市商价差 A - B 贝叶斯更新过程 初始信念 π₀ 订单到达 后验信念 π₁ π₁ = [δ + (1-δ)/2] × π₀ / [δ × π₀ + (1-δ)/2] 连续买入订单 → π↑ → 卖价A↑ → 价差扩大

7. 实战应用:如何用GM模型优化做市策略

理论说完了,咱们聊聊怎么用。我在实盘中有三个具体应用:

7.1 动态价差调整

根据GM模型,价差应该随知情交易概率动态调整。我写了个简单的Python函数:

def gm_spread(delta, V_H, V_L, base_spread):
    """
    基于GM模型计算动态价差
    delta: 估计的知情交易者比例
    V_H, V_L: 资产价值的高/低估计
    base_spread: 基础价差(订单处理成本)
    """
    adverse_selection_cost = delta * (V_H - V_L)
    total_spread = base_spread + adverse_selection_cost
    return total_spread

# 示例:delta从0.1升到0.3时
print(gm_spread(0.1, 101, 99, 0.02))  # 0.22
print(gm_spread(0.3, 101, 99, 0.02))  # 0.62

7.2 订单流毒性检测

我用GM模型来检测订单流毒性(即订单的信息含量)。核心指标是VPIN(成交量同步概率),但GM模型提供了一个更简洁的替代方案:

def order_toxicity(buy_volume, sell_volume, total_volume):
    """
    基于GM思想的订单毒性指标
    返回值越接近1,说明订单流毒性越高
    """
    imbalance = abs(buy_volume - sell_volume) / total_volume
    return imbalance

注意:这个简化指标只适用于流动性较好的股票。对于小盘股,订单流不平衡可能只是随机波动,不代表知情交易。

7.3 做市商库存风险管理

GM模型还隐含了一个重要结论:做市商的库存变化本身就是信息。如果你发现自己持续积累多头头寸,说明你很可能在跟知情者做对手盘。

我个人的做法是:当库存偏离中性超过阈值时,主动缩小价差来平仓。这不是GM模型直接告诉我的,但逻辑一脉相承。

8. 模型的局限与改进

GM模型虽然经典,但有几个明显的局限:

  • 只考虑单期交易:现实中做市商是连续博弈的
  • 假设交易量固定:实际订单规模差异很大
  • 忽略订单簿深度:只考虑最优报价

后来有很多改进模型,比如Easley-O'Hara模型引入了订单规模,Foucault模型考虑了限价单簿的动态。但说实话,GM模型作为入门和理解信息不对称的起点,至今无人能替代。

我的建议:别急着上复杂模型。先用GM模型理解你交易品种的信息不对称程度。我见过太多人一上来就用深度学习做市,结果连基本的逆向选择都没搞清楚。

好了,GM模型的核心内容就这些。记住一句话:做市商的价差,本质上是对信息不对称的定价。下次你看到某个股票价差突然扩大,别只想着流动性不足——很可能是有知情者在里面搅局。


公众号:蓝海资料掘金营,微信deep3321