Avellaneda & Stoikov (2008) — High-frequency trading in a limit order book
作者: Marco Avellaneda、Sasha Stoikov(New York University 数学系)。
发表: Quantitative Finance 8(3): 217-224, 2008 年 4 月。DOI 10.1080/14697680701381228。 本文是做市商定价理论的起点。PDF 8 页。
一句话总结
做市商的报价该挂在中间价上方还是下方,取决于他手上压了多少股票:压得多就主动把买价抬高(急着接回来)、卖价压低(急着卖掉),压得空头就反过来;同时还要再往外挪一点距离,因为挂得越远被成交的概率越低、赚的价差越大。
核心:两步定报价
论文的结论是一个可执行的两步法,不是一条公式直接给出答案。
第一步:算出「自己心里值多少钱」(保留价 reservation price)
设中间价走布朗运动 dS_u = \sigma\,dW_u,做市商目标是最大化终端时刻的期望指数效用 E[e^{-\gamma(X_T + q_T S_T)}]。\gamma 是风险厌恶系数。定义保留买价 r^b = 让「当前组合」和「当前组合 + 1 股」对做市商价值相同的那个买价;保留卖价 r^a 同理。
不做交易、单纯持有 q 股到期的情形下,这两个价格有闭式解:
r^a(s,q,t) = s + (1 - 2q)\gamma\sigma^2 (T-t)/2, \qquad r^b(s,q,t) = s + (-1 - 2q)\gamma\sigma^2 (T-t)/2
取两者平均得保留价 (reservation / indifference price):
r(s,q,t) = s - q\,\gamma\sigma^2 (T-t)
这就是全文最关键的一行:保留价是中间价减去一个正比于库存 q、正比于剩余时间 T-t 的项。
举例:中间价 s=100,风险厌恶 \gamma=1,波动 \sigma=0.2,距到期还有 T-t=0.5,做市商手上压了 q=10 股。 保留价 = 100 - 10 \times 1 \times 0.04 \times 0.5 = 100 - 0.2 = 99.8。 也就是说他心理上愿意用 99.8 卖出(低于中间价 100),因为压了 10 股要出。若 q=-10(空头),保留价变成 100.2,他会抢着在 100.2 买回来。
为什么是 q 而不是 q^2:一项持仓对组合方差的边际贡献是 2q\sigma^2,在指数效用下要求这等于风险厌恶 \gamma,解出 q 正好是线性的。这是「库存越小越不慌、临近到期更敢压货」两句话的共同来源。
第二步:把保留价标定到订单簿的成交概率上
报价离中间价的距离记作 \delta^a = p^a - s(卖价在上)、\delta^b = s - p^b(买价在下)。被成交的概率是距离的递减函数——挂得越远越不容易成交。论文取指数衰减形式 \lambda^a(\delta^a) = \lambda^b(\delta^b) = A e^{-k\delta}。
k 怎么来的:把市场单的规模分布(幂律 f(x)\sim x^{-1-\xi})和临时冲击(对数形式 \delta p\sim\ln Q)做积分:
\lambda(\delta) = \Lambda\, P(\delta p > \delta) = \Lambda\, P\big(Q > e^{K\delta}\big) = \frac{\Lambda}{\xi}\int_{e^{K\delta}}^\infty x^{-1-\xi}dx = A e^{-k\delta}
其中 A = \Lambda/\xi,k = \xi K。若冲击取幂律形式 \delta p \sim Q^{\zeta},则得到幂律形式的强度 \lambda(\delta) \propto \delta^{-\xi/\zeta}。
一阶最优性条件给出最优距离与保留价之间的隐式关系:
s - r^b(s,q,t) = \delta^b + \frac{1}{\gamma}\ln\!\left(1 + \frac{\gamma}{k}\right), \qquad r^a(s,q,t) - s = \delta^a + \frac{1}{\gamma}\ln\!\left(1 + \frac{\gamma}{k}\right)
两式相减,价差与库存无关:
\delta^a + \delta^b = \frac{2}{\gamma}\ln\!\left(1 + \frac{\gamma}{k}\right)
价差由两部分构成:\frac{2}{\gamma}\ln(1+\gamma/k),其中一项来自库存敏感度,另一项来自订单到达强度 k。这个「库存不影响价差、只影响价差中心位置」的结论只在指数型强度假设下成立——论文自己写明了这一点。
数值模拟:1000 次路径
参数 s=100、T=1、\sigma=2、\gamma=0.1、k=1.5、A=140、dt=0.005。基准策略是「对称策略」:用同样宽的价差,但始终以中间价为中心(不看库存)。
| 策略 | 平均价差 | 利润 | 利润标准差 | 期末库存 | 期末库存标准差 |
|---|---|---|---|---|---|
| 库存策略(\gamma=0.1) | 1.49 | 65.0 | 6.6 | 0.08 | 2.9 |
| 对称策略 | 1.49 | 68.4 | 12.7 | 0.26 | 8.4 |
| 策略 | 平均价差 | 利润 | 利润标准差 | 期末库存 | 期末库存标准差 |
|---|---|---|---|---|---|
| 库存策略(\gamma=0.01) | 1.35 | 68.6 | 8.7 | 0.12 | 5.1 |
| 对称策略 | 1.35 | 68.8 | 12.8 | 0.09 | 8.7 |
读这张表的三个要点:
- 对称策略赚得多一点,但波动大得多(68.4 vs 65.0 的利润,12.7 vs 6.6 的标准差)。对称策略以中间价为中心,报价更靠近中间价、成交更频繁,所以多赚一点、少赚的那点就是风险溢价。
- 库存策略把期末库存的波动压到 1/3(2.9 vs 8.4)。这才是它存在的意义——不是多赚钱,是少担风险。
- \gamma 越小两者越接近。\gamma=0.01 时利润几乎相同(68.6 vs 68.8),而 \gamma\to 0 时两者完全相同——风险中性的人不需要库存管理。
论文的贡献边界
- 模型是「零信息」的:做市商对漂移和自相关没有观点,中间价的随机性只用来度量他持仓的股价风险。真正有信息的情形(adverse selection)不在本文范围内。
- 中间价不可免费交易。论文把 S 当作估值基准而非可交易价,实际做市时想在中间价平仓是有成本的。
- 无限期版本把保留价写成 r(s,q) = s - q\sigma^2/\Lambda,\Lambda 可解释为允许的最大库存规模。
- 全程是模拟,没有真实市场数据回测。
对本 wiki 的位置
- 入口概念: 做市商与库存风险 (Market Making and Inventory Risk —— 本文是这一页的理论起点
- 解析解的后继: Guéant-Lehalle-Fernandez-Tapia 2013 把本文需要数值求解的 PDE 变成闭式;Guéant 2016 是闭式解路线的另一个版本
- 对照视角: Gould-Bonart 2016 论证排队位置(而非总深度)才是预测下一秒价格的关键——与本文「深度 \lambda 决定报价距离」的思路正好相反
- 已有相关页: Optimal Execution(Almgren-Chriss 是执行侧,不是做市侧)、永久与临时市场冲击(g(v) 永久冲击对应本文对中间价的扰动,h(v) 临时冲击对应 \delta p)
- 作者: Marco Avellaneda · Sasha Stoikov
文献谱系
本文作者自己列出了它站在谁的肩膀上:Ho & Stoll (1981) 的垄断做市商最优定价(同样的 HJB 结构,但指定一个「真实价格」)、Ho & Stoll (1980) 的竞争下报价等于保留价、以及经济物理学派(Bouchaud、Potters、Smith 等)提供的订单簿统计规律——本文正是把前者的效用框架与后者的到达率统计拼接起来的产物。