第四章 经典定价模型:Avellaneda-Stoikov、Ho-Stoll与Glosten-Milgrom
做市商定价模型,说白了就是回答一个问题:我该用什么价格买卖?
这章我们聊三个经典模型。它们分别从不同角度切入,各有各的脾气。我个人习惯把它们看作做市商定价的「三根柱子」——理解了它们,你就能看懂市面上90%的做市策略逻辑。
4.1 Avellaneda-Stoikov模型:库存风险的「温度计」
这个模型是我最早接触的做市模型之一。当时我在做期权做市系统,发现一个现象:持仓多了,报价就会不自觉往中间收。为什么?因为怕库存砸手里。
Avellaneda-Stoikov模型(简称AS模型)就是干这个的。它把做市商的报价决策拆成两部分:
- 基准价格:通常是中间价,或者你预测的资产真实价值
- 报价偏移:根据当前库存和风险偏好,动态调整买卖价
核心公式长这样:
# Avellaneda-Stoikov 报价偏移计算
def compute_spread_adjustment(inventory, gamma, sigma, T):
"""
inventory: 当前库存(正数表示多头,负数表示空头)
gamma: 风险厌恶系数(越大越保守)
sigma: 波动率
T: 做市时间窗口
"""
# 库存项:库存越大,报价越往反方向偏移
inventory_term = -gamma * sigma**2 * inventory * T
# 价差项:波动越大,价差越宽
spread_term = gamma * sigma**2 * T / 2
return inventory_term, spread_term
嗯,这里要注意:gamma这个参数很关键。我见过有人把它设成0.1,结果库存稍微大一点,报价就飞到天上去了。后来我学乖了——gamma值一般取0.01到0.1之间,具体要看你的风险承受能力。
核心思想:AS模型本质上是一个「库存厌恶」模型。库存越多,你越不愿意继续吃进同方向的单子,所以报价会往反方向偏移。
我的经验:在实际项目中,我会把AS模型和实时波动率估计结合起来。波动率飙升时,自动调宽价差;波动率平稳时,收窄价差赚更多。这个组合拳效果不错。
4.2 Ho-Stoll模型:订单流与逆向选择的博弈
Ho-Stoll模型比AS模型更早出现。它关注的是另一个问题:对手方为什么愿意跟我交易?
你想想看,如果市场上所有人都知道你是做市商,他们就会专门挑你报价有漏洞的时候来打。这就是逆向选择(adverse selection)。
Ho-Stoll模型把做市商的决策建模成一个动态优化问题。它假设:
- 订单到达是随机的(泊松过程)
- 做市商可以调整买卖报价
- 目标是最大化期望收益,同时控制库存风险
模型给出的结论很直观:
- 价差与波动率正相关——波动越大,价差越宽
- 价差与交易频率负相关——交易越频繁,价差可以收窄
- 库存水平影响报价偏移——和AS模型类似
避坑指南:我曾经在实盘环境中直接套用Ho-Stoll模型的原始参数,结果亏了一周。后来发现,模型假设订单到达是独立的,但实际市场中订单是聚集的——大单后面往往跟着更多大单。所以,一定要对模型做适应性调整,不能生搬硬套。
4.3 Glosten-Milgrom模型:信息不对称的「照妖镜」
Glosten-Milgrom模型(简称GM模型)是我个人最喜欢的。它从信息经济学的角度切入,回答了一个根本问题:做市商如何应对知情交易者?
模型假设市场上有两类交易者:
- 知情交易者:知道资产的真实价值,只在有利可图时交易
- 不知情交易者:随机交易,可能是流动性需求
做市商不知道对手方是哪一类,只能通过订单流来推断。结果就是:价差必须足够大,才能弥补知情交易者带来的损失。
GM模型给出了一个简洁的价差公式:
# Glosten-Milgrom 价差计算
def compute_gm_spread(alpha, V_H, V_L, sigma_noise):
"""
alpha: 知情交易者比例
V_H: 资产高估值
V_L: 资产低估值
sigma_noise: 噪声交易者波动
"""
# 信息不对称程度
info_asymmetry = alpha * (V_H - V_L)
# 最优价差
spread = info_asymmetry / (1 + sigma_noise)
return spread
说白了,知情交易者比例越高,价差就得越宽。这就是为什么财报发布前后,做市商都会大幅调宽价差——因为这时候知情交易者最多。
关键洞察:GM模型告诉我们,做市商本质上是在和「信息」博弈。你赚的钱,大部分来自不知情交易者的流动性需求;你亏的钱,几乎都来自知情交易者的信息优势。
4.4 三个模型的对比与选择
这三个模型各有侧重,我整理了一张对比表:
| 模型 | 核心关注点 | 输入参数 | 适用场景 |
|---|---|---|---|
| Avellaneda-Stoikov | 库存风险 | 库存量、波动率、风险厌恶系数 | 高频做市、期权做市 |
| Ho-Stoll | 订单流动态 | 订单到达率、波动率、库存 | 股票做市、ETF做市 |
| Glosten-Milgrom | 信息不对称 | 知情交易者比例、资产价值区间 | 事件驱动做市、低流动性市场 |
我个人习惯这样选:
- 如果做的是高频做市,AS模型最实用——计算简单,反应快
- 如果做的是股票或ETF做市,Ho-Stoll模型更合适——能捕捉订单流模式
- 如果市场信息不对称严重(比如财报季、并购消息),GM模型是必选项
我的建议:别只用一个模型。我在实盘系统中,通常把AS模型作为基础框架,然后用GM模型动态调整价差,最后用Ho-Stoll模型做订单流预测。三个模型配合使用,效果远好于单独用任何一个。
4.5 知识体系总览
下面这张图展示了三个模型的核心逻辑和相互关系:
这张图把三个模型的核心关注点、关键参数和适用场景都串起来了。你想想看,做市商定价其实就是在库存风险、订单流动态和信息不对称这三者之间找平衡。没有哪个模型是万能的,关键是要理解每个模型的假设和局限。
最后提醒一句:模型再好,也要结合市场微观结构来用。我曾经在某个交易所直接套用AS模型,结果发现那个交易所的订单簿结构和模型假设完全不一样——吃了大亏。所以,先理解市场,再套模型,顺序不能搞反。
公众号:蓝海资料掘金营,微信deep3321