星球日报
搜索
手机客户端
iPhone · Android
微信公众号
微信公众号

iPhone · Android

微信公众号

机器人大战:做市商如何在加密货币交易所套利?

2019-06-26

一文揭秘加密货币交易所中做市商是如何工作的。

编者按:本文来自 Medium文章《Battle of the Bots: How Market Makers Fight It Out on Crypto Exchanges》,原文作者:Mack Grenfell,前加密货币交易所做市商,编译:Odaily星球日报芦荟。

2017 年 12 月至 2018 年 3 月的几个月里,我写了一个机器人,执行了价值约 5000 万美元的加密货币做市商交易。接下来我将会讲我如何进入做市商的故事、机器人算法背后的理论、以及做市商之间日益激烈的竞争。

FOMO

将时间拨回 2017 年 11 月,当时比特币价格正迅速上升至 10,000 美元大关,这一价格的指数式上涨使得比特币走向主流的速度加快,随着更多的投资者的进入,价格得以进一步上涨。

在这段时间里,我和两个朋友外出度假。 这两位朋友都在比特币上投入了不少本金,并在不断上涨的价格中获利。 作为三人中唯一一个之前没有考虑过投资的人,我觉得自己好像错过了什么。

度假回来后,我做的第一件事就是找到一个加密货币交易所,并在自己的账户中存入了 500 美元,我的计划很简单: 购买价值 500 美元的比特币,如果我看到回报,就增加投资。

机器人大战:做市商如何在加密货币交易所套利?

价差(spread)

在我投入 500 美元之前,我注意到一些奇怪的现象: 我正在进行交易的交易所有一个很大的「价差 」。

在阐述这个现象之前,为了理解什么是价差,以及为什么价差这么重要,我们需要了解一些关于交易所如何工作的基础知识。

当我们想到交易所的交易资产比如股票时,我们一般会认为它有一个固定的价格可以买卖。 例如,苹果 (Apple) 股票的价格为 100 美元。 但实际上,价格并不单一,而是有两种不同的价格:

出价 / 买家价格(bid price), 这是交易所中任何人愿意为一项资产支付的最高金额。

要价 / 卖方价格(ask price),这是交易所中任何人愿意出售资产的最低价格。

大多数买家愿意支付的价格往往低于卖家愿意出售的价格,因此出价总是低于要价。

机器人大战:做市商如何在加密货币交易所套利?

就苹果股票而言,这两个价格可能非常接近。 买方价格为 99.99 美元,卖方价格为 100.01 美元。 这两个数字之间的差距 (0.02 美元) 就是我们所说的价差。

对于像苹果这样受欢迎且稳定的股票来说,价差很小。 这是因为总是有很多人愿意购买这支股票,这导致了买方价格的上升,也有很多人愿意卖出,从而压低了卖出价。 买家之间和卖家之间的竞争,实际上推动了买卖双方的价格接近。

不过,当我第一次开始研究比特币交易时,价差要大得多,通常高达 100 美元。 在此期间,比特币的交易价格约为 10,000 美元,这意味着其价差可能高达其总价值的 1% (相比之下,苹果的交易价差仅为 0.02%)。

比特币的价差规模是 2017 年 12 月市场混乱的结果。 包括你我以及普通民众在内的散户投资者涌入市场,这导致的结果是,价格波动太过剧烈,由此价差永远无法稳定。

巨大的利差听起来似乎是一件坏事,在某种程度上确实也是。但与此同时的是,高利差也提供了一个获利的机会。

假设比特币的买方价格为 9900 美元,卖方价格为 10000 美元,价差为 100 美元。 如果你能够以 9900 美元买入一枚比特币,然后立即以 10000 美元的价格卖出,那么你就获得了 100 美元的利润。

挂单与吃单(Makers and Takers)

如果你觉得这情况太理想,反而不像是真的,那你就对了。你之所以怀疑,是因为想到了交易手续费怎么办? 为了了解手续费是如何与之相适应的,我们必须在交易所的运作方式上再绕上一圈。

假设你想买比特币,它的买入价为 9900 美元,卖出价为 10000 美元。 大致有两种方法可以做到这一点:

首先,你可以提交一个挂单(maker order)。 在这里,你可以指定一个价格,最高可以达到卖方价格(也就是 0 美元到 1 万美元之间) ,以及一个你愿意购买的数量。 你的订单一直停留在交易所,直到有人出现并决定接受你的订单,至于是几秒还是几天后发生,这取决于你的价格有多高和交易所的交易量。

或者,你可以提交一个吃单(taker order)。 这跟挂单完全相反,需要你即时购买比特币。 但问题是,你的吃单匹配的是所有卖家挂单中最低的价格。当然,这也是要价/卖方价格,即交易所中任何人愿意出售资产的最低价格。

机器人大战:做市商如何在加密货币交易所套利?

