最近看了 babyquant 的《大饼圈的套利策略简析》写了各种套利策略,我也来谈谈自己之前差不多实盘运行了2年左右的数字货币套利策略。

之所有公开,一是因为我现在已经不运行这些策略了,写一写自己也总结一下;二是套利策略的逻辑本来就不神秘。这一行比拼的是执行力,也就是写代码的能力,特别是高频交易方面。交易的频率可能并不是很高,但必须反应速度快,波动来了,立马入场。当然还有对事情的专研能力,因为套利的竞争还是比较激烈的,后期的竞争更是惨烈。还得有一定的资金筹集能力,毕竟套利的盈利率有限,资金充足一点才可能有比较可观的利润,至少要超过打工收入吧,才值得全职去做。当然加入机构团队也是一个办法。

这里公开并不意味着这些策略现在完全无效,大概可能还是有效的,只是效率可能不是太高了。意思就是风险大赚钱可能并不多,还有前面提到的竞争惨烈,玩的人越来越多,而且团队作战。

更重要的是,相比于其他策略而言,单纯套利吸引力不大,虽然可能比较稳。最终还是得拥有风险敞口的策略才能更赚钱,当然风险也更大,盈亏同源嘛。以前就是,行情来了,虽然我也赚钱,但是相比于别人的持仓策略,别人在吃肉,我顶多算喝到一口汤。当然,持仓策略方向做反了的时候,我也没有跟着挨打,只能这样安慰自己了。

先讲讲我最稳定赚钱的套利策略之一,也就是俗称的“搬砖”。

搬砖套利是最适合币圈的策略。因为这些币是数字化的,都在链上,这个大饼和那个大饼之间完全同质化(不同质化的话就成 NFT 了)。这样在不同交易所之间交易的大饼二饼,完全一模一样,天然适合搬砖。不像其他实体品种,比如农产品,虽然他们名称可能一样,比如都是小麦,但是一来运输麻烦,还得算仓储成本,二来在不同国家地区、周期的小麦可能蛋白质之类的含量也不一样,定价肯定也不同了,很容易被反套。

不可控的因素更多,风险就加大了。

所谓的“搬砖”就是在币圈有很多交易所,那么每个交易所的大饼二饼的价格其实是本交易所的账户之间博弈出来的,这样不同所之间肯定就有差别。普通用户感觉到每个交易所的价格几乎都是同步的,这就是套利策略的贡献,当然做市商的策略也有贡献。

总之,套狗们是抹平交易所差价的最大功臣。

具体策略

策略逻辑非常简单。

简单到,当年我在还不知道交易中买卖的英文单词是 bid ask 的时候,代码写出来都能赚钱。当初在 API 文档里到处翻找 buy sell,发现居然找不到,记忆犹新,只有 bid ask long short 之类。所以说隔行如隔山。其中隔离的障碍之一,就是每一个行业自带的“黑话”。

策略的大致逻辑就是,一个所的卖一价低于另外一个所的买一价,那么条件就满足了。说明有人在低价卖,另外有人高价买。你在第一个所买入二者挂单的公约数量,然后在另外一个所卖出,就是这么简单!激进一点,你也可以全吃了,然后剩下的再慢慢出货。

两边都做 taker,只做软搬砖的话(就是两个交易所都有资金或者币,并不真的把币买了再转到另外一个所卖,这样太慢,按这操作黄花菜都凉了)几乎没有持仓,同时成交,利润立马到手。没有比这更简单更稳定的策略了。

但是现实肯定没有这么容易的事情。知道跟真正做到之间往往隔着天堑。实操总有意外发生。

下面讲讲我当年遇到的问题和应对之道,说不定对后来者有一定启发。

问题一,没有价差。

这个问题应对方法很简单,那就是等。不要轻易乱动。

后期我加入了一点 maker 逻辑,主动去 orderbook 守株待兔,这样就类似做市商了,逻辑稍微复杂一些。

总之就是得等。你如果不想等,那就得像上面提到的那样变换策略。饼圈之前机会非常多,波动充足,几乎每天都有几次小机会,每周都有几次大机会。做 taker 就是得等机会出现。

真正需要担心的是,下雨了,你接水的桶够不够多,够不够大。不过这些只有你等你真正见识到了,才会明白。

问题二,抢不到。

这是最大的问题了。

你的代码监控到卖一买一价差有利可图,但是转瞬即逝,这总情况不是别人撤单,就是被人捷足先登了。你如果没有发单还好,单纯就是一个看客。或者发单了,但是没有成交,挂 orderbook 上了,也还好,大不了就是撤单。(当初还没有 IOC,FOK 这样的算法单,就是不成交立即自动撤单,不会挂着被吃,而只有普通的限价、市价单,特别是小所)麻烦的是,单腿成交了,这个后面再谈。

抢不到单子的应对。

