跳转至

第75章 做市策略的数学框架

补充章节:Mathematical Framework of Market Making Strategies(原书出版后的市场发展)

在第13章中,Harris 以商人的直觉解释了做市商为何存在、如何设定价格、如何管理库存、以及如何应对知情交易者。在第71章中,我们概览了微观结构的四大经典数学模型——Roll、Kyle、Glosten-Milgrom 和 Hawkes——它们分别量化了价差、市场冲击、信息不对称和订单流的自激特征。

然而,从"理解做市"到"实现做市"之间,横亘着一道深深的鸿沟。第13章的直觉告诉你应该"低买高卖、控制库存",但它没有告诉你在 BTC/USDT 的永续合约上,当波动率为 80%、库存偏移 3 个单位时,买价应该偏移中间价多少个基点。第71章的模型给出了价差和价格冲击的静态估计,但它们不是一个做市商的决策框架——它们描述的是市场的均衡特征,而非做市商的最优行为。

本章填补这一空白。我们将完整推导 Avellaneda-Stoikov(2008)模型——将做市问题形式化为随机最优控制问题,通过 Hamilton-Jacobi-Bellman 方程得到最优报价的闭式解——并在此基础上扩展至多资产做市、参数校准和工程化部署。这是从理论到实盘的完整数学工具箱。

75.1 做市的核心数学问题

75.1.1 做市商的效用最大化

做市商的决策问题可以用一句话概括:\([0, T]\) 时间段内,通过持续调整双边报价,最大化终端财富的期望效用。

形式化表述为:

\[\max_{\delta^a, \delta^b} \mathbb{E}\left[ u\left( X_T + q_T \cdot S_T \right) \right]\]

其中: * \(X_T\) 是终端时刻的现金持有量。 * \(q_T\) 是终端时刻的库存(正值为多头、负值为空头)。 * \(S_T\) 是终端时刻的资产中间价。 * \(X_T + q_T \cdot S_T\) 是终端财富——现金加上以中间价计价的库存价值。 * \(u(\cdot)\) 是效用函数。

效用函数的选择至关重要。在 Avellaneda-Stoikov 框架中,我们采用指数效用函数(CARA Utility)

\[u(w) = -\exp(-\gamma w)\]

其中 \(\gamma > 0\)风险厌恶系数(Risk Aversion Parameter)。指数效用的关键性质是常数绝对风险厌恶(Constant Absolute Risk Aversion, CARA)——做市商对风险的厌恶程度不随财富水平变化,这在数学上带来了极大的便利:价值函数可以进行变量分离,从而得到闭式解。

为什么不用风险中性?因为风险中性的做市商(\(\gamma = 0\))对库存毫不在意,他会无限制地单方向累积头寸,直到市场反转时破产。\(\gamma\) 的引入正是将第13章中 Harris 所描述的"做市商持续不断地思考他们所承担的风险"这一直觉,转化为数学语言。

75.1.2 市场模型假设

Avellaneda-Stoikov 模型建立在以下假设之上:

假设一:资产中间价服从算术布朗运动。

\[dS_t = \sigma \, dW_t\]

注意这里没有漂移项(\(\mu = 0\))。这反映了做市商的核心立场:做市商不持有方向性观点。 他不预测价格会涨还是会跌,他的利润来源是价差而非方向。如果做市商有强烈的方向性判断,他应该去做方向性交易,而不是做市。

\(\sigma\) 是波动率参数,它决定了做市商面临的库存风险的大小。\(\sigma\) 越大,持有库存的潜在损失越大。

假设二:市价单到达服从泊松过程,到达率是报价偏移的递减函数。

做市商在买侧和卖侧分别设定报价偏移量 \(\delta^b\)\(\delta^a\)(均为正值,表示相对于中间价的距离)。他的买价为 \(S_t - \delta^b\),卖价为 \(S_t + \delta^a\)

市价卖单(击中做市商买价)的到达率为:

\[\lambda^b(\delta^b) = A \cdot e^{-k\delta^b}\]

市价买单(击中做市商卖价)的到达率为:

\[\lambda^a(\delta^a) = A \cdot e^{-k\delta^a}\]

其中: * \(A\)基准到达率——当报价偏移为零(即在中间价上报价)时的市价单到达频率。 * \(k\)到达率的价格敏感度——衡量市价单到达率对报价偏移的敏感程度。

这一指数衰减的形式有清晰的经济含义:报价偏移越大(价差越宽),成交的概率越低——因为宽价差意味着交易者需要支付更多的即时性成本,部分交易者会选择等待更好的价格。\(k\) 越大,交易者越"价格敏感",稍微扩大价差就会导致到达率大幅下降。

