本文走入做市交易的纵深处,从实战角度展示了做市商的细节操作,包括怎么定价? 怎么选择挂单价差(spread)?怎么确定挂单量?等等。读懂这篇并不要求高深的数学知识,但你一定要很熟悉正态分布。
我们先回顾一下做市商的基本操作。做市商的基本操作是在bid/ask分别挂单接货,买卖价差和手续费返还就是做市商的利润。
做市交易有2个关键步骤:确定fair price(定价)和确定价差(spread)。
第一步是确定fair price,也就是定位在哪个价格挂单。定价是第一步也是非常重要的一步,如果你对fair price的理解偏差太大,那么你的“库存”很可能甩不出去,最后只能以承受亏损把仓位平掉。定价的第一种方式是参考该品种在其他市场的价格。比如你在伦敦市场交易美元/日元,你可以参考它在纽约市场的定价。但是如果价格在其他市场出现异常波动,这种定价方式会变的非常不可靠。
第二种定价方式是用中间价格定价,中间价(mid price) =(买1价+卖1价)/2。用mid price定价是一种看似简单,但非常奏效的方法,因为中间价是市场博弈的结果。
做市商要考虑的第二个问题是价差spread。确定合适的价差,你需要考虑一连串的问题:市场的平均成交量是多少?这个成交量的变化(方差)有多大?take(主动买单)的平均大小和变化(方差)?在fair price附近的挂单量情况?等等。除此之外,你还要考虑在很小时间窗口里价格的波动和方差,作为做市商要付出/获取的手续费,其他次要因素比如接口速度,下单撤单的速度等等。在非常短的时间段里,做市商的盈利期望其实是负的,因为每一笔主动买单(taker order)都想在自身价格有优势的情况下和你成交,除非是被迫止损的单子。每一个市场上其他的参与者都想从你手上获利。
试想一下,你是一个做市商,你要把单子挂在什么位置?
在挂单能被成交的前提下,要吃到最大的价差,你需要在订单薄的最前面挂单,也就是买一/卖一的价位。只要价格一变动,你在买一的单子就会迅速成交,但是频繁的价格变动是件坏事——比如说你刚接了货,价格就变了,你原来卖一的挂单已经没法以挂单价格成交了。在一个流动性不充分,价格变动较小的市场,把单子挂在买一/卖一会保险的多,但是这会引出另一个问题——其他做市商会发现你,然后以更小的价差抢在你前面挂单(tighten the spread),大家会抢着一直缩小价差,直到没有利润为止。
现在我们从数学角度探讨,怎么确定价差。先从波动开始。我们要知道在非常小的时间周期上,这个资产的价格/成交量在它均值附近的波动性大小。接下来的数学计算会假设价格活动服从正态分布,当然这会和实际情况有所偏差。假设我们以1s作为采样周期,过去60s作为样本,假设当前中间价的均值和60s前的均值一样(记住这里的均值不变),且这个均值和现价有0.04的标准差。由于我们前面假设了价格运动服从正态分布,所以我们可以进一步得出,在68%的时间里,价格会在离均值1个标准差($-0.04-+$0.04)内波动;在99.7%的时间里,价格会在离均值3个标准差($-0.12-$+0.12)内波动。
ok,我们在中间价两边以0.04的价差报价,即价差spread等于0.08,在68%的时间里,价格会围绕均值1个标准差($-0.04-+$0.04)内波动,所以此时两边的单子要想成交,价格的波动就必须击穿两边的价格,也就是超过1个标准差,有32%的时间(1-68%=32%)价格的波动会超过这个范围。因此,我们可以粗略估计一下单位时间的利润:32% * $0.04 = $0.0128。
我们可以继续推演: 如果以0.06的价差挂单(分别离中间价0.03的位置),对应0.75个标准差(0.03/0.04=0.75),价格波动超过0.75个标准差的概率是45%,预估单位时间利润45% * 0.03 =$0.0135。如果以0.04的价差挂单(分别离中间价0.02的位置),对应0.5个标准差(0.02/0.04=0.5),价格波动超过0.5个标准差的概率是61%,预估单位时间利润61% * 0.02 = $0.0122。
我们发现,以0.06的价差挂单,也就是在0.75个标准差的位置挂单,能获得最大的利润,也就是$0.0135!这个例子里分别举了1/0.75/0.5个标准差的情况,比较下来,0.75个标准差能获得最大利润。对直觉进一步证明,我用excel做了不同标准差下预期收益的推导,发现预期收益是一个凸函数,这个凸函数正好在0.75个标准差附近取到最大值~!
以上假设价格波动服从均值为0的正态分布,也就是说市场的平均回报率是0,而实际情况是价格的均值会变化。均值的偏移会让一侧的单子更难被成交,当我们有库存时,不仅会亏钱,而且预期利润率也会降低。
总之,做市商的期望由两个部分组成,一是挂单能成交的概率,比如以1个标准差挂单,有32%的时间会成交;二是挂单成交不了的概率,比如以1个标准差挂单,有68%的时间价格会在spread中间运动,导致单子无法成交。在挂单无法成交的情况下,价格的均值很可能会改变,因此做市商要对”库存成本”进行管理,这个“库存成本”可以看作是一个要支付利息的借款,时间的推移会导致波动率增加,借款利息也会随之升高。做市商可以通过各个周期的平均波动率来制定回归策略,限制持仓成本。
这篇文章部分参考了medium上的这篇文章:https://idrawcharts.medium.com/market-making-article-2-not-illustrated-but-much-more-in-depth-25f1257656ac,puppy对原文做了要点梳理,对其中的直觉推演做了数学证明。