因为是两个(甚至多个)交易所之间套利,那么单所的反应速度就没有那么重要,当年还没有 colo 这些设施,更没有 FPGA 这些大杀器,其实大家还比较公平,而且套利算法也极其简单,没有计算速度要求。所以关键就是在两个所之间的综合速度了。

当年的主流交易所服务器主要分布在东京(B安)、香港(ok)还有就是欧洲的都柏林、法兰克福和瑞士等等。

所以你总不可能把自己的实盘代码跑在北美的服务器吧。

下图是一张简单的海底光缆图。你可以根据自己套利的交易所,寻找到达他们共同都比较快的大致位置。特别是对于那些跨洲的套利,信号在光缆上单趟跑一次就得上百 ms 了。

这里的诀窍呢,就是可以首先考虑流动性没那么好的交易所,也就是小所,最好有代码和它在同一个云服务器供应商,同一个区。这样能够抢先拿下小所的挂单,然后再到流动性好的交易所去出货。

lead-lag,先对 lag 一侧动手。所谓的 take slow mover 策略。吃还没有意识到价格在激烈变化的挂单。

搬砖套利的一个要点就是,最好是一个大所和一个小所接合,这样才更容易获利,两个大所之间的竞争早就白刃化了。

然后另外一个窍门是,管他3721,两边都布置自己的代码,然后在他们的中间地带有可能也布置上,这样增加抢到的概率。到最后,很有可能发现其实是自己在跟自己的交易机器人抢,这样最好。

在当年,只要你的代码是异步的,然后用上了 websocket 获取行情,就足够快了,上得了牌桌,可以一战。

问题三,抢到单腿。

怕的是,一条腿成交了,另外一条还挂在那里,那么你就有了敞口,而且这种时候大都是被逆向选择了。也就是,价格在涨,你卖出了,另外一侧没买到对冲;价格在暴跌,恭喜你,你成功接到货了,但是卖单没有成交。

这个时候就看你的策略了。如果是币币套利,也就是 quote base 都是饼,例如 ETH/BTC 交易对,那么问题就不大,因为反正都是饼,涨跌幅度一般不太大。

但是如果是 usdt,那么价格波动可能就大了。这时你可以等等看,也可以认栽出货,也可以看看是不是在小时线布林带上下轨之外的危险区之类的,最好及早止损。

我之前有一个 6 秒持仓限制,一般单腿情况如果超过 6 秒,我就平仓走人了。好在一般胜率都比较高,这样的情况有限。

总之,看你的风险偏好。套利有时候也是会亏损的,虽然做得好的能够在大部分时候避免。

问题四,单所满仓。

大行情下,你在跌得慢的一侧全卖成了 usdt,跌得厉害价格更低的一侧,应该全是接到对应的币了。这里并不是真正的满仓,因为你手里的饼和钱的数量其实并没有变化,只是它们所在的交易所变了,然后数量多了一丢丢。

如果行情继续,价差持续,基本上你只有相互转币,这样就是真正的“搬砖”了。当然你也可以等反弹,有时候价格一旦反弹,价差就会倒挂,这样又可以交易一波。一来一回,如果你币种比较多的话,当天可能就能满仓赚 1 个点,甚至更多,因为币种之间行情的切换会提高资金利用率,当然你的策略也要设计得当,这也是挑战之一。比如利用跨所的三角套利,在可能不亏钱的情况下,软转移币,然后继续套。

到了我套利的后期,套利的人多了,只有在很大的行情下,才有这样的机会满仓。人多了,资金多了,流动性就上来了,特别是爆炸头 sbf 他们这些机构入场之后,把持了主要的机会,很多套狗都转做其他策略了。

现在做市的人越来越多,套利的人也越来越多,机构入场,还有期权交易增加,312 这样的史诗行情真的很难再现。那天真的是一场狂欢,历历在目。

其他技巧

我记得当初最大的单笔单子差不多150w左右(rmb计算)。

我设计了两种模式,也就是有人监督模式,无人监督模式。

很简单,无人监督的时候,例如晚上睡觉了,就低调点,单子小些,限额,慢慢吃单。一定要上一笔双腿都成交了,再执行下一笔。控制好仓位。机会错过就错过了。而且所有交易对要控制总仓位,控制全账户风险。

有人监督的时候,那么就可以开启大炮模式,一口把低流动一侧的单子吃了,甚至直接吃大单,然后到几个流动性好的大所慢慢出货。如果突然转向,那么赶紧人工介入处理一下。采用之前提到过的处理方式应对。

我记得当时《硅谷》美剧上映,我也用了里面那个加拿大程序员采用的音乐,作为有大单成交的提醒,每次听到都很兴奋,赶紧去查看情况,不要出了纰漏。

