博客

量化套利入门 01|套利赚的到底是哪笔钱?

屏幕上同时出现两个价格,只能说明事情有点意思。每一笔套利背后都有一个付钱的人,等两边成交、费用扣完、钱回到账上,剩下的那部分才叫利润。

约 14 分钟量化套利入门系列

2000 年 3 月 2 日,3Com 把旗下的 Palm 拿出一小部分上市,自己仍握着约 95% 的股份,同时宣布年底前会把剩下的 Palm 股票分给 3Com 股东,每股 3Com 大约分到 1.5 股 Palm。上市第一天收盘,Palm 报 95.06 美元,3Com 却跌到 81.81 美元。按分配比例算,一股 3Com 背后对应的 Palm 股票,市值比一股 3Com 本身还高。

换成日常场景,大概是一家商店连货带仓库标价 82 元,仓库里的货单独拿出来却值 145 元。等于市场认为,这家商店除了那批货以外的一切,柜台、现金、其他生意,加起来值负 63 元。按 Lamont 和 Thaler 的计算,当时 3Com 除 Palm 以外的部分,整体市值相当于负 220 亿美元。

纸面上的做法很直接。买下便宜的整家商店,同时卖出那批昂贵的货,等价格恢复正常,中间的差就是利润。商店类比到这里还成立,到下一步就不成立了。现实里的货可以搬出来卖,当时的 Palm 股票还没分到 3Com 股东手里,想提前锁住差价,只能卖空 Palm。

卖空的意思是先找人借来股票卖掉,以后再买回来还给对方。Palm 刚上市,市场上流通的股票很少,能借到的更少,借券的成本也高。价格关系荒唐得谁都看得懂,第二天《华尔街日报》和《纽约时报》都写了这件事,错价却拖了好几个月才消失。这个案例后来被反复研究,它说明的就是一件事,发现错价和赚到错价,是两件不同的事。感兴趣可以读 Lamont 和 Thaler 的分拆上市研究,以及他们关于一价定律的综述。

复古科幻风插画:一名交易者面对两个价格矛盾的透明货柜,通往便宜货柜的道路畅通,另一侧被借券闸门挡住
账面上有出口,不代表现实里那扇门开着。

这个系列一共十篇,讲的都是“套利”。这一篇先回答两个问题。套利赚的钱到底是谁付的,屏幕上的价差又要过几道关,才能变成账户里的钱。

先把判断放在前面。每一种套利背后,都有一个愿意付钱的人和一条把价格拉回来的规则。付钱的人可能是急着成交的买家,加了杠杆的多头,或者抵押品不够被清算的借款人。拉回价格的规则可能是交割、赎回、协议代码,也可能只是一段历史统计。规则越硬,价差越接近确定的钱。规则越软,越像在押注。无论哪一种,看到的价差都要先扣掉手续费、滑点、资金成本和失败损失,剩下的才归你。

下面先说清楚一笔套利要做完哪些动作,再按“谁付钱”把套利分成九类,接着给它们的可靠程度排个序,最后把一笔交易的账从头算到尾。

价差只是起点,一笔套利要把每一步都做完

平时看到“A 平台卖 99,B 平台卖 101”,大脑会自动把后面的故事补完。去 A 买,再去 B 卖,两块钱到手。下单的时候,这个故事要拆成一连串必须真的发生的动作,每一步都可能和想象不一样。

A 平台显示的 99 元,可能只是上一笔成交价。轮到你买的时候,挂单里最便宜的卖价已经是 99.4 元。B 平台愿意按 101 元买的人,可能只要一小笔,卖得多一点,就会一路卖到 100.5、100.2。资金从 A 转到 B 还要时间,等钱到了,原来的买家早就走了。想两边同时成交,就得提前在两个地方各放一份钱和一份货,这部分资金在等机会的时候什么也不赚。

Barry Johnson 在《Algorithmic Trading & DMA》里用大量篇幅讲订单簿、订单类型和执行成本,原因就在这里。策略写在纸上只有一行公式,真正下单时要面对的是价格、数量、排队顺序、网络延迟和成交失败。

按谁在付钱,套利大致可以分成九类

给策略分类,看它在哪个交易所跑、程序用什么语言写,都帮不上太大忙。更有用的问法是,这笔钱由谁付,凭什么价格会回到该在的位置。后面的九篇文章,就沿着这条线逐个展开。