在我们继续之前,关于 maker & taker 订单有几件重要的事情需要注意:

  • 每当比特币在交易时,都会涉及到一个挂单和一个吃单,你不能和两个挂单或者两个吃单进行交易;

  • 如果你决定走挂单路线,你出的价必须等于或高于买方价格,以便有一个很好的机会让卖方接受你的订单。

  • 最后,挂单增加了市场的流动性,它们为交易所的其他人提供了更多的买卖选择。 与此相反,吃单从市场中抽走流动性,因为他们从交易所中移除了挂单。

最后一点至关重要,因为它有助于解释大多数交易所的收费结构。 由于交易所希望最大限度地提高流动性,所以它们通常会对吃单收取比对挂单更高的费用。 有些交易所,包括我正在使用的交易所,只收取吃单的手续费,对挂单收取 0% 的费用。

回到我们之前的例子。 如果我们能够以 9900 美元的价格购买比特币,通过挂单以 10000 美元的价格出售,那么我们每交易一个比特币就能获得 100 美元的纯利润。

挂单不仅仅是为了免手续费,还来自于这样一个事实:即如果我们使用吃单购买,我们必须得以卖方价格支付,也就是 10,000 美元。 接着如果我们继续通过吃单出售,我们必须以 9900 美元的买方价格出售,那么就会损失 100 美元。

因此,使用挂单,我们通过在买方价格买入,在卖方价格出售,可以很大程度上保证利润。然而,还有一个最后的问题,就是它对可以通过编程实现这一点的算法设计提出了最大的挑战。

正如我们前面提到的,在交易发生之前,需要一个挂单和一个吃单一起。 吃单的人往往会 “吃” 到最好的价格。 如果你想通过挂单买到比特币,那么为了让吃单人与你的单子相匹配,你必须出价略高于买方价格。 你的出价高出多少并不重要,你也可以只多出一分钱,比如 9,900.01 美元。

机器人大战:做市商如何在加密货币交易所套利?

因此,编写做市机器人的第一步就是能够挂一个出价高于当前买方价格的买单。 这需要一个 API 查询买方价格,另一个 API 来提交订单。

理论上,只要出价比买方价格高出一个百分点就可以了。 然而,在实践中,在查询买方价格和提交订单之际,买方价格往往会发生变化。 为了确保你的订单高于所有其他买入订单,因此买入价格通常建议设置为高于当前买方价格 5–10 美分 。

这确保了,如果一个卖家的吃单来了,它将与我们的买入挂单相匹配,以后我们无论买多少比特币都不会损失任何费用了。

然后,我们可以做与我们刚才所做的完全相反的事情。在出售方面。 我们查询当前的卖方价格,并出价比那低几美分。 这可以确保,如果一个买家的吃单订单来了,它与我们的卖出挂单匹配。

我们已经获得了一笔可观的利润,大致等于比特币交易价差 (买卖价差) 乘以我们能够交易的比特币数量。

机器人大战:做市商如何在加密货币交易所套利?

竞争

如果你还是觉得这太容易,反而不真实,那么你仍然是对的。只要有明显的盈利机会,交易者就会蜂拥而至,这就造成了竞争。这方面最明显的例子可以从做市商之间为设定买入价而相互竞争中看出来。

早在 2017 年 12 月,因为竞争太激烈,以至于买方价格通常每秒变化多次, 通常只会增加 1 或 2 美分,因为交易员之间相互争斗,以最大化他们设定买入价格的时间,同时也希望尽可能低价。

最初,我的机器人在查询买方价格之后,往往以高出 1 美分的价格挂买单,尽管看起来很明智,但我发现,当我的订单通过审核时,我的价格往往比 (不断变化的) 买方价格低几美分。

为了避开这个问题,并确保尽可能多的订单将击败当前的买方价格,我测量了每 100 毫秒买方价格通常会变化多少。 这使得我的机器人能够提供比买方价高出足够多的价格(0~5 美分) ,这样以来,其他交易员就不会在我的订单处理过程中超过我的价格。

我也开始考虑,价差的大小将如何影响我买单超出买方价格的部分。 正如我们之前看到的,任何交易的利润都与利差的大小成正比,这使得在价差很大时击败买入价格变得更加重要。 也正因为如此,我写了一个公式,这个公式根据价差的大小,决定我的出价得比买方价格高出多少。

机器人大战:做市商如何在加密货币交易所套利?

到目前为止,我主要谈论的是做市的买入方面,但卖的工作是完全一样的。 一旦你购买了比特币,你就想要以 (更高的) 卖价出售它。 在卖价上会有竞争,就像在买价上有竞争一样,所以你必须提供比当前卖方价格低几美分的价格来削弱你的竞争对手。

不过,2017 年末 / 2018 年初,卖方价格的竞争通常要少得多。 我认为之所以买家之间的竞争比卖家之间的竞争更激烈,这是因为当时比特币供不应求。