还有一个处理竞争的技巧。就是最好能够垄断一个小交易所的一些交易对。现货的手续费一般千一左右,那么一进一出就是千二(还有一点转币费用,如果资金少,那么也得计算在内)所以至少要有千分之二的差价才有得赚。

如果这个小交易所的交易对,例如 EOS/ETH 只有你在交易,你就可以任凭它的价差到千三才动手,甚至更高一点。当然太高也不好,这样会引来竞争对手。市场上大家时时刻刻都在扫描监控各个交易所的价差。人家看到这个交易对怎么价差这么高,就会过来跃跃欲试。但是如果看到价差不大,很快消失,同行就知道这里已经有主了,要过来搞事情得下更多功夫,大概得和人硬碰硬,就不一定来了。

如果真的有头铁的同行过来搞事,那么你就得应战。

来的是 maker 无所谓,因为这个策略只做 taker, 和 maker 策略正好互补,他要是个菜鸡,代码反应速度慢,你正好可以吃他。

怎么应战?就是在行情刚启动的时候就把单子吃了,之前是千三,那么对手进来可能千分之2.5就动手了,你连续错过几单就知道有人进来在做同样的事情。这时候,你就得牺牲利润,可能千2就动手,抢跑。千2其实大家都还有利润,因为交易量大的,手续费有折扣,所以大家会一直试探到千一左右。这个时候,你就得壮士断腕,不要利润,甚至倒贴一点也得上了。比如万五左右就动手。

这里就是拼心理了。因为对手是刚来这里,那么他心态其实就是来试试,有枣没枣打一杆子那种,看到不赚钱很快就会撤。这种套利,我之前说了,你要搞得好,就得多处布置服务器,还得充币,占用资金。还得专人监控。一句话,就是有成本的。一旦不赚钱,新来的就会撤。一般就是1个星期这样。对方可能向他老板报告,这个交易对不赚钱,那么他们就可能转战其他地方了。遇到硬茬,那么就拿出半个月的利润来跟他耗,新来的基本都扛不住。

我自己去别的地方也被人这样搞过。别人为了守住自己的地盘,会不惜和你一战。所以道理大家都懂。

最后,竞争对手走了,那么你就继续加价,千三才动手。这其实跟线下菜市场的那些小贩策略一样。毕竟都是交易,没谁更高大上。

所以,这行其实也挺累的,大家不断相互防着。有时候还有专门收割套利策略的交易机器人,诱发你出手交易。这个就复杂了,不在这里表述。总之要防的东西不少,得时刻警惕。盯盘是常事,几天不盯盘,不看看盘口变化,修改配置参数,甚至源代码,利润就会下降。

总之都是辛苦钱。

潜在风险

套利策略其实并不是全无风险。策略本身风险并不大。套到单腿,及时退出就可以了,大不了少赚一点。

风险就是币圈的结构性风险。一是交易所跑路,倒闭,提不出币,比如 cz 要是被 FBI/CIA 之类的长臂执法了,你的币不一定拿得到;二是 USDT 或者其他币本身突然暴雷了。

当年交易所之间的头部效应还不是非常显著,小所还是有人去交易的。不像现在,经历过几次交易所跑路之后,还有 ftx 挪用资金暴雷,大家都只去头部交易所交易了。

所以,普通套利不一定是一个好的策略。如果你会其他交易,比如 CTA,怎么都比套利强,资金利用率更高。之前的套狗,能力强的,基本都转高频做市、趋势交易了。

最后

以前真的是好时代,机会太多了。有的时候行情来了,其实用手下单都可以套利。真的大行情下,还能不断在交易所之间转币套,因为价差一直在。听说还有人肉搬砖到韩国去套的,不过那段行情我没有赶上。

我的初版代码是 JavaScript 写的。测试代码主要就几十行,想着先投入几天时间和精力,还有几十刀资金试试看,赚钱就继续,不然赶紧干别的去。没想到第一天测试就开始赚钱。当时几天就调好了最初的代码,想着只要第一天赚到鸡腿钱就继续,因为毕竟只有几十刀本金,结果一开始就赚到了盒饭加咖啡,然后就一发不可收拾,一路修改代码,修改模型,打怪升级。

比较遗憾的是,因为自己套利实在太顺滑了,没有动力去升级其他更赚钱的策略。主要是其他策略都是有回撤的,套利习惯了,实在忍受不了赚到的钱还要亏回去这种情况,心态接受不了,所以一直没有成功。另外,其他赚钱的策略其实难度更高。反观那些早早套利不赚钱的套狗,及时转战高频或者 CTA 之类的策略,好多转型成功,赶上之前的牛市,成功一波暴发。

总之,套利的逻辑很简单,不需要大聪明,只需要集合很多小聪明,小创意,做得比别人更用心就好,重在执行。但要做好真正的交易,就是有敞口,有持仓,就得理解交易的本质了,策略设计、回测、实盘执行,一个环节都不能落下。

这次就先分享这些。