假设三:买卖两侧的市价单到达相互独立。 这是一个简化假设——在真实市场中,买卖双方的订单流往往高度相关(参见第71章 Hawkes 过程的讨论)。

75.1.3 做市商的状态与动态

做市商的状态由三个变量完整描述:\((t, x, q)\),分别是时间、现金和库存。

当市价买单击中做市商的卖价时: * 现金增加:\(x \to x + (S_t + \delta^a)\) * 库存减少:\(q \to q - 1\)

当市价卖单击中做市商的买价时: * 现金减少:\(x \to x - (S_t - \delta^b)\) * 库存增加:\(q \to q + 1\)

做市商的目标是:在给定初始状态 \((0, x_0, q_0)\) 的条件下,选择随时间变化的报价策略 \(\{\delta^a_t, \delta^b_t\}_{t \in [0,T]}\),以最大化终端效用。

75.2 Avellaneda-Stoikov 模型完整推导

75.2.1 Hamilton-Jacobi-Bellman 方程

定义价值函数

\[V(t, x, q, s) = \max_{\delta^a, \delta^b} \mathbb{E}\left[ -\exp\left(-\gamma(X_T + q_T S_T)\right) \,\Big|\, X_t = x, q_t = q, S_t = s \right]\]

由随机最优控制理论,\(V\) 满足 HJB 方程:

\[\frac{\partial V}{\partial t} + \frac{\sigma^2}{2} \frac{\partial^2 V}{\partial s^2} + \max_{\delta^a}\left[ \lambda(\delta^a) \left( V(t, x + s + \delta^a, q-1, s) - V \right) \right] + \max_{\delta^b}\left[ \lambda(\delta^b) \left( V(t, x - s + \delta^b, q+1, s) - V \right) \right] = 0\]

边界条件为:\(V(T, x, q, s) = -\exp(-\gamma(x + qs))\)

HJB 方程的直觉: * \(\frac{\partial V}{\partial t}\):时间的自然流逝。 * \(\frac{\sigma^2}{2} \frac{\partial^2 V}{\partial s^2}\):价格的随机波动对价值函数的影响。 * \(\lambda(\delta^a)[\cdots]\):卖单成交带来的价值跳跃,乘以成交概率。做市商选择 \(\delta^a\) 以最大化这一项。 * \(\lambda(\delta^b)[\cdots]\):买单成交带来的价值跳跃,同理。

75.2.2 对数变换与变量分离

直接求解上述 HJB 方程是困难的。Avellaneda 和 Stoikov 的关键洞察在于利用指数效用的特殊结构进行变量分离

猜测价值函数的形式为:

\[V(t, x, q, s) = -\exp\left(-\gamma(x + q \cdot s)\right) \cdot w(t, q)\]

其中 \(w(t, q)\) 是仅依赖于时间和库存的函数,边界条件 \(w(T, q) = 1\)

将这一形式代入 HJB 方程。首先计算各偏导数:

\[\frac{\partial V}{\partial t} = -\exp(-\gamma(x+qs)) \cdot \frac{\partial w}{\partial t}\]
\[\frac{\partial^2 V}{\partial s^2} = -\exp(-\gamma(x+qs)) \cdot \gamma^2 q^2 \cdot w\]

对于卖侧跳跃项,当以 \(s + \delta^a\) 的价格卖出一个单位时:

\[V(t, x + s + \delta^a, q-1, s) = -\exp\left(-\gamma(x + s + \delta^a + (q-1)s)\right) \cdot w(t, q-1)$$ $$= -\exp\left(-\gamma(x + qs + \delta^a)\right) \cdot w(t, q-1)$$ $$= V(t,x,q,s) \cdot \frac{e^{-\gamma\delta^a} \cdot w(t,q-1)}{w(t,q)}\]

类似地,对于买侧跳跃项:

\[V(t, x - s + \delta^b, q+1, s) = V(t,x,q,s) \cdot \frac{e^{-\gamma\delta^b} \cdot w(t,q+1)}{w(t,q)}\]

将以上结果代入 HJB 方程,消去公因子 \(V(t,x,q,s)\),得到关于 \(w(t,q)\) 的方程:

\[\frac{1}{w}\frac{\partial w}{\partial t} - \frac{\gamma^2 \sigma^2 q^2}{2} + \max_{\delta^a}\left[ A e^{-k\delta^a}\left( e^{-\gamma\delta^a}\frac{w(t,q-1)}{w(t,q)} - 1 \right) \right] + \max_{\delta^b}\left[ A e^{-k\delta^b}\left( e^{-\gamma\delta^b}\frac{w(t,q+1)}{w(t,q)} - 1 \right) \right] = 0\]