第一种,同一件东西卖了两个价格

同一个资产在两个市场报价不同,在便宜的地方买,在贵的地方卖。它可以发生在两个中心化交易所之间,也可以发生在交易所和链上的资金池之间。场所不同,利润来源一样,都是“同一件东西应该同一个价”这条一价定律暂时没有成立。付钱的是贵那边的买家,他们急着成交,或者进不了便宜的那个市场。

“泡菜溢价”是很有代表性的例子。研究发现,2016 年 1 月到 2020 年 1 月,比特币在韩国市场平均比美国市场贵约 2.27%。价差能长期存在,原因不在没人看见。韩国的资本管制放大了比特币网络本身的摩擦,转账要等确认,交易有成本,等待期间价格还在波动,这些都限制了套利者把两边价格搬平的能力。研究也发现,交易成本和价格波动越高,溢价往往越大,中间那堵墙越难翻。相关数据见 Choi、Lehar 和 Stauffer 的研究。

第二种,绕一圈后多出了一点

三角套利很早就是外汇交易员的基本功。匈牙利中央银行的一份外汇教材给过这样一组报价。1 美元兑换 1.25 瑞士法郎,1 英镑兑换 1.80 美元。按这两条汇率推算,1 英镑应该值 1.80 × 1.25 = 2.25 瑞士法郎。第三个市场却愿意用 2.30 瑞士法郎买一英镑。

从 1 英镑出发,先换得 2.30 瑞士法郎。再按 1.25 换成美元,得到 2.30 ÷ 1.25 = 1.84 美元。最后按 1.80 换回英镑,得到 1.84 ÷ 1.80 ≈ 1.0222 英镑。一圈走完,多出约 2.22%。付这笔钱的,是那个把英镑报得偏高的市场,它的报价和另外两条汇率对不上。这是没有算买卖价差的教学报价,真实市场不会把这么肥的机会摆很久。原始计算可以看匈牙利中央银行的外汇手册。

真实市场里的货币和路径多得多。程序把每种资产看成一个点,把每个能兑换的交易对看成一条线,去找这样的环路,沿着它把每一步能成交的汇率乘起来,扣掉费用以后结果仍然大于 1。路径找到了,还要处理数量精度、最小下单量,以及每一腿能不能真的成交。Chaboud 等人研究了 EBS 平台 2003 年到 2007 年欧元兑美元、美元兑日元、欧元兑日元的高频数据,发现算法交易兴起以后,三角套利机会出现得明显更少,主要是电脑抢先吃掉了别人挂出的错价报价。论文见Rise of the Machines。机器没有发明三角套利,只是把交易员手里的计算器按得更快。

第三种,合同规定它们迟早要碰头

交割合约是一份约定在某个日期按某个价格买卖的合同。今天它和现货可以不同价,到了交割日附近,二者就不能各走各的,因为合约到期时要按现货价格结算或者真的交货。期货和现货之间的价差叫基差。买入便宜的一边、卖出贵的一边,赚的就是基差缩小的那部分。近月和远月合约之间的跨期套利也属于这一类。

这里把价格拉回来的力量是交割和结算规则,用不着大家“觉得差不多了”。CME 的外汇期货教程说得很直接,基差不管是正是负,期货价格都会随着临近到期向现货靠拢,到期时二者趋于一致。付钱的通常是想用期货提前锁定价格或者加杠杆做多的人,他们愿意为这份便利多付一点。强制收敛也不等于一路平稳。到期之前价差可能先扩大,保证金不够的人会在终点前被迫离场。

第四种,持仓期间有人不断付钱

永续合约没有到期日,没法靠交割把价格拉回现货。交易所的办法是收资金费,每隔一段时间在多空之间转一次钱。合约比现货贵时,费率为正,多头付钱给空头,于是做空的人变多,价格被往回压。有人买入现货,同时做空等量的永续合约,现货和合约的涨跌大体互相抵消,主要收入就是资金费。付钱的是那些愿意多付一点、也要用杠杆做多的人。

资金费和存款利息很不一样。费率会变正,也会变负,仓位还要占用保证金。真正的账要把每一次结算加起来,拿某一个特别高的时点直接乘成全年收益,算出来的数字会好看得离谱。

