
从最笨的做市商做起,最后去卖可乐
说起做市商策略,第一感受就是超强 Infra、极低延迟、复杂算法和顶级账号费率,机构名字都是 HRT、Jump、Citadel Securities,从业人员则像是数学、物理系出来的常青藤天才。
说到期权 Gamma Scalping,也差不多是另一套神秘滤镜:精密定价模型、Vol Surface、N 腿对冲、动态 Delta Hedge,一堆希腊字母在屏幕上跳来跳去,仿佛不先把随机微积分学明白,连门都不配进。
一个像计算机科学和微观结构的操控者,一个像金融工程和随机过程的上帝视角。
但如果我们暂时不讨论谁的机器更快、模型更精密,也不讨论真实世界里那些复杂的风险约束,只看策略最后落到交易系统里的那一步,会发现它们其实都在回答一个很土的问题:
价格变了以后,我应该买多少,卖多少,最后手里留多少头寸。
和普通人手动交易本质上没区别,大家都只有多空两个按钮。
甚至从这个角度往下看,最简单的固定距离挂单做市,和看起来高深很多的 Gamma Scalping,距离可能没有想象中那么远。
本文发源于知乎“大空驴” @short_donkey 的 原文链接, 他是早期永续合约做市策略领域中,公开分享知识的大佬,今日重读他的文章后,融入自己的感悟后编写本文。
先做最笨的做市商
假设现在价格是 100,不预测涨跌,也不研究 OFI、lead-lag、毒性订单这些东西。就在99 挂买单,101 挂卖单。价格跌到 99,我买一点,涨回 101,我卖掉,赚 2 块。
最简单的 固定距离挂单做市, Fixed Distance Market Making 就是这么个玩意。
当然,现实做市没这么弱智。真上实盘,你还要考虑 adverse selection、库存、盘口深度、成交概率、queue position、手续费、波动率。
但这些先全部删掉,只看它最终做了什么,价格越低,手里的货越多,价格越高,手里的货越少。
这个策略其实已经规定了一条库存曲线,跌了买,涨了卖,价格如果一直单边跑,你会越来越难受,价格如果来回晃,你就可以来回刷。
先记住这个行为,下面 Gamma Scalping 其实也没高级到哪里去。
Gamma Scalping
禁止装逼,先快速解释一下什么是 Delta 和 Gamma。Delta 的意思就是衍生品价格相对于标的价格的敏感度,主要是在期权里使用这个概念。比如永续合约的 Delta 基本可以近似理解成 1,所以我们也经常把它叫线性合约:现货涨一块,合约理论上也涨一块。
期权不一样,Call 的 Delta 一般在 0 到 1 之间,Put 一般在 -1 到 0 之间,而且这个 Delta 不是固定的,会随着标的价格不断变化。
Gamma 就是 Delta 的 Delta,更严谨一点说,是 Delta 对标的价格的敏感度,也就是期权价格相对于标的价格的二阶敏感度。暂时感受不到它到底是个什么玩意完全没关系,先知道数学关系就够了:价格变了,Delta 会变,而 Gamma 决定 Delta 变得有多快。
假设你买了一张 Call,现在 Delta 是 0.5,同时你持有的是正 Gamma,也就是一个 Long Gamma 头寸。
你又不想赌标的上涨还是下跌,那就卖掉 0.5 份现货,实际交易里一般用期货或者永续替代,把这部分方向敞口对掉。Call 给你 +0.5 Delta,期货给你 -0.5 Delta,加起来差不多是 0,于是一个伟大的“市场中性策略”诞生了。
听起来挺高级,本质上就是一边多、一边空,把一阶方向风险先抵掉而已。但问题马上来了:期权不是线性产品,Delta 会动。假设标的涨了一段,Call 的 Delta 从 0.5 变成了 0.6,那么你原来只卖了 0.5 份期货,现在组合又多出来 +0.1 Delta,为了重新回到 Delta Neutral,你就得再卖 0.1。
反过来,如果标的跌了,Call 的 Delta 从 0.5 掉到 0.4,你之前卖出去的 0.5 又多空了 0.1,于是你得买回来 0.1。
这个不断根据 Delta 变化重新调整对冲仓位的过程,就叫 Dynamic Delta Hedge,动态 Delta 对冲,其实一点都不复杂。对于一个 Delta Neutral 的 Long Gamma 头寸来说,最后真正落实到交易系统里的行为就是:涨了卖,跌了买。
标的越涨,Call 的 Delta 越大,为了维持中性就继续卖对冲腿;标的越跌,Delta 越小,就把之前卖出的对冲腿一点点买回来。至于什么时候调、调多少、连续调还是离散调,这些才是后面的工程问题,但它最基本的交易方向就这么简单。
熟不熟?刚刚那个最笨的 Market Maker 干的也是这个。价格往下走,他的买单不断成交,库存越来越多;价格往上走,他不断卖货,库存越来越少。
Long Gamma Trader 虽然手里多了一张期权,背后还有一套希腊字母,看起来比 99 买、101 卖的 Fixed Distance MM 高级了几个学历,但如果把期权腿暂时盖住,只看他为了保持 Delta Neutral 而进行的对冲交易,最终同样表现成了一套“价格越高越卖,价格越低越买”的库存调整过程。
所以与其一开始就背 Gamma 是什么,不如先记住一个更实务的理解:Gamma 决定价格变化以后,你的目标 Delta 会变化多少;而目标 Delta 一变,你就必须交易。
甚至可以再往前推一步:Gamma 本身并不会凭空给你创造利润,它只是让你的目标仓位随着价格发生变化。Long Gamma 是涨了以后目标仓位更低、跌了以后目标仓位更高,所以动态对冲天然表现成逆着价格交易;
Short Gamma 则正好反过来,价格上涨以后为了对冲反而要继续买,价格下跌以后继续卖,变成追涨杀跌。这也是为什么 Long Gamma 喜欢市场“动起来”,Short Gamma 则害怕超出预期的大波动。
至于 Long Gamma 这么舒服,为什么不所有人都 Long Gamma?因为这条“涨了卖、跌了买”的曲线当然不是免费送你的,你买期权的时候就已经为它付过钱了,这个我们后面再讲 IV、RV 和 Theta。
看到这里,其实 Gamma Scalping 和 Market Making 的连接已经露出来了:两者并不是一种策略,也不一定赚同一种钱,但它们都可以被描述成一个非常朴素的问题——当价格变成另一个价格以后,我希望自己的库存变成多少?
最笨的做市商通过挂单,人工规定自己的库存变化;Gamma Trader 则是期权的 Delta/Gamma 帮他规定了这条库存变化。外面的金融产品不同、执行方式不同,拆到最后,系统收到的指令还是只有两种指令:买一点,卖一点。
不代表赚的是同一种钱
看到这里很容易得出一个过度的结论:既然 Fixed Distance Market Making 和 Long Gamma + Delta Hedge 最后都是“跌了买、涨了卖”,那 Gamma Scalping 不就是换了个金融工程皮肤的做市策略吗?
还不能这么说。
最简单的做市商,是主动在 99 和 101 放两个报价,希望别人来跟自己成交。99 买到、101 卖掉,中间这 2 块钱本来就是他主动报价出来的 Spread,只要市场来回走,而且别碰上什么知道价格马上要跌到 90 的聪明人专门来吃他的 99 买单,他就有机会把这个价差留下来。
所以做市商最直接的收入来源,是给别人提供即时成交机会以后收取的 Spread,代价则是库存风险和 adverse selection:你愿意站在那里接别人不想拿的货,就有可能碰到别人把烂货精准甩给你。
Gamma Scalping 不一样。你买了一张 Call,并没有天然获得一个 99 买、101 卖的 Spread。恰恰相反,你为了重新 Delta Hedge,很可能每次都要主动去市场里打单,甚至自己才是给做市商送钱的那个 Taker。
它真正拥有的是一条随着价格变化而变化的 Delta 曲线:价格涨了以后强迫你卖一点,价格跌了以后强迫你买一点。如果市场在一段时间内产生了足够多、足够大的实际波动,这些动态对冲产生的收益才可能把你买 Gamma 时付出去的成本赚回来。
所以从 PnL 来源上看,两者还是有明显区别的。最朴素的 Market Maker 是在卖流动性、收 Spread,同时承担被毒订单打穿和库存失控的风险;Long Gamma Trader 则是提前花钱买了一份 convexity,再通过动态 Delta Hedge 尝试把之后真正发生的价格波动兑现出来。
一个最直观地关心的是“我这个 Spread 够不够覆盖 adverse selection 和库存成本”,另一个最直观地关心的是“我买进来的 IV,最后能不能被实际走出来的 RV 覆盖”。
但有趣的地方恰恰就在这里:它们收入来源不同,落到交易路径上却可以长得非常像。 做市商用 Bid/Ask 和库存模型人工制造了一条“价格越低越想买、价格越高越想卖”的库存函数;Long Gamma Trader 则是期权天然给了他一条这样的 Delta 函数。
一个是自己写出来的,一个是买来的。
这时候甚至可以提出一个更奇怪的问题:既然我想要的只是这条“跌了买、涨了卖”的库存曲线,那我为什么一定要先买一张期权?
我能不能不要期权,直接自己写一条?
答案当然是可以。
这就到了大佬原文里一个很好玩的概念:虚空 Gamma。
不买期权,手搓一个 Gamma
既然 Long Gamma + Delta Hedge 最终执行出来就是“涨了卖、跌了买”,那一个很自然的问题就来了:如果我想要的只是这种仓位随价格变化的效果,为什么一定要先买一张期权?
假设我手里一张期权都没有,现在 BTC 价格是 100,我自己规定一个很土的策略:价格每跌 1 块,我就多买 1 个;价格每涨 1 块,我就卖 1 个。那我的仓位就不再是固定的,而是变成了价格的函数。价格越低,我持仓越多;价格越高,我持仓越少。换句话说,我自己手搓出了一条库存曲线,价格一动,目标仓位就跟着动。
意思就是价格越高,我想拿的货越少;价格越低,我想拿的货越多。是不是和前面的 Long Gamma Delta Hedge 很像?
期权交易员是因为 Delta 随着价格变化,所以被迫不断调整对冲腿;现在这里连期权都没有,直接自己规定了一条“价格变成多少,我就持有多少仓位”的规则,最后干出来的动作一样。
这时候你已经可以理解原文所谓的“虚空 Gamma”了。名字听起来有点玄学,其实蛮容易理解的:账户里仓位没有 Gamma ,但你用交易规则制造出了类似 Gamma 的库存行为。
严格来说,这当然不代表你凭空创造出了一张真正的期权,Gamma 本来是一个具体非线性产品的二阶敏感度;但如果只看动态交易过程和最终 PnL 的二阶特征,你完全可以用线性产品,离散地复制出一部分 Gamma 的效果。
这也就是我自己前面几篇帖子在手动推演得到的答案:
最典型的例子其实就是网格。价格跌一格,加一点仓;价格涨一格,减一点仓。网格策略根本不认识什么希腊字母,它只是提前写好了一张很笨的规则表:价格到 99,我持有多少;跌到 98,我再多拿多少;涨回 100,我又减掉多少。价格每走到一个新的位置,系统就按照这张表把仓位调到对应的位置。
如果格子划得越来越密,比如不是每跌 1% 才调一次,而是每跌 0.1%、0.01% 都调一点,那么这种一格一格的仓位调整,看起来就越来越像连续变化。期权里的 Gamma 也是类似的感觉,只不过这张“价格到了哪里,我的 Delta 应该变成多少”的规则,程序员拿网格参数手工写出来的,而期权本身的非线性结构天然就带给你。
Fixed Distance Market Making 也是类似的。你在现价下面挂买单,上面挂卖单,看起来是在“赚 Spread”,但从库存路径上看,你同样是在让价格决定自己的仓位:市场往下走,你不断被动买入,库存越来越多;市场往上走,你不断卖出,库存越来越少。挂单只是实现方式,背后真正发生的还是 价格 → 库存 的映射。
所以如果把产品名字全部删掉,只看交易系统,很多策略其实可以统一成一个很土的问题:价格从 100 变成 101,我要把仓位从多少改成多少?从 101 回到 100,我又要改回来多少? Gamma Scalping 是用期权来解答这个问题,Market Making 是报价规则替你回答,网格交易则是你提前画好一堆格子替你回答。
甚至可以再往前说,很多人第一次看到 Gamma 的时候觉得它很神秘,是因为金融工程从“产品价格的二阶导数”开始讲;但对于真正写交易系统的人,从另一头理解可能更自然:只要你的仓位本身会随着价格变化,那么价格路径就不再只产生一阶 PnL,而会开始出现二阶效果。
你不再只是“我有 1 个 BTC,所以 BTC 涨 1% 我赚 1%”这么简单,而是 BTC 涨跌的同时,你持有的 BTC 数量自己也在变化。
这也是为什么我觉得“Gamma”这个词有时候被讲得太神秘了。它当然有严格的数学定义,但落到策略执行的时候,并不会突然从屏幕里飞出一个希腊字母帮你赚钱。
但这里马上又会出现一个新问题:如果不用买期权,我自己写个“跌了买、涨了卖”的程序就能手搓 Gamma,那我岂不是连 IV 和 Theta 都不用付,直接白嫖?
显然也没这么爽。因为期权只是把这条非线性曲线打包卖给了你,而你自己复制这条曲线,一样要付出交易成本、库存风险、跳空风险、离散对冲误差,甚至在市场单边跑的时候被越套越深。
非线性不会凭空消失成本,只是成本从期权价格里,搬到了你的执行和风险管理里。
到这里,就可以继续问下一个问题了:既然不管是买来的 Gamma,还是手搓的 Gamma,都不是免费的,那这些策略到底在赚什么钱?
这时候本应该正式聊 IV、RV 和波动率, 但是我觉得这些东西属于非新手向的东西了,应该留到下次写。
而且还有另外一群人,干的事情更有意思。
他们不只是买这种曲线,他们负责把这种曲线生产出来,再卖给别人。
迷人的可乐工厂
最后大空驴讲了一个可乐工厂的故事:
我在向非期权交易者讲述卖期权这件事时,我往往会用这样的例子:甘蔗是天然存在的,很早人类就有吃甘蔗的记录,可口可乐不是天然存在的,是甘蔗、水、安赛蜜等等加工获得的产物。有人喜欢甘蔗,有人喜欢可口可乐,两者的消费市场并不完全重合。但这绝对不代表甘蔗产业与可乐产业是很类似的产业模式。
甘蔗生产不是什么高科技的产业,主要成本可能是人工与土地,有合适气候与土地的国家很容易发展这种附加值很低的血汗产业。
相比之下,可乐产业所要求的不仅仅是甘蔗这一原料,它涉及复杂的生产流程,包括甘蔗的提炼、调味料和防腐剂的添加、饮料的配方秘密、包装设计、品牌营销以及全球分销网络等一系列工艺和技术链条。可乐生产不仅投资规模普遍较大,还需要深厚的市场推广和品牌建设才能成功,而且在生产过程中涉及到先进技术的应用,例如碳酸饮料的配制和灌装技术。这是一个高附加值产业,有着更高的利润空间,但也需要更多的资金投入和更高水平的管理。
可乐就像期权,第一杯可乐出现的时候,价格一定是非常高的。随着市场的竞争加剧,才把可乐做成了一块多人民币一罐的廉价产品。
他把线性资产比作甘蔗,把期权比作可乐,我觉得这个比喻对新手特别友好。现货、期货这种线性产品,价格涨一块赚一块,跌一块亏一块,结构很简单,像天然原料一样摆在那里;
但期权不是,它把这些线性的东西重新加工,变成了一个非线性的收益结构。客户可以买一个“跌到这里最多亏这么多,涨上去还能继续赚”的 Call,也可以可以买一个“市场真崩了你得赔我钱”的 Put,本质上都是在购买一种被重新设计过的收益分布。
但这些非线性收益不会从天上掉下来。客户买了一张期权以后,只需要看到自己账户里多了一个 Call 或 Put,背后负责报价的做市商却要想办法把这玩意生产出来。
他可能拿现货、期货、其他 Strike 的期权、其他到期日的期权拼在一起,再不停做 Delta Hedge,管理 Gamma、Vega、库存和尾部风险。客户看到的是一罐已经装好、贴好标签的可乐,做市商看到的是糖、水、瓶子、机器、物流和生产线。
所以从这个视角看,卖期权其实挺像一个加工产业。你拿市场里最基础的一阶资产作为原料,通过模型、对冲、执行和资本,把它加工成客户想要的非线性 payoff,然后再报一个价格卖出去。真正专业的期权做市商,当然不是简单坐在那里猜明天涨还是跌,甚至也不只是猜“未来波动率是多少”,它像是在算一笔生意:客户愿意用这个价格买这瓶可乐,我到底能不能用更低的成本把它生产出来。
这也解释了为什么同样一张期权、同样一个市场价格,不同做市商的结果可以差很多。有的人 Delta Hedge 做得便宜,手续费低、滑点小、内部订单还能互相净额,对冲同样一份风险只需要很低的成本;
有的人机器慢一点、费率差一点、库存管理烂一点,每次行情动了才追着盘口打,最后同样的产品别人卖这个价格滋滋赚,他卖这个价格滋滋亏。市场给大家看到的是同一个售价,但每一家工厂自己的生产成本完全不一样。
放到期权市场也是一样,定价模型大家都能学,Black-Scholes 也不是什么商业机密,真正拉开差距的是你怎么把这个理论价格变成现实里的可交易价格,又怎么把客户塞给你的风险便宜地处理掉。
这和前面的 Market Making 又重新接上了。最笨的做市商只是在盘口两边挂单,赚几格 Spread;再高级一点,会做库存管理、动态报价、预测订单流;到了期权做市这里,只不过“库存”从一个简单的现货头寸,扩展成了一整套 Delta、Gamma、Vega 和期限结构。表面上机器越来越复杂,本质上还是那几个老问题:我接下了什么风险,这份风险该怎么对掉,对冲要花多少钱,最后客户付的钱能不能覆盖我的成本。
而这也是我觉得 Gamma Trading 和 Market Making 最有意思的连接。前面我们从最笨的做市商出发,只是在研究价格变化以后仓位怎么调整;走到这里以后,这个问题被工业化了。优秀的期权做市商不只是自己管理一条 Gamma 曲线,而是每天批量接收客户想要的各种非线性曲线,再用自己的交易系统把这些风险拆开、净额、对冲、重新组合。
最开始我们只有两个按钮:买和卖。
后来我们给它们加上了库存规则。
再后来,我们用 Delta、Gamma 去描述这些规则。
最后,有人干脆建了一座工厂,把这些规则包装成产品卖给别人。
这大概就是从最笨的做市商做起,最后去卖可乐。