信息不对称模型: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 订单处理成本
实际做市商的价差包含两部分:
- 逆向选择成本:δ * (V_H - V_L) —— 这是GM模型的核心
- 订单处理成本:包括交易所费用、清算成本、库存风险等
我习惯用信息份额来衡量逆向选择的严重程度:
信息份额 = 逆向选择成本 / 总价差
如果这个比例超过50%,说明你的做市策略基本是在给知情者打工。
5. 动态扩展:学习与更新
GM模型还有一个很漂亮的扩展——做市商会根据历史订单更新信念。
假设做市商初始认为V_H的概率是π₀。收到一个买入订单后,用贝叶斯更新:
π₁ = P(V_H | 买入) = [δ + (1-δ)/2] * π₀ / [δ * π₀ + (1-δ)/2]
这个公式告诉我们:连续的买入订单会推高做市商对V_H的信念,从而推高卖价A。
实战技巧:我在做市策略中会实时计算这个后验概率。当连续3笔买入订单出现时,我会把卖价上调0.5个tick。这不是拍脑袋,而是GM模型的直接应用。
6. 逆向选择强度的SVG框架图
下面这张图展示了逆向选择强度与价差的关系:
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