第五种,一边借得便宜,另一边收得更多

如果一个市场可以用 3% 的年利率借到资产,另一个市场愿意为同样的资产付 6% 的收益,表面上有 3% 的利差。付钱的是高利率那边的借款人,那里借的人多、出借的人少,利率被推了上去。

数字资产借贷通常要先放抵押品,利率也会随资金被借走的比例变化,今天的 6% 明天可能只剩 2%。抵押品价格下跌,还可能触发清算。所以“借 3 存 6”只是账本的第一行,抵押资金本来能赚的钱和被清算的风险,都要继续往下写。

第六种,市场价格偏离了能兑现的价值

一枚代币在市场上卖 0.98 美元,如果符合条件的持有人确实可以找发行方按 1 美元赎回,买入再赎回就有 2 美分的空间。稳定币、质押凭证、封装资产和基金份额都可能出现类似关系。付钱的是在 0.98 美元卖出的人,他们急着要现金,自己又没有资格或者等不及去赎回。

关键在“确实可以”四个字。谁有资格赎回,最低金额多少,要等多久,赎回方手里有没有足够的资产,这些条款决定了 1 美元到底是一扇能走出去的门,还是屏幕上的一个愿望。

第七种,协议花钱请人收拾危险仓位

借款人的抵押品不够了,借贷协议需要有人替他还掉一部分债,再把对应的抵押品接走。为了让这件事有人愿意做,协议会让清算者以折扣价拿到抵押品。这份折扣出自被清算的借款人,是他为没及时补仓付出的代价。

以 Aave 为例,它用一个叫健康度的数字衡量仓位安全,低于 1 时任何地址都可以发起清算。清算者拿到的抵押品通常还要卖掉,折扣扣掉网络费用、卖出时的价格冲击和抢同一笔清算的竞争成本后,才是净利润。机制细节可以参考Aave 的清算说明。

第八种,几样东西必须满足同一个等式

看涨期权是到期时按约定价买入的权利,看跌期权是按约定价卖出的权利。同一标的、同一约定价、同一到期日的一对看涨和看跌期权,组合起来的效果和“持有现货、借一笔现金”可以互相复制,所以它们的价格之间有一个固定等式,叫平价关系。市场报价让等式两边不相等时,就可以卖出贵的一组、买入便宜的一组。付钱的是报出错价的那一方。

这类策略看起来最像数学题,也最容易在算式里漏掉现实。美式期权可以提前行权,股票可能分红,四条腿各自的买卖价差加起来,也可能比理论上的错价还大。

第九种,它以前总回来,这次也许还会

两个资产长期保持某种统计关系,价差突然拉开时,买入相对便宜的一边、卖空相对贵的一边,等关系恢复。这就是配对交易和统计套利常见的起点。如果拉开只是因为有人急着大笔买卖、暂时把价格推歪了,那个人就是付钱的人。如果拉开是因为其中一家公司真的变了,就没有人付钱,亏的是你。

前八种多少都有交易、合同或者协议规则做担保,统计套利没有这样的出口。模型只能告诉我们过去怎样,没法命令未来回来。它仍然叫套利,但“套利”两个字在这里已经软了很多。

未来主义信息图插画:九条不同颜色的金融管道汇入同一个透明利润计量器,分别象征价格差、环路、收敛、现金流、利率、赎回、清算、平价和统计关系
名字里都有“套利”,每一种策略收钱的理由却不相同。

有的价差会被拉回来,有的只是在等运气

九类摆在一起,可以按一个标准排队,看背后有没有一只手把价格拉回去,这只手有多硬。最硬的是当场就能做完的兑换。在链上,三角路径可以塞进同一笔交易,要么三步全部成功,要么全部撤销,算完就知道结果。其次是有合同或协议兜底的策略,交割、赎回、清算都在这一档,价格迟早要回来,只是路上会颠簸。

再往后是资金费和利差。它们确实会产生现金流,但现金流的方向和大小一直在变。最软的是统计关系。两只资产以前像拴在一起,不代表绳子不会断。

未来主义插画:左侧两颗金属球被坚固轨道强制拉到一起,右侧两颗发光球只由一根松弛橡皮绳连接,象征强制收敛与统计回归
交割像轨道,赎回像出口,统计关系更像一根可能松掉的皮筋。

