Reflections on Market-Making

自9月份开始初次做市,至今已过去完整的一个月,有一些体会和反思,记录在这里。(以下内容并不涉及具体策略)

这里的“做市”指的是需要满足一些做市义务的服务,通常在不活跃的非主力合约上,旨在为市场提供流动性。对于需要满足的义务,比如发双向单(同时发买单和买单),双侧手数都要超过10手,价差要不大于5个最小变动价位,这样的发单要持续提供超过60%的市场交易时间。相对地,好处是交易所返还全部手续费,而且还会依据一定规则(p值,成交量与持仓量)额外返回一定金额。其中最重要的是p值,一共14个做市商会依据考核合约的p值排名决定其中的最后两名有可能失去做市商资格,而p值的数值本身也代表了返还金额。我们接手做市的原因一大部分就是因为之前p值的排名过低(倒数后两名内),因此我们追求的主要目标,相对于收益,就是p值的排名。

先说一下把9月做市结果,我们期初到现在权益变化 -1190504, 然后返还手续费 500485, 做市义务返还(p值)549943, 流动性贡献返还 245285, 最后利润是 105211。最终的p值,MA:9.85(排名第1),TA:12.42(排名第四)。收益可谓惨淡,好在p值排名尚可,但求学费交完而有所得。

大概是8月中旬,FH哥跟我讲了要尝试去做事的事情,看了做市商合同,了解了义务和返还的计算。起初我们对做市义务的规则要求并不是很清晰,最主要的是做市报单一定是双边报单,而且新的报单会使之前的报单被撤回。在了解清晰后,我大概用了2~3天的时间在我们的回测系统中,以及实盘的日志分析中,加入了对满足做市义务的时间的计算以及p值的计算。因为之前并没有做市经验,不是很方便验证代码计算的准确性,我是通过输出中间值看合理性,以及回测结果是否与期望相差太大来判断的。回头来看,这些代码的计算与实盘跑出的结果(即交易所给我们的报告)非常的接近。

第一次第一天,8月31日下午,FH哥把我和两个开发员叫去开会,在此之前我们的程序已经在模拟环境上测试了几天,但由于模拟环境的成交很不准确,除了运行之外的一些细节并不好判断是否出错。FH哥问今晚夜盘我们就要上实盘了,是否有把握?会出什么样的问题?出问题了该怎么办?按照我们当时的预期,程序上应该不会有什么问题,主要在策略上,按照回测pnl不应该亏太多,当时主要担心的是持仓问题,怕持仓过大达到我们设置的最大持仓限制,那天下午想的临时解决办法就是如果持仓达到限制就liquidate,然后重开程序。另外,FH哥又跟我讨论了一下策略的主要思路,我说就是跟kronos比较接近,但还有些不同,后来实盘中发现这点不同主要来自posPen的使用。当天夜盘,并没有发生我们担心的持仓过大的问题,一开始我们的程序不停发单,看上去比较正常,而且交易软件上显示是盈利的,但没过多久便发现了更严重的问题。两个品种的共6个合约上,我们几乎都是一直正持仓,策略逻辑中买卖是对称的,如果不是程序的问题,只能是当晚夜盘的行情买的机会更多,但随着时间推移(夜盘共交易2个小时),按策略的交易周期,不应该再表现出买卖机会如此的不均,可以基本断定是我们程序上的问题。第二天一早(9月1日),我便提早到公司开始debug,翻来覆去的看,不是交易程序上的问题,问题在策略里。由于程序上的这种正持仓偏差,导致我们的收益基本正比于行情价格,而昨天夜盘到上午,价格基本是一路下跌,亏损非常令人担忧。一直到中午,才找出是策略中的一个括号的位置不对,导致卖单逻辑错误,下午开始修正了过来。以为程序运行上的问题解决了,后面就是策略调整,事实上这才是刚刚开始,各种问题接踵而至。

关于盯盘,绝对是必要的,除了即时监控错误并采取措施,盯盘也能看出一些潜在问题。这里盯盘主要指的是夜盘(9点到11点),这一个月来,我们的两个IT开发员都很负责,如果我发现解决不了的问题,联系他们都能得到及时的解决,其实这帮我们少亏了不少钱。另外也要感谢一下我老婆,最开始的两天,由于程序不太稳定,自己也没有信心,盯盘基本上是一直看着的,上厕所和洗澡的时间,交给我老婆来盯,还好最后都没出问题。现在的程序也稳定很多了,我自己也不用时刻看着了。

实盘中发现的问题,大致可分为程序运行上和策略上两大类。程序运行上指的就是报单撤单,对未成交单的计算等等都是及时且准确的,这方面其实是可以做到完全准确无误的,今天我们的程序已经做到了(速度不在此讨论)。而策略上,只能做到与预期相符,但是如何提高收益提高p值,可以说永无止境。程序运行上,最初的几天都发现我们有丢单子的现象,虽然影响不大,但使得盯盘很心累,因为不时的丢单子会导致程序不时的出错,从而不能正常发单,无法满足做市条件,必须及时发现重启程序才能恢复。后来此问题得以解决,盯盘也轻松许多。策略上的问题,其实不太方便写出来,但大体上的原因是做市要求每次报单10手(或更多),除了在行情比较大的时候,更多情况下10手的单子在市场里太大,成交的impact太大,被逆向选择的可能也大。当然现在我们也研究了一些解决的方法,实盘上看也是比较有效的。

最后少许扯点闲话,由于做市本身大概率亏钱(平仓盈亏),尤其第一个月亏的较多,加上一定要盯盘,这个体验是非常令人沮丧的,基本就是看着自己的账户不断亏钱,也不能停止交易,而且还要知道明天继续这样大概率继续亏,夸张点可以说“下一分钟一定比现在更亏”。直到我发现一本书,让我的沮丧有被治愈,Dweck的《Mindset》,基本讲的是人要有growth mindset(成长的思维模式),表面上感觉很好理解,陈年老鸡汤,仔细品读过后才发现这种思维模式影响生活的方方面面,只是很多时候我们不去从这样的角度去思考,从我个人角度来讲还是收益很多的。另外力荐一首非常适合盯夜盘的歌曲,Sammi Smith的《Help Me Make It Through the Night》,尤其副歌的几句,恰好地表现出盯盘时痛苦又无助的心情:

I don't care what's right or wrong
I won't try to understand
Let the devil take tomorrow
Lord, tonight I need a friend
Written on October 8, 2021