Crypto DEX三角套利 (1)
我的计划是使用Tinyman(Algorand上的大型去中心化交易所)来看看是否能找到任何三角套利机会。流程看起来有点像这样。

一键发币: SUI | SOL | BNB | ETH | BASE | ARB | OP | POLYGON | AVAX | FTM | OK
套利是在市场中利用资产价格差异的做法。由于货币价格波动,套利在外汇交易中已经使用了很长时间。Investopedia对此有一个很好的介绍。
加密市场中也可能存在套利机会。事实上,在去中心化交易所中鼓励套利。套利是市场定价效率低下的体现,通过将资产带回其应有的水平,套利使这些价格“高效”起来。
1、套利类型
- 交易所套利
套利的一个例子是不同交易所之间的套利。例如,我可以在Coinbase Pro上购买BTC-GBP,假设我在Coinbase以32,051.44英镑的价格购买了1个比特币,然后将其转移到Binance并在那里以32,067.76英镑的价格出售。我赚取了16.32英镑的利润。这里有很多因素,比如转账费用、滑点、价差等,但这是基本原理。
- 三角套利

三角套利是一种执行三次或更多次交换以产生利润的方法。上面的例子说明了这一点,假设我们从1个BTC开始,我们将其换成14个ETH。我们再用14个ETH换得45,000个USDC,然后用这些USDC购买1.082个BTC。这产生了0.82个BTC的利润。
2、计划
我非常喜欢ALGO——我不是鼓吹者,也不是让你买一些,我只是觉得它非常容易使用、便宜且快速。我的计划是使用Tinyman(Algorand上的大型去中心化交易所)来看看是否能找到任何三角套利机会。流程看起来有点像这样。

我不想一直不得不为所有可用资产的排列组合获取交换报价。大约有122万种不同的资产组合(确切地说是1,224,936种)。如果我简单地对每种排列进行暴力破解,那将超过一百万个网络请求,这会非常慢。我想计算每个交换的所有报价,并创建一个类似这样的矩阵。

其中y轴是需要交换的资产,x轴是需要接收的资产。如下所示,如果你将ALGO作为A1,USDC作为A2,那么你会得到1个ALGO换0.751个USDC。

这解决了在路径上需要多次获取多个报价的问题,并允许快速查找矩阵。我只是将交换率乘以赌注,即10个ALGO换USDC给了我10*0.751 = 7.51个USDC。
实际上,我确实让这个程序运行起来了,但缺点是,我连续运行了两天,没有发现任何套利机会。有些接近成功,请为下面的接近成功的交换默哀一分钟——这是使用20个ALGO作为输入的。
Path (0, 31566704, 312769) Close to Profit!
First Swap Quote: SwapQuote(swap_type='fixed-input', amount_in=ALGO('20'), amount_out=USDC('14.394919'), swap_fees=ALGO('0.06'), slippage=0.01)
Second Swap Quote: SwapQuote(swap_type='fixed-input', amount_in=USDC('14.25097'), amount_out=USDt('14.260552'), swap_fees=USDC('0.042752'), slippage=0.01)
Third Swap Quote: SwapQuote(swap_type='fixed-input', amount_in=USDt('14.117947'), amount_out=ALGO('19.402954'), swap_fees=USDt('0.042353'), slippage=0.01)
Final Amount Of ALGO('19.208925')
--------------------------------------------------------------------
Path (0, 226701642, 404044168) Close to Profit!
First Swap Quote: SwapQuote(swap_type='fixed-input', amount_in=ALGO('20'), amount_out=YLDY('6096.563343'), swap_fees=ALGO('0.06'), slippage=0.01)
Second Swap Quote: SwapQuote(swap_type='fixed-input', amount_in=YLDY('6035.59771'), amount_out=Nekos('1242639.8739'), swap_fees=YLDY('18.106793'), slippage=0.01)
Third Swap Quote: SwapQuote(swap_type='fixed-input', amount_in=Nekos('1230213.4752'), amount_out=ALGO('19.212889'), swap_fees=Nekos('3690.6404'), slippage=0.01)
Final Amount Of ALGO('19.020761')
你可能注意到上面,路径是数字,不是ALGO——USDC等。这是因为大多数DEX使用ASA ID作为其池标识符。这些只是资产ID 。
3、问题
这个概念验证充满了问题,我没有意识到这会有多困难,也没有意识到需要考虑多少因素,就这样把自己困住了。
- 它很慢,对数百万种排列组合进行迭代并首先获取报价需要时间,更不用说多次矩阵查找对于相同的交换来说。
- 流动性会扭曲事情。如果我得到一个报价来交换1个goBTC换取USDC,由于美元价值的差异,池子里可能没有足够的流动性来促成这笔交易。例如,1个goBTC(价值40,000美元)可能会只换到200个USDC(价值200美元),因为池子里没有足够的USDC来完成整个交易——这会扭曲矩阵中的报价。
- 包括其他交易所意味着必须使用三维矩阵,这没问题,但增加了更多复杂性,查询也会更加困难。
- 我只进行了长度为3的排列组合,增加这个长度会使性能变得更糟,但我想看看使用5次以上交换的可能性——费用和滑点会影响这一点,但这都很有趣!
4、新方法
代码是有效的,但它找不到任何有利可图的交易,并且受到性能问题的困扰。
我必须完全重构代码以支持多个交易所并提高速度,否则它永远不会盈利。
我将在第二部分继续这个内容!
如果你对代码感兴趣,请理解我最终还是通过这个机器人赚到了一些不错的利润。在这种情况下,我会优先考虑自己,不会公开代码,因为我知道这会让机会更难把握。
原文链接:Triangular Arbitrage With Crypto DEX’s: Part One
DefiPlot翻译整理,转载请标明出处
免责声明:本站资源仅用于学习目的,也不应被视为投资建议,读者在采取任何行动之前应自行研究并对自己的决定承担全部责任。