每天有成千上万的人第一次使用去中心化交易所。然而,公链的特性通常会让新手措手不及,即使是那些熟悉传统市场的用户。结果就是交易者的资金流向套利者和抢跑者,导致其操作受到预期之外的影响。
在宏观层面上,我们可以将每笔交易的成本分解为几个部分:
价格冲击
中间费或交易费
滑点
底层区块链的交易费
这篇关于自动做市商 (AMM) 的文章将作为本系列的引介,并讨论第一种也是最关键的成本:价格冲击。读者将了解到:
Uniswap v2, Sushiswap 和 Balancer 的 AMM 机制如何确定价格
注:其他使用中心化订单簿 (如 Serum) 或批量拍卖 (如 Gnosis) 的 DEX 本文不作讨论)
如何使用一些简单策略最小化价格冲击对个人交易的影响
流动性池是什么?
大多数去中心化交易所的流动性池代表了不同的交易对,例如 ETH/WBTC。不同于在订单簿中匹配买卖方的方式,这些流动性池作为自动做市商 (AMM, automated market maker) 存在。
流动性池是一个智能合约,其中储存了两种或以上的代币,并且允许任何人在其中进行存款和提款操作,但是受到特定规则的约束。
其中的一条规则就是恒定乘积公式 x * y = k,x 和 y 代表 A, B 两种代币的储备。为了取出一定数量的代币 A,用户必须要存入成比数量的代币 B 以维持恒定的 K 值 (注:每次交易的费用会导致 K 值略微升高)。
AMM 如何定价?
根据恒定乘积公式可得,使用代币 B 储备量除以代币 A 储备量可以简单得到代币 A 的价格 (price_token_A = reserve_token_B / reserve token_A)。
表1: 不同的 AMM 公式会产生不同的价格曲线。假设 Uniswap v2 流动性池有 15 个 Y 代币时,它只会为边际 Y 代币支付 0.1 个 X 代币。但是当只有 2.5 个 Y 代币时,它会支付 4.0 个 X 代币。其他价格曲线旨在将更多流动性集中在某个价格 (例如稳定币为 1.0)。来源:Curve 白皮书
举个真实的例子,在撰写本文时 Uniswap 的 ETH/WBTC 交易池中有 2,700 WBTC 和 86,000 ETH。该储备率意味着 ETH 当时的市场价格为 2,700 / 86,000 = 0.0314 WBTC。
至关重要的是,AMM 不会随着其他市场的变动而更新此价格。市场价格只会随着池中代币储备率的变化而变化,当有人在其中进行交易时就会产生变化。
举个例子,如果 Binance 中的 ETH 价格跌至 0.0310 WBTC 会发生什么?这意味着 Uniswap LP 目前正在以溢价购买 ETH,从而创造了套利机会。套利者在 Binance 上购买“便宜”的 ETH,然后在 Uniswap 上出售以获利。他们会一直这样做,直到 Uniswap ETH 单位价格变成 0.0310 WBTC (与 Binance 相同),他们无法再通过卖出 ETH 获利。在我们上面的示例中,这会发生在以 17.2 WBTC 的价格向交易池出售 550 ETH 后 (为简单起见,忽略费用和 gas)。
因此,即使 AMM 不会根据现实世界的信息更新其价格,由于持续的套利,交易者仍然可以预期 AMM 的报价会密切跟进全球市场价格。
价格冲击是什么?
虽然我们学习了如何根据两种代币储备比率计算当前市场价格,但该市场价格仅代表 AMM 想要的边际代币价格。然而在实践中,交易者通常会一次性买卖许多代币,每单位代币的成本都比前一个高。
当前市场价格与预期成交价之间的差距就是价格冲击 (price impact)。
价格冲击是以下两个因素作用的结果:
你交易量的规模在流动性池中的占比;
流动性池采用的交易规则 (例如恒定乘积公式)。
表2 : 不同订单规模下的平均成交价 (左 y 轴) 和价格冲击 (右 y 轴) 对比图。这两个参数都随着订单规模增大而增加。随着订单规模在流动性池规模中的占比增加,成交价相对市场价格会高出更多。
表3: 在 Uniswap v2 上不同规模的流动性池中进行 10 WBTC 的卖单后,平均成交价 (左 y 轴) 和价格冲击 (右 y 轴) 的对比图。流动性池规模指的是交易池中两种资产储备量的总价值。10 WBTC 的卖单在不同流动性池中的占比分别为 0.19%、1.85% 和 18.52%。因此根据经验,你的订单的价格冲击约为该订单规模在流动性池中占比的两倍。
如何最小化价格冲击?
正如我们之前提到的,价格冲击在交易总执行成本中占很大一部分。以下是一些能够将价格冲击最小化的简单策略:
找到深度最好的市场:到目前为止,我们已经确定价格冲击取决于交易规模在流动性池或市场规模中的占比。因此,我们希望找到在某个价格区间流动性最好的交易池,以使成交价尽可能接近市场价格。Coingecko 上的市场深度表是一个不错的切入点。
表4: 市场价格差异 2% 内的 UNI 交易对流动性排序。注意 Uniswap 和 Bitfinex 价差的差异。来源:Coingecko
关注 DeFi 以外的市场:虽然这是一篇关于自动做市商的文章,但是我们知道用户并不总是能够在链上获取最佳的交易执行。实际上,由于所讨论的自动做市商的流动性分布在一个连续的价格区间内,通常很少会有流动性集中在当前市场价格附近。这是许多去中心化交易所都试图解决的问题。例如 Uniswap v3 可以让做市商将其流动性集中在当前市场价格附近,从而提供比中心化交易所更有竞争力的价格。
如果有一笔交易改变了去中心化交易所上某个代币的价格,且该代币还在其它市场上交易,就会产生套利机会。如上所述,套利者将进行尾随交易 (即在某笔交易后立即插入自己的交易),让去中心化交易所上的价格重新回到全球市场价格。显然,套利行为的存在本身就是一种执行不当证明,因为交易者无异于向套利者捐赠资金。这引出了一个问题:其它市场存在的情况下,你是否应该接受超过 2%-3% 的价格冲击来执行链上交易?
注意交易费:自动做市商收取 0.3% 的交易费,这就意味着最佳买单和最佳卖单之间的价差是 0.6%。在这个范围内,自动做市商不会进行报价。换言之,即使是流动性最好的自动做市商交易也明显存在 0.3% 的价格冲击。尽可能降低交易费是至关重要的,对于在中心化交易所中受到价格冲击影响微乎其微的交易来说更是如此,因此,完全可以说中心化交易所可能是更好的交易执行平台。(做个对比,同样一笔交易的费用在币安上可能是 0.1%,在 FTX 交易所中可能是 0.07%)
尽管如此,还有其它原因导致去中心化交易所的成本较高,如全托管、KYC 或存款流程等。但即使在这些情况下,交易者也应该意识到较高的交易价格背后意味着去中心化或即时流动性溢价。
分散交易:首先,我们可以将一笔交易分解成几笔较小的交易陆续完成。这点对于更倾向于使用去中心化交易所的交易者来说尤其重要,暂不论 DeFi 领域之外还存在其它流动性市场。举个例子,每次买入 20%,然后等待套利者恢复价格。这 5 笔交易的价格冲击加起来低于一笔大额交易,但 gas 成本会更高,执行时间也会更长。交易的数额越大,这个策略就越有优势,因为固定的 gas 成本随着更优的边际执行降低。这个策略也同样适用于均值反复资产 (如稳定币)。
直接交易的成本不一定更低廉:并非每笔交易都存在直接交易对,即使存在,也不一定比使用中间货币更便宜。例如,尽管代币 A 和 B 存在直接交易对,但是在 A-ETH 和 ETH-B 代币对流动性更充足的情况下,A → ETH → B 的交易路线通常更便宜。从交易路线来看,聚合器的建议非常有帮助。
使用去中心化交易所聚合器:最后,你可以使用1inch、Matcha 或 Paraswap 等去中心化交易所聚合器。这些聚合器相当于 DeFi 领域的智能订单路由,其运行方式是自动做市商卖出第 1 个代币的价格会比第 10 个代币低。每当某代币在多个流动性池中交易时,聚合器会从所有流动性池买入该代币,尽可能降低每个流动性池的价格冲击。不同于在一个市场中拉长交易周期,聚合器会在许多可能的市场中分散交易并立即执行。和手动拆分交易一样,聚合器的 gas 成本同样比单笔交易更高。
表5:用 ETH 买入 10 个 (3200 美元)、50 个 (1.6 万美元)、100 个(3.2 万美元) 和 200 个 (6.4 万美元) AAVE 的最佳策略。交易规模越大,交易路径就会包含越多交易所,避免对单个流动性池造成过大的影响。来源: 1inch
预告
在本系列的第二篇文章中,我们将讨论滑点。几乎所有自动做市商交易都会被抢跑,最终以交易者愿意接受的最大滑点成交。这是公链交易独有的“特征”,在如今的去中心化交易所模式下都无法避免。这一成本只能转移,从而导致 “三明治困境”。
来源 | research.paradigm.xyz
作者 | Hasu
致谢:感谢 EvanSS、Georgios Konstantopoulos、Dave White、Dan Robinson、Arjun Balaji 和 raul 的讨论和审阅。