市场操纵

市场操纵是指交易者为了获得不公平的优势而在市场上使用的各种恶意策略。 作为一个不受监管的市场,加密货币交易所在市场操纵方面已经成熟(现在仍然如此)。 最常见的操纵形式是所谓的欺骗 ---- 仅仅为了改变市场状况而下单的行为。

怎么操纵呢?举个例子,在前面的说明中,买方价格 9900 美元、卖方价格 10000 美元,价差是 100 美元,这是一个很好的市场机会。 然而,如果有人下了一个价格为 9,999.99 美元的买单,那么价差就会缩小到仅仅 1 美分。 利差太小,使得不可能从做市中获利,那么所有的交易活动都会陷入停顿。

买家挂一个低于卖价 1 美分的订单,本身并不是市场操纵。 事实上,如果你的交易所不收取比特币挂单费用,这是一个快速有效购买比特币的方式。 但问题是,每当出现这些买单的时候,它们的量都是最小的 0.00001 比特币,价值约 10 美分。

做市商之所以会下这么小的买单,而且恰好低于卖出价的原因十分天才,是因为如果做市商刚刚能够以买入价买入比特币,那么他们就有动机尽快以卖出价卖出比特币。 他们出售比特币所需的时间越长,卖出价格变动的风险就越大,他们的利润也会发生变化。

当然,你可能会说,这段时间价格上涨的可能性和下跌的可能性是一样的。 做市商并不关心这个,他们的工作不是投机价格,而是尽可能快的进出。

为了阻止价格下跌,并阻止卖方竞争压低卖方价格,做市商将他们的卖出价定在要价的正下方,并在新的卖出价正下方插入一个 (“假的”) 买入指令。后一个订单的订单大小将尽可能小(0.00001 比特币)。

机器人大战:做市商如何在加密货币交易所套利?

这有两个影响:

  • 没有其他卖家能打败那个卖家的要价。 如果你低于要价 1 美分,你就是在买方价格,交易所不允许卖家以低于买方价格/出价的价格挂单。

  • 它将利差减少到仅仅 1 美分。 当一个做市机器人看到如此小的价差,它可能会暂时关闭,因为没有利润可赚。

这第二点是至关重要的,因为它解释了为什么当一个欺骗性的买单以刚刚低于卖方价格/要价的价格进入,几乎所有的市场机器人都关机了。实际上,即使利差看起来只有 1 美分,还是有机会的。

让我们假设下一个卖家要吃一个 1 比特币的单。第一个 0.00001 比特币将以伪造的指令卖给做市商,将该指令撤出交易所之后,下一个 0.99999 比特币将以新的出价出售给订单,这个新出价是低于伪造订单的最高价格。

我对我的机器人做出的最大改进之一是让它在计算传播时忽略欺骗订单。 即使卖出价可能只比买入价高 1 美分,我的机器人也会查看欺骗订单,找出如果没有欺骗订单 (仍可能是 50 美元至 100 美元) 的价差。 如果这个价差大到足以提供一个机会,它就会在欺骗性订单之后竞争下一个最高价格的买单。 这意味着,当卖家的吃单到来时,价值几美分的比特币将被卖给欺骗者,然后剩下的卖给我。

2018 年

2018 年的前几个月是动荡不安的。 去年 12 月比特币升至 2 万美元后,价格开始下跌。

机器人大战:做市商如何在加密货币交易所套利?

但这为做市商提供了巨大的机会。 买卖双方的高交易量(这意味着更多的吃单),大大增加了一个有效率的做市商每天可以执行的交易量。

然而,这一时期的机会相对来说是短暂的。 在 1 月和 2 月的疯狂之后,成交量开始枯竭,意味着获利机会减少。 尽管交易量下降,但随着新的机器人进入交易所,做市商的数量不断增加。

交易所的做市商越多,买卖价格的竞争就越激烈,价差进而收窄了。 额外的竞争对手也意味着,订单通常会在较短的时间内以买方价格出价,因为一旦你提交了订单,就会有更多的竞争对手准备出价高于你。

由于竞争的加剧和盈利机会的减少,我在 3 月份关闭了所有的机器人,从那以后再也没有重启过。许多交易所提高了做市商的费用,这阻止了我重返做市商行列的步伐,但对于那些足够聪明、能够把握时机的人来说,仍然有机会。

总而言之,我在 2017 年 12 月到 2018 年 3 月间交易价值约 5000 万美元的比特币,投资回报率为 20.2。

原创文章,作者:芦荟。转载/内容合作/寻求报道请联系 report@odaily.com ;违规转载法律必究。

参与讨论

登录后参与讨论

芦荟

新锐作者

芦荟

wechat联系:1012387983

总文章数: 377


分享至

微信扫一扫分享

0