从经典文献理解高频做市
本文主要以Avellaneda & Stoikov (2008)为基础模型,初步探讨高频做市的一些核心要点,并给出一些模拟辅以说明。

1. 什么是做市商?
做市商是一个古老且普遍的职业。不仅仅是当今华尔街各大专业金融机构如高盛,摩根斯坦利等,他们在众多市场都扮演做市商的角色,小到街边菜市场卖菜的商贩,他们其实也扮演着市场“做市”的角色,所以“做市”本身并不神秘。
做市本身“不生产水”,却是“大自然的搬运工”,流动性本身非常抽象,但具体到交易层面,就是让市场的交易更加平顺,即买卖价差变小,并且订单簿的深度增加。同样一个大单子,可能造成的价格冲击,在流动性好的市场相比流动性差的市场就会小很多,价格的“韧性”会强很多。
在Crypto这样24小时交易的市场,做市对于整个生态都非常重要。本质上,做市就是”做流量的生意“。一位典型的高频做市商,在市场中一般会同时报价差非常小的买单和卖单,在市场价格随机变动中,透过低买高卖赚取一定(微薄但高频次)的价差,并不断为市场提供流动性。一切到目前为止都很美好,但市场的剧烈波动,可能导致做市商的存货敞口失衡,如果没有一个合理的模型作为辅助,做市商会举步维艰。
2. Avellaneda-Stoikov(AS)
模型简化描述
AS模型假设:
股价遵循算术布朗运动: dSt=σdWt
做市商通过限价单进行交易 交易到达率遵循泊松过程,强度取决于价差大小
这里有个有趣的地方:AS模型假设股价没有漂移项(drift),也就是说股价是随机漫步的。这听起来很反直觉,但实际上对于高频做市来说,短期内股价的方向性很难预测,所以这个假设是合理的。
AS模型的精髓在于以下几个关键公式:
保留价格(Reservation Price): r = s - qγσ²(T - t) 其中:s是当前中间价, q是当前库存γ 是风险厌恶系数, σ是波动率,(T−t) 是剩余时间
最优买卖价差: δask+δbid=γσ2(T−t)+2γln(1+γκ) 其中,δask和δbid分别表示离保留价格的最优卖出价差和最优买入价差,γ是风险厌恶系数,σ2价格的方差,T−t从当前时刻到收盘的剩余时间(在Crypto市场可以根据自身需求设置),κ 订单到达的流动性参数。
"没有谈不成的买卖,只有谈不拢的价格",上面的最优卖卖价差表明,最优价差由两部分组成:1. 库存风险补偿 γσ2(T−t); 2.流动性补偿 2γln(1+γκ)。
3. 数值示例
我们通过python代码将AS模型公式形象化理解。
输出:
保留价格 r = 99.968000
最优买入报价 bid = 99.314615
最优卖出报价 ask = 100.621385
最优报价距离 delta* = 1.306770
在编写完上面的计算函数后,我们可以生成一个纵向为存货,横向为波动率的矩阵,然后每个元素为上面对应的(保留价格,最优买入报价,最优卖出报价,最优报价距离)
二维矩阵(保留价格)
sigma 0.3 0.4 0.5 0.6 0.7 0.8
inventory
-50.0 100.45 100.80 101.25 101.80 102.45 103.20
-40.0 100.36 100.64 101.00 101.44 101.96 102.56
-30.0 100.27 100.48 100.75 101.08 101.47 101.92
-20.0 100.18 100.32 100.50 100.72 100.98 101.28
-10.0 100.09 100.16 100.25 100.36 100.49 100.64
0.0 100.00 100.00 100.00 100.00 100.00 100.00
10.0 99.91 99.84 99.75 99.64 99.51 99.36
20.0 99.82 99.68 99.50 99.28 99.02 98.72
30.0 99.73 99.52 99.25 98.92 98.53 98.08
40.0 99.64 99.36 99.00 98.56 98.04 97.44
50.0 99.55 99.20 98.75 98.20 97.55 96.80
二维矩阵(最优买入报价)
sigma 0.3 0.4 0.5 0.6 0.7 0.8
inventory
-50.0 99.80 100.15 100.59 101.14 101.78 102.52
-40.0 99.71 99.99 100.34 100.78 101.29 101.88
-30.0 99.62 99.83 100.09 100.42 100.80 101.24
-20.0 99.53 99.67 99.84 100.06 100.31 100.60
-10.0 99.44 99.51 99.59 99.70 99.82 99.96
0.0 99.35 99.35 99.34 99.34 99.33 99.32
10.0 99.26 99.19 99.09 98.98 98.84 98.68
20.0 99.17 99.03 98.84 98.62 98.35 98.04
30.0 99.08 98.87 98.59 98.26 97.86 97.40
40.0 98.99 98.71 98.34 97.90 97.37 96.76
50.0 98.90 98.55 98.09 97.54 96.88 96.12
二维矩阵(最优卖出报价)
sigma 0.3 0.4 0.5 0.6 0.7 0.8
inventory
-50.0 101.10 101.45 101.91 102.46 103.12 103.88
-40.0 101.01 101.29 101.66 102.10 102.63 103.24
-30.0 100.92 101.13 101.41 101.74 102.14 102.60
-20.0 100.83 100.97 101.16 101.38 101.65 101.96
-10.0 100.74 100.81 100.91 101.02 101.16 101.32
0.0 100.65 100.65 100.66 100.66 100.67 100.68
10.0 100.56 100.49 100.41 100.30 100.18 100.04
20.0 100.47 100.33 100.16 99.94 99.69 99.40
30.0 100.38 100.17 99.91 99.58 99.20 98.76
40.0 100.29 100.01 99.66 99.22 98.71 98.12
50.0 100.20 99.85 99.41 98.86 98.22 97.48
二维矩阵(最优买卖价差)
sigma 0.3 0.4 0.5 0.6 0.7 0.8
inventory
-50.0 1.3 1.31 1.32 1.33 1.34 1.35
-40.0 1.3 1.31 1.32 1.33 1.34 1.35
-30.0 1.3 1.31 1.32 1.33 1.34 1.35
-20.0 1.3 1.31 1.32 1.33 1.34 1.35
-10.0 1.3 1.31 1.32 1.33 1.34 1.35
0.0 1.3 1.31 1.32 1.33 1.34 1.35
10.0 1.3 1.31 1.32 1.33 1.34 1.35
20.0 1.3 1.31 1.32 1.33 1.34 1.35
30.0 1.3 1.31 1.32 1.33 1.34 1.35
40.0 1.3 1.31 1.32 1.33 1.34 1.35
50.0 1.3 1.31 1.32 1.33 1.34 1.35
通过观察上面的模拟矩阵,可知:
1.保留价格(做市商认为合理的公允价格),随着波动率和存货水平变化的规律,当存货空头敞口越大,波动率越高的时候,透过模型计算的保留价格越高,同理,存货多头越大,波动率越高的时候,保留价格越低,这表现为做市商对于存货风险与波动风险的厌恶;当做市商的存货为0时,保留价格对于波动率是免疫的;
2.最优买入报价,保留价格 - 最优报价距离/2,随着波动率和存货水平变化的规律,当存货空头敞口越大,波动率越高的时候,最优买入价格会超过100,此时,可以理解为市价单;注意到,当存货为0时,买入报价受到波动率的影响会减少;
3.最优卖出报价,保留价格 + 最优报价距离/2,随着波动率和存货水平变化的规律,当存货多头敞口越大,波动率越高的时候,最优卖出价格会低于100,此时,可以理解为市价单;注意到,当存货为0时,卖出报价受到波动率的影响会减少;
4.最优报价距离, 不受存货水平影响,而仅仅受到波动率的影响,波动率越大,买卖价差越大。
4. 总结
本文以Avellaneda & Stoikov(2008)为基础,介绍了高频做市的相关原理,并透过数据模拟,展示了基于模型计算的报价逻辑。