75.2.3 最优报价偏移量

对卖侧最优化问题,对 \(\delta^a\) 求导并令其为零:

\[\frac{d}{d\delta^a}\left[ A e^{-k\delta^a}\left( e^{-\gamma\delta^a}\frac{w(t,q-1)}{w(t,q)} - 1 \right) \right] = 0\]

\(\eta = w(t,q-1)/w(t,q)\),展开求导:

\[-k \cdot A e^{-k\delta^a}\left(\eta \cdot e^{-\gamma\delta^a} - 1\right) + A e^{-k\delta^a}\left(-\gamma \cdot \eta \cdot e^{-\gamma\delta^a}\right) = 0\]

化简得:

\[k\left(1 - \eta \cdot e^{-\gamma\delta^a}\right) = \gamma \cdot \eta \cdot e^{-\gamma\delta^a}\]
\[k = (k + \gamma) \cdot \eta \cdot e^{-\gamma\delta^a}\]

解出最优偏移量:

\[\delta^{a*} = \frac{1}{\gamma}\ln\left(\frac{(k+\gamma)\eta}{k}\right) = \frac{1}{\gamma}\ln\left(1 + \frac{\gamma}{k}\right) + \frac{1}{\gamma}\ln\eta\]

买侧的推导完全对称,令 \(\eta' = w(t,q+1)/w(t,q)\),得到:

\[\delta^{b*} = \frac{1}{\gamma}\ln\left(1 + \frac{\gamma}{k}\right) + \frac{1}{\gamma}\ln\eta'\]

75.2.4 近似闭式解

上述解仍然包含 \(w(t,q)\) 函数。在 \(\gamma\) 较小的近似下(即风险厌恶不太极端),可以对 \(\ln w\) 做二次展开,最终得到广为流传的近似闭式解

\[\delta^{a*}(t, q) = \frac{1}{k}\ln\left(1 + \frac{\gamma}{k}\right) + \frac{\gamma \sigma^2 (T-t)}{2}(2q + 1)\]
\[\delta^{b*}(t, q) = \frac{1}{k}\ln\left(1 + \frac{\gamma}{k}\right) + \frac{\gamma \sigma^2 (T-t)}{2}(-2q + 1)\]

\(\gamma/k\) 较小时,\(\frac{1}{k}\ln(1+\gamma/k) \approx \frac{1}{k} \cdot \frac{\gamma}{k} = \frac{\gamma}{k^2}\),进一步近似简化为:

\[\delta^{a*} \approx \frac{1}{k} + \frac{\gamma\sigma^2(T-t)}{2}(2q + 1)\]
\[\delta^{b*} \approx \frac{1}{k} + \frac{\gamma\sigma^2(T-t)}{2}(-2q + 1)\]

每一项都有明确的经济含义:

  • \(1/k\)(基础价差):由市价单到达率的价格敏感度决定。\(k\) 越大(交易者对价格越敏感),基础价差越小——因为在竞争激烈的市场中,稍微扩大价差就会失去订单流。这对应于第13章中 Harris 所描述的"做市商之间的竞争可能非常激烈"。
  • \(\gamma\sigma^2(T-t)\)(库存风险溢价):风险厌恶 \(\gamma\) 和波动率 \(\sigma^2\) 越大,做市商要求的补偿越高。距离终端时刻越远(\((T-t)\) 越大),不确定性越高,溢价越大。
  • \(q\) 的影响(库存偏斜):当 \(q > 0\)(持有多头库存),卖价偏移缩小(更积极地卖出)、买价偏移增大(减少买入);\(q < 0\) 时完全对称。这正是第13章中"想要卖出的做市商会报出较低的买价和卖价"的精确数学表达。

75.2.5 保留价格与最优价差

闭式解还可以用另一种更直观的方式表达。

保留价格(Reservation Price)

\[r(t, q) = S_t - q \cdot \gamma \cdot \sigma^2 \cdot (T - t)\]

保留价格是做市商根据当前库存调整后的"主观公允价值"。它与中间价 \(S_t\) 的偏离方向由库存决定: * 持有多头库存(\(q > 0\))时,\(r < S_t\)——做市商急于卖出,他的主观公允价值低于市场中间价。 * 持有空头库存(\(q < 0\))时,\(r > S_t\)——做市商急于买入。 * 库存为零(\(q = 0\))时,\(r = S_t\)——主观公允价值等于中间价。

做市商实际上是以保留价格为中心对称报价,然后在两侧各加上一个固定的基础价差。

最优价差(Optimal Spread)

\[\delta^{a*} + \delta^{b*} = \frac{2}{k}\ln\left(1 + \frac{\gamma}{k}\right) + \gamma\sigma^2(T-t)\]

近似为:

\[\text{Spread}^* \approx \frac{2}{k} + \gamma\sigma^2(T-t)\]

价差由两个组成部分驱动: * \(2/k\)逆向选择补偿——即使库存为零,做市商仍然需要这个最小价差来补偿被知情交易者"收割"的风险以及运营成本。这与 Glosten-Milgrom 模型(第71章)的核心结论一致:价差的存在是信息不对称的必然结果。 * \(\gamma\sigma^2(T-t)\)库存风险溢价——随时间和波动率增长的风险补偿。

75.3 库存管理:从理论到实践

75.3.1 库存风险的本质

在 Avellaneda-Stoikov 模型中,库存管理的数学本质已经清晰:通过保留价格的偏移,做市商不断将报价向有利于减少库存的方向倾斜。然而,理论模型假设的是连续时间、无限流动性和完美执行——这些在实盘中都不成立。

库存为什么危险?因为它代表非自愿的方向性敞口。做市商的利润来源是价差而非方向,但库存使他被迫承担了方向性风险。这一风险的数学表达很直接:

\[\text{库存PnL} = q_t \cdot \Delta S_t = q_t \cdot \sigma \cdot \Delta W_t\]

当库存为 \(q\) 个单位时,做市商在 \(\Delta t\) 时间内因价格变动产生的损益的方差为 \(q^2 \sigma^2 \Delta t\)。如果库存累积到很大的水平且持有时间很长,这一方差可以远超价差收益。

75.3.2 库存控制的实践策略

在实盘中,A-S 模型的保留价格偏移提供了库存管理的理论骨架,但实践中通常需要叠加额外的控制层:

策略一:硬限制(Hard Limits)。 设定库存上下限 \(q \in [-Q_{\max}, Q_{\max}]\)。当库存达到 \(Q_{\max}\) 时,只挂卖单(单边报价);达到 \(-Q_{\max}\) 时,只挂买单。这是最粗暴但最有效的尾部风险控制——A-S 模型的保留价格虽然会随库存增大而偏移,但它永远不会完全关闭一侧报价。

策略二:报价倾斜(Quote Skewing)。 将报价的中心点从中间价 \(S_t\) 偏移至 \(S_t - q \cdot \phi\)(其中 \(\phi\) 是倾斜系数),但保持价差宽度不变。与 A-S 模型通过不对称调整 \(\delta^a\)\(\delta^b\) 的方式不同,倾斜策略的优势在于不改变价差宽度

\[\text{Bid} = S_t - q\phi - \frac{\text{Spread}}{2}, \quad \text{Ask} = S_t - q\phi + \frac{\text{Spread}}{2}\]

在竞争激烈的市场中,价差宽度直接决定了做市商在订单簿中的优先级。宽价差意味着成交概率下降;倾斜策略在保持竞争力的同时实现库存控制。

策略三:主动对冲(Active Hedging)。 当库存超过阈值 \(|q| > Q_{\text{threshold}}\) 时,通过发送市价单主动减仓。这意味着做市商放弃了这部分成交的价差收益,以换取立即减少方向性风险。

主动对冲的成本可以精确计算:每次对冲的即时成本是对手方的半个价差(约 \(1/(2k)\)),加上市场冲击成本。做市商需要在"库存风险成本"和"对冲执行成本"之间做权衡——当 \(\gamma\sigma^2(T-t)q\) 的绝对值大于对冲成本时,主动对冲是划算的。

策略四:跨品种对冲(Cross-Asset Hedging)。 利用相关资产进行 Delta 对冲。例如,当在 BTC/USDT 现货市场做市时,可以在 BTC 永续合约上做反向操作来对冲库存。如果两个市场的相关系数为 \(\rho\),则对冲后的残余方差为:

\[\text{Var}_{\text{residual}} = q^2 \sigma^2 (1 - \rho^2) \Delta t\]

\(\rho\) 接近 1(如 BTC 现货与 BTC 永续),残余风险极小;当 \(\rho\) 仅为 0.7(如 BTC 与 ETH),对冲效果有限。

75.3.3 库存风险的量化监控

在实盘运行中,做市商需要持续监控以下库存相关指标:

指标 计算方法 监控目的
平均绝对库存 $\bar{ q
库存周转率 总成交量 / $\bar{ q
库存持有时间 从库存偏离零到回归零的平均时间 越短意味着风险暴露越短
库存 PnL 归因 区分来自价差的利润和来自库存方向性的利润 确保利润来源是做市而非赌方向
库存方差贡献 \(q^2\sigma^2\Delta t\) / 总 PnL 方差 库存风险占总风险的比例

库存 PnL 归因尤其重要。如果做市商的利润中有大量来自库存方向性的成分,这意味着其盈利能力高度依赖于市场方向——这不是可持续的做市业务,而是伪装成做市的方向性投机。

75.4 多资产做市

75.4.1 相关资产做市的挑战

当做市商同时在多个相关资产上做市时——例如同时在 BTC/USDT 和 ETH/USDT 上做市——单资产的 Avellaneda-Stoikov 模型不再适用。原因在于:

  • 信息溢出(Information Spillover):资产 A 的订单流可能包含对资产 B 的信息。例如,ETH 的大量卖单可能预示 BTC 价格即将下跌(因为两者高度正相关)。将两个标的视为独立问题分别管理,会忽略这一关键信息。
  • 组合风险(Portfolio Risk):库存风险不再是单一维度。持有 BTC 多头和 ETH 多头的风险远大于持有 BTC 多头和 BTC 空头的风险(后者近乎对冲)。做市商需要管理的是组合层面的风险因子敞口,而非逐个资产的库存。

75.4.2 多资产 A-S 模型扩展

将 Avellaneda-Stoikov 框架扩展至 \(N\) 个资产。状态空间变为 \((t, x, q_1, \ldots, q_N, S_1, \ldots, S_N)\)

价格动态 服从多维算术布朗运动:

\[d\mathbf{S}_t = \boldsymbol{\Sigma} \, d\mathbf{W}_t\]

其中 \(\boldsymbol{\Sigma}\)\(N \times N\) 的波动率矩阵(可通过 Cholesky 分解为协方差矩阵 \(\boldsymbol{\Sigma}\boldsymbol{\Sigma}^\top\)),\(\mathbf{W}_t\)\(N\) 维标准布朗运动。

终端效用 变为:

\[u = -\exp\left(-\gamma\left(X_T + \sum_{i=1}^N q_{i,T} S_{i,T}\right)\right)\]

沿用与单资产相同的推导路径,多资产的保留价格向量为:

\[r_i(t, \mathbf{q}) = S_i - \gamma \sum_{j=1}^N \Sigma_{ij} \cdot q_j \cdot (T - t)\]

其中 \(\Sigma_{ij}\) 是资产 \(i\)\(j\) 之间的协方差。

这一公式包含了一个深刻的洞察:资产 \(i\) 的保留价格不仅取决于自身库存 \(q_i\),还取决于所有相关资产的库存。 具体而言:

  • 当做市商持有大量 BTC 多头库存(\(q_{\text{BTC}} \gg 0\))时,ETH 的保留价格也应下调——因为 BTC 和 ETH 高度正相关(\(\Sigma_{\text{BTC,ETH}} > 0\)),BTC 多头库存使得做市商已经承担了大量"加密市场整体方向"的风险,在 ETH 上继续积累同方向库存的边际风险更高。
  • 如果做市商同时持有 BTC 多头和 ETH 空头,且两者正相关,则两个头寸部分对冲,总体风险低于单独考虑的各自风险之和——保留价格的调整幅度因此更小。

75.4.3 因子做市模型

\(N\) 较大时(例如同时做市 20 个加密资产),直接管理 \(N\) 维库存向量在计算上和概念上都很困难。因子做市模型将问题降维。

假设 \(N\) 个资产的收益可以分解为 \(K\) 个因子(\(K \ll N\))的线性组合:

\[\mathbf{R} = \mathbf{B} \mathbf{F} + \boldsymbol{\epsilon}\]

其中 \(\mathbf{B}\)\(N \times K\) 的因子载荷矩阵,\(\mathbf{F}\)\(K\) 维因子收益,\(\boldsymbol{\epsilon}\) 是特质收益(各资产独立的噪声)。

做市商的因子层面库存为:

\[\mathbf{q}_{\text{factor}} = \mathbf{B}^\top \mathbf{q}_{\text{asset}}\]

因子保留价格的调整为:

\[\Delta r_i = -\gamma \sum_{k=1}^K B_{ik} \cdot \text{Var}(F_k) \cdot q_{\text{factor},k} \cdot (T-t)\]

这将库存管理从 \(N\) 维资产空间简化为 \(K\) 维因子空间。在加密市场中,常用的因子包括: * 市场因子:加密市场整体方向(近似于 BTC 回报率)。 * 板块因子:例如 DeFi vs Layer 1 vs Meme 币的相对表现。 * 波动率因子:高波动资产 vs 低波动资产的相对表现。

做市商的核心任务变为:控制因子层面的库存敞口,而非逐个资产地管理库存。如果市场因子的库存过大,可以通过在 BTC 上做反向交易来快速降低——不需要在每个标的上逐一调整。

75.5 参数校准:从传统市场到加密市场

75.5.1 关键参数的估计方法

Avellaneda-Stoikov 模型有四个核心参数:\(\sigma\)\(A\)\(k\)\(\gamma\)。每个参数的校准方法如下。

波动率 \(\sigma\) 的估计。 使用已实现波动率(Realized Volatility),通常在 1-5 分钟频率上计算:

\[\hat{\sigma} = \sqrt{\frac{1}{N}\sum_{i=1}^{N}(S_{t_i} - S_{t_{i-1}})^2 / \Delta t}\]

注意在算术布朗运动框架下,\(\sigma\) 是价格而非收益率的标准差。在不同市场条件下,\(\sigma\) 的典型量级差异巨大:

市场 资产 典型年化波动率 5分钟已实现波动率
美股 SPY ~15% ~0.02%
加密现货 BTC/USDT ~50-80% ~0.08-0.15%
加密永续 BTC-PERP ~60-100% ~0.10-0.20%
加密山寨 SOL/USDT ~80-150% ~0.15-0.30%

基准到达率 \(A\) 的估计。 统计单位时间内的市价单到达次数。在实操中,通常按以下步骤进行: 1. 收集一段时间内的逐笔成交数据(Trades)。 2. 区分主动买入(Taker Buy)和主动卖出(Taker Sell)。 3. 分别统计每分钟(或每秒)的到达次数,取均值作为 \(\hat{A}\)

价格敏感度 \(k\) 的估计。 这是最难估计的参数。理论上,需要观察不同报价偏移 \(\delta\) 下的成交频率 \(\lambda(\delta)\),然后拟合指数衰减模型 \(\lambda(\delta) = Ae^{-k\delta}\)。实操中,可以通过以下方法近似: 1. 收集订单簿快照数据,统计不同价位上限价单的成交率。 2. 将价位(相对于中间价的距离)作为自变量 \(\delta\),成交率作为因变量 \(\lambda\),进行指数回归。 3. 回归系数即为 \(\hat{k}\)

风险厌恶 \(\gamma\) 的设定。 \(\gamma\) 通常不是从数据中估计的,而是由做市商根据自身的风险偏好和资本约束设定的。一种常用的标定方法是通过最大可接受库存来反推:

\[\gamma = \frac{\delta_{\text{target}}}{Q_{\max} \cdot \sigma^2 \cdot T}\]

其中 \(\delta_{\text{target}}\) 是做市商希望在库存达到 \(Q_{\max}\) 时,保留价格相对于中间价的最大偏移量。

75.5.2 加密市场的特殊校准挑战

将 A-S 模型从传统股票市场移植到加密市场时,面临若干独有的挑战:

挑战一:波动率的强非平稳性。 加密市场的波动率在不同 regime 下差异极大——牛市末期的 \(\sigma\) 可以是平静期的 3-5 倍。使用固定窗口估计的 \(\sigma\) 会严重滞后于真实波动率的变化。

应对策略:使用指数加权移动平均(EWMA)实时更新:

\[\hat{\sigma}^2_t = \lambda \hat{\sigma}^2_{t-1} + (1-\lambda)(S_t - S_{t-1})^2 / \Delta t\]

其中 \(\lambda\) 的典型值为 0.94-0.99,取决于更新频率。

挑战二:到达率的日内周期性。 传统股票市场的订单到达率呈"U 型"日内模式(开盘和收盘时高、盘中低)。加密市场由于全天候运行,到达率呈现三峰结构——分别对应亚洲(UTC 00:00-08:00)、欧洲(UTC 08:00-16:00)和美洲(UTC 16:00-24:00)交易时段。基准到达率 \(A\) 需要根据时段动态调整。

挑战三:清算订单的影响。 加密市场中,强制平仓(Liquidation)产生的市价单不符合泊松过程的独立性假设。它们具有以下特征: * 集群式到达:清算瀑布中,大量清算单在极短时间内密集到达。 * 与价格高度相关:价格下跌触发多头清算(产生卖单),卖单压力导致价格进一步下跌,触发更多清算——这是一个正反馈循环。 * 规模非均匀:清算单的规模远大于普通市价单。

在清算瀑布发生期间,A-S 模型的泊松假设完全失效。实践中的做法是:检测到清算集群信号(如未平仓量骤降、资金费率极端化)时,大幅扩大报价价差或暂停做市。

挑战四:资金费率的影响。 在永续合约上做市时,持有头寸会产生资金费率成本(或收益)。假设当前资金费率为 \(f\)(正值表示多头付给空头),持有多头库存 \(q > 0\) 在下一个资金费率结算周期内的期望成本为 \(q \cdot f \cdot S_t\)

修正后的保留价格为:

\[r_{\text{perp}}(t, q) = S_t - q\gamma\sigma^2(T-t) - q \cdot f \cdot \tau\]

其中 \(\tau\) 是距离下一次资金费率结算的时间。当 \(f > 0\) 时,做市商更不愿意持有多头库存(保留价格进一步下调);当 \(f < 0\) 时反之。

75.5.3 实时参数更新策略

在实盘中,参数不能是固定的常数——市场条件持续变化,参数估计必须跟随。但更新过于频繁又会引入过拟合短期噪声的风险。实践中的平衡策略:

参数 更新频率 更新方法 约束条件
\(\sigma\) 每 1-5 分钟 EWMA 设定上下限,防止极端值
\(A\) 每 5-15 分钟 滑动窗口均值 按时段分组统计
\(k\) 每 1-4 小时 贝叶斯在线更新 先验约束,防止跳变
\(\gamma\) 手动调整或按规则 根据资本和风险预算 与最大库存限制联动

贝叶斯在线更新(Bayesian Online Learning)对于 \(k\) 的估计尤其有用:以前一时段的估计 \(\hat{k}_{t-1}\) 作为先验,用当前时段的新数据更新后验。这种方法的优势在于,先验提供了平滑效果,防止短时间内的异常数据导致参数剧烈跳变。

75.6 从理论到实盘:工程化考量

75.6.1 离散化与简化

Avellaneda-Stoikov 的闭式解是在连续时间、连续报价空间下推导的。在实盘部署时,需要进行以下离散化处理:

时间离散化。 连续时间模型要求在每一个无穷小的时间区间内重新计算最优报价。实际上,做市商以事件驱动(Event-driven)定时轮询(Polling)的方式更新报价: * 事件驱动:每当中间价变动超过阈值、库存变化或订单成交时,重新计算报价。 * 定时轮询:每隔固定时间间隔(如 100 毫秒或 1 秒)重新计算。

价格离散化。 交易所的最小价格变动(tick size)限制了报价的精度。理论上的最优偏移 \(\delta^* = 0.73\) 个 tick 在实际中只能选择 0 tick 或 1 tick。这意味着最优报价需要离散化到最近的合法报价:

\[\delta_{\text{actual}} = \text{round}(\delta^* / \text{tick\_size}) \times \text{tick\_size}\]

这一离散化可能导致理论最优与实际执行之间的显著差距,尤其在价差很窄(1-2 tick)的高流动性市场中。

库存离散化。 在实际中,库存是离散的整数单位。A-S 模型中库存是连续变量的假设在大多数场景下不是问题,但在管理小规模库存时,离散效应更为明显。

75.6.2 超越 A-S 的现代改进方向

Avellaneda-Stoikov 模型是做市策略的数学基石,但它并非终点。以下是将理论模型推向实盘可用性的几个关键改进方向。

改进一:动态逆向选择建模。 A-S 模型隐含假设所有市价单的信息含量相同——它们都服从相同参数的泊松过程。但在真实市场中,做市商面对的市价单分为两类: * 非知情订单:随机到达的散户订单。做市商从中赚取价差。 * 知情订单:掌握价格即将变动信息的交易者的订单。做市商将因此亏损。

实践中需要根据订单流毒性(Order Flow Toxicity)的实时估计动态调整价差。当检测到毒性升高(例如 VPIN 指标飙升、订单流不平衡加剧)时,应扩大价差甚至暂停做市;当毒性降低时,收窄价差以增加成交量。

改进二:多交易所做市与腿部风险。 当做市商在多个交易所同时做市时,面临腿部风险(Leg Risk):在交易所 A 上成交了一笔买单,但在交易所 B 上对应的卖单尚未成交,中间的时间差暴露了方向性风险。

多交易所做市的最优报价不仅取决于本交易所的订单簿状态,还取决于其他交易所的订单簿深度、延迟特征和成交概率。这使得问题的维度大幅增加,超出了 A-S 模型的解析范围。

改进三:队列位置管理。 在价格/时间优先的限价订单簿中,仅调整报价水平不够——同一价位上的挂单按照时间优先顺序排列。越早挂出的订单越先成交。因此,做市商不仅要决定"在哪个价位挂单",还要管理"挂单后在队列中的位置"。

频繁撤单重挂意味着失去队列优先权。在竞争激烈的市场中,做市商面临一个权衡:是根据最新信息调整报价(保持理论最优),还是保持当前挂单以维持队列位置(保持成交概率)?

改进四:强化学习方法。 当市场动态过于复杂——非平稳波动率、非泊松到达、多交易所交互、清算机制——无法用封闭模型精确描述时,深度强化学习(Deep Reinforcement Learning)提供了另一条路径。

RL 代理直接从模拟环境或历史数据中学习最优报价策略,无需显式指定模型假设。状态空间包含(库存、中间价、订单簿快照、波动率估计、资金费率等),动作空间是离散化的报价偏移组合,奖励函数是风险调整后的 PnL。

然而,RL 方法面临自身的挑战:样本效率低、训练不稳定、过拟合模拟器而非真实市场(sim-to-real gap)。当前的最佳实践是将 A-S 模型作为基线策略(baseline),用 RL 在基线之上学习增量改进。


要点回顾

  • Avellaneda-Stoikov 模型将做市问题形式化为随机最优控制问题,通过 HJB 方程推导出最优报价的闭式解,为做市策略提供了完整的数学基础。

  • 最优报价由两部分驱动:基础价差(\(1/k\),补偿逆向选择和做市成本)和库存调整项(\(\gamma\sigma^2(T-t) \cdot q\),反映持仓风险),两者分别对应第13章中价差成因和库存管理的定性讨论。

  • 保留价格 \(r = S - q\gamma\sigma^2(T-t)\) 是做市商根据库存调整后的"主观公允价值"——持有多头库存时低于中间价,空头库存时高于中间价,库存为零时等于中间价。

  • 多资产做市的关键是管理因子层面的库存敞口,而非逐个资产独立管理。资产 \(i\) 的保留价格取决于所有相关资产的库存,因此需要在协方差矩阵的框架下统一管理风险。

  • 从传统市场到加密市场的参数校准面临波动率非平稳、清算订单集群、资金费率和三峰日内周期等特殊挑战。这些挑战要求参数估计必须是在线、自适应的,而非静态的。

  • 实际部署需要将连续时间模型离散化,并加入逆向选择的动态估计、多交易所腿部风险管理、队列位置优化等工程化考量。A-S 模型是理论基石,但从基石到实盘系统,仍有大量工程化工作。

思考题

  1. 在 Avellaneda-Stoikov 模型中,如果做市商的风险厌恶系数 \(\gamma\) 趋近于零(即风险中性),最优报价策略会变成什么?保留价格和最优价差分别如何简化?这种策略在实际中是否可行?为什么大多数做市商不可能是风险中性的?

  2. 为什么做市商在高波动率环境下应该扩大报价价差?试从两个角度给出解释:(a)从效用最大化的数学公式出发;(b)从第13章中 Harris 描述的实际风险管理角度出发。两种解释是否一致?

  3. 设计一个简化的库存管理策略:当库存 \(|q| > Q_{\text{threshold}}\) 时,做市商可以选择"倾斜报价"(保持价差不变但偏移中心价)或"主动对冲"(发送市价单减仓)。分析两种方法各自的成本和风险。在什么市场条件下你会偏好其中一种?

  4. 假设做市商同时在 BTC/USDT 和 ETH/USDT 上做市,两者的相关系数约为 0.85。试用多资产保留价格公式 \(r_i = S_i - \gamma\sum_j \Sigma_{ij} q_j (T-t)\) 解释:为什么当持有大量 BTC 多头库存时,做市商应该降低 ETH 的保留价格?如果将两个标的视为独立问题分别管理,会导致什么后果?

  5. 加密永续合约的资金费率如何影响做市商的保留价格?当资金费率为正且数值较大时(例如 0.1%/8小时),做市商应如何调整其买卖报价?试推导一个加入资金费率项的修正保留价格公式,并讨论资金费率的不确定性(资金费率本身随时间变化)如何进一步影响做市策略。

主要参考资料

  1. "High-Frequency Trading in a Limit Order Book" (Avellaneda & Stoikov, 2008) — 做市商最优报价策略的经典模型,本章核心推导的来源。
  2. "Dealing with the Inventory Risk: A Solution to the Market Making Problem" (Gu\'{e}ant, Lehalle & Fernandez-Tapia, 2013) — A-S 模型的严格推广,深入分析了库存惩罚的数学结构与数值解法。
  3. "Market Microstructure in Practice" (Lehalle & Laruelle, 2018) — 从理论到实践的做市策略工程化指南,包含大量实盘经验。
  4. "Optimal Market Making" (Gu\'{e}ant, 2017) — 多资产做市和因子做市的完整数学框架。
  5. "Algorithmic and High-Frequency Trading" (Cartea, Jaimungal & Penalva, 2015) — 完整的算法交易数学框架,覆盖做市、最优执行和统计套利的统一处理。
  6. "Market Making and Mean Reversion" (Cartea, Jaimungal & Penalva, 2015) — 在均值回归假设下的做市模型扩展,适用于价格具有可预测成分的场景。