这把尺子还有一个副作用。约束越硬,大家越放心,机会消失得也越快,竞争最激烈。约束越软,机会能存在更久,套利者要承担的模型风险也越多。所以它不是收益排序,只是判断一个策略属于哪种性质。

还要说清楚一点。套利里的“对冲”,是用一边的盈利抵消另一边的亏损,它只能抵消价格涨跌。有几类风险,对冲帮不上忙。交易所倒闭或者冻结提现,你在那边的半笔仓位和资金一起被困住。赎回方暂停赎回,0.98 买进的代币就失去了那扇门。合约规则、协议参数被改掉,原来的等式也就不存在了。这些风险不是哪条腿亏、哪条腿赚的问题,是整笔交易的地基出了事。

先别看年化,把一笔交易算完

假设程序发现两个市场有 1% 的价差,投入 10,000 元,屏幕上的毛利润是 100 元。下面这组数字是为了演示账本而设的假设,接下来一项项扣。

看到的毛价差+100 元

双边交易手续费−24 元

吃掉盘口产生的滑点−31 元

转账、借贷或网络成本−12 元

失败交易的预期损失−18 元

估算净收益15 元

100 元减去 24、31、12、18,剩下 15 元。这三个数字分别对应三种收益。100 元是理论收益,按屏幕报价算出来的。扣完手续费和滑点的 45 元,接近成交以后的账面收益,按实际成交价算出来的。再扣掉资金成本和失败损失,15 元才是一段时间以后真正留在账户里的净利润。很多策略宣传里的数字,停在第一层。

滑点是什么意思,第一节其实已经演示过。想按 101 元卖,买盘只够一小笔,剩下的只能按 100.5、100.2 往下卖,平均下来的成交价比看到的差,差出来的就是滑点。

最容易漏掉的是失败损失。假设十次交易里九次各赚 30 元,一次只成交了一边,另一边价格跑掉,亏了 400 元。九次一共赚 270 元,减去 400 元,十次合计亏 130 元,平均每次亏 13 元。胜率九成,期望却是负数。失败不能只写在日志里,它必须进入收益公式。

算到 15 元还没完。为了两边同时成交,两个市场往往要各放一份资金。如果实际占用的是 20,000 元,这笔交易的收益率就是 15 ÷ 20,000 = 0.075%,比一开始看到的 1% 小了一个数量级还多。资金占用的时间也要算进去,同样赚 15 元,占用一分钟和占用一个月,完全是两种生意。

后面每篇文章都会用这张账。先算毛收益,再扣显性成本、价格冲击、资金成本和失败损失,最后看占用了多少资金、多长时间。两个策略的收益率,要这样算完才有比较意义。

未来主义插画:一枚标有价差的发光金币经过手续费、滑点、延迟和失败四道机械闸门,最终只剩一小枚硬币落入利润盒
毛价差一路过关,最后剩下的才归你。

量化做的,是把含糊的话改成可以检查的规则

“价差够大就做”没法交给程序运行。多大算大,按挂单里能成交的买卖价算还是按中间价算,按多少数量算,报价多久没更新就算过期,一边成交失败以后怎么处理,每一条都得写清楚。

程序先把报价还原成在这个数量下真的能成交的价格,再算出所有交易腿合起来的预期结果。达到预设的门槛,才选择订单类型、发送订单、确认成交、更新仓位。交易结束后,账本还要回答三件事。这笔钱从哪里来,没成交的机会为什么没成交,亏损发生在哪一步。

量化没有把风险变没。它只是逼着人在下注之前写下条件,在结束之后留下证据。

回到开头的 Palm。那道算术,当年几乎每个看盘的人都会做,真正卡住人的是借券那一步。今天的加密市场换了场景,道理没变。屏幕上的价差谁都看得见,钱最后落到那些看清了谁在付钱、算清了每一项成本、也真能把每条腿做完的人手里。

下一篇从最直观的一价定律开始。有人把跨市场套利分成 CC、CD 和 DD,C 指中心化交易所,D 指链上交易市场。我们把这三种放进同一笔跨市场交易,看看同一个币出现两个价格时,程序究竟要完成哪些动作。