多维度解析头部 AMM:Uniswap V3、Curve V2 与 Balancer V2

[复制链接]
5879 |0
发表于 2021-7-16 11:30:00 | 显示全部楼层 |阅读模式

从定价模型、滑点、无常损失、交易费等角度比较分析 Uniswap V3、Curve V2 和 Balancer V2。

撰文:Ricky Li、Siddharth Lalwani、 Hongxu Yan,就职于 Altonomy Ventures

自动做市商机制(AMM),以其常数级别的时间空间占用的优势,被许多去中心化交易所(DENPXS)采用,迄今为止已有许多此类项目大获成功。说到其中佼佼者,必须要提到 Uniswap、Balancer 和 Curve,它们都在近期推出了新的版本, 以针对流动性提供者所关注的各种问题和风险。 本文将会从多个方面对这三个协议的最新版本做出比较。

定价模型和不变式

参与到自动做市商机制中的人群,包括两种不同的角色:流动性提供者(LP)和交易者。流动性提供者向机枪池存入资金,而交易者用一种货币从池中换取另一种代币。AMM 协议需要解决的第一个问题就是如何定价,以一个二币池为例,即如何用代币 2(t2) 的数量表示代币 1(t1) 的价格。

假设池中两种货币的数量分别为 R1 和 R2,在一笔交易中一个交易者想用Δ2 数量的 t2 来买Δ1 数量的 t1。我们可以用一个交易函数ψ来描述一个 AMM 协议,其必须满足在交易前后函数值不变,不变式表示为:

wk588_4wx3w4mqtsy.jpg

wk588_4wx3w4mqtsy.jpg

根据这个等式,我们就可以由Δ1 推出Δ2 (或反之)。而这笔交易同时也会影响价格,因为池中的代币总量在交易之后改变了。实际上,因为机枪池的交易价格和外部参考市场的价格有差距,所以套利者会不断交易知道价差回归,AMM 正是利用这种机制来矫正池内的交易价格。每次交易的平均价格定义为:

wk588_xa01bqiixil.jpg

wk588_xa01bqiixil.jpg

当 dΔ1->0 时,我们可以计算得到边际价格。 三种协议的边际价格总结如下表

wk588_sv55khgl0id.jpg

wk588_sv55khgl0id.jpg Table 1 边际价格

Uniswap V3

Uniswap 的交易函数定义如下:

wk588_0hp0yklfg1w.jpg

wk588_0hp0yklfg1w.jpg

由此可得不变式为:

wk588_vwmq4ekmas2.jpg

wk588_vwmq4ekmas2.jpg

推导出Δ2 的表达式为:

wk588_wivnbe0d5gj.jpg

wk588_wivnbe0d5gj.jpg

边际价格为:

wk588_14izl0jxajl.jpg

wk588_14izl0jxajl.jpg

当 Δ1->0 时,

wk588_tdcpxk4a5sk.jpg

wk588_tdcpxk4a5sk.jpg

在新版本 V3 中,由于在不同价格区间的流动性密度不同,需要对每个同一流动性密度的小区间单独计算。当跨过区间边界时,需要的下一个区间做类似计算。

Balancer V2

Balancer 的交易函数定义如下:

wk588_v1krkslf5qo.jpg

wk588_v1krkslf5qo.jpg

由此可得不变式为:

wk588_hnvoq24ofto.jpg

wk588_hnvoq24ofto.jpg

推导出Δ2 的表达式为:

wk588_2ba45bwso5g.jpg

wk588_2ba45bwso5g.jpg

边际价格为:

wk588_hnf11c3pgpj.jpg

wk588_hnf11c3pgpj.jpg

当 Δ1->0 时,

wk588_o5xdk03xwh2.jpg

wk588_o5xdk03xwh2.jpg

权重ω1,ω2 也代表两种代币总市值的占比,如果指定ω1=ω2=1/2,那么该池就等价于 Uniswap 的池子。
特别的,Balancer 允许至多 8 种代币的混合池,当代币种类大于两种时,其交易函数扩展为:

wk588_n0yecd4rtzr.jpg

wk588_n0yecd4rtzr.jpg

其他推导步骤也可类似地拓展到多币的情形,推导步骤在此略过。

Curve V2

Curve 协议的交易函数是恒定和函数和恒定积函数的线性组合:

wk588_hojjzo0cen2.jpg

wk588_hojjzo0cen2.jpg

类似的,我们可以推导出边际价格,当 Δ1->0 时,

wk588_5jy0zpqkm3m.jpg

wk588_5jy0zpqkm3m.jpg

wk588_4s2bpthvo13.jpg

wk588_4s2bpthvo13.jpg

价格影响和滑点

根据上一步得出的边际价格公式,我们可以通过比较单次交易前后边际价格的变化,来定义这次交易的价格影响。比较三种协议的价格影响,我们能得出以下结论:假定交易同等数量的代币 1,设定ω1 越高的 Balancer 池,其价格影响越大,如果ω1>1/2,那么价格影响大于相同交易在 Uniswap 池中的影响,反之亦然。而在平衡点附近(即价格偏移不严重) Curve V2 的价格影响最小。

在下面的例子中,我们比较四个不同池子的单次交易价格影响,假设初始池中代币总量 R1=R2=10000:

  • 一个 Uniswap V3 池,初始价格为 1
  • 一个 Balancer V2 池,ω1=0.4,ω2=0.6,初始价格为 0.666
  • 一个 Balancer V2 池,ω1=0.6,ω2=0.4,初始价格为 1.5
  • 一个 Curve V2 池,α=1,β=3,初始价格为 1

四个池子的价格影响曲线如下图所示:

wk588_mufj1qpzt4i.jpg

wk588_mufj1qpzt4i.jpg Figure 1 价格影响曲线

明显的,对于交易相同数量 Δ1 的代币 1,对价格的影响排序如下:Balancer V2 w1=0.6 > Uniswap V3 > Balancer V2 w1=0.4 > Curve V2。

对于 Curve 来说,因为其在一定范围内价格影响最小,所以最适合稳定币的交易对。根据以往 AMM 协议的经验,价格影响曲线的形状往往和流动性提供者的收益相关。距上图所示,因为 Curve 的价格影响曲线最平缓,导致滑点较低,从而使交易者在这个区间中更频繁地(或更大量)交易,最终流动性提供者赚取了更多的交易手续费。

无常损失

wk588_zoq232g5psm.jpg

wk588_zoq232g5psm.jpg Table 2 无常损失

对于 Uniswap V3 来说,来自单一提供者的流动性是被放置在某一封闭区间上的,当一种代币的价格下降时,LP 对该种代币的风险敞口逐渐增大,直到价格来到区间边界。此时,该 LP 只有对该种代币的风险敞口,对另一种代币的敞口为 0,若价格继续往同方向移动,则敞口维持不变。

对于 Balancer V2 和 Curve V2 来说,流动性是对整个价格区间提供的,所以敞口会在整个区间上逐渐变化,不会到达最大 / 最小值。

wk588_wy1apjfpdrf.jpg

wk588_wy1apjfpdrf.jpg Figure 2 Balancer 池在不同权重配置下的相对价格变化对无常损失影响

对于 Balancer 协议来说,代币 1 的权重ω1 越小,相同价格波动下的无常损失越小,这是符合直觉的,因为 LP 持有代币 1 的量变小了。

出金与入金

对于想要参与这三种协议的流动性提供者来说,它们对于出金和入金的规则比较起来并没有绝对的优劣,不过根据个人的资产类别和风险偏好,每个协议都有更适合的情形:

Table 3 出金与入金

对于 Uniswap V3 来说,入金时存入两种代币的配比由两点因素决定(1)区间的两个边界 (2)当前交易价格。 简单来说,如果当前交易价格等于两个边界价格的几何平均数的话,LP 需存入 50:50 等量的两种代币。若当前价格更偏向一侧,那么 LP 需要存入的代币中,更便宜的那种代币占据更高的比重。若当前价格在区间之外,LP 只需提供更便宜的一种代币即可。

具体计算方法如下:

当出金时,两种代币的本金提取量可做类似计算。已赚取的手续费部分,以交易发生时的代币类型收取并提取。
对于 Balancer V2,LP 入金时总是需要提供池中所有种类的代币,其配比决定与该池的权重设置

对于 Curve,当入金时,LP 可以按任意比例存入代币,或仅存入单一种类的代币。但是,若存入比例和当前池内的代币总量比例不符合,LP 将承受一定程度的损失(或奖励)。因为当 LP 获取 LP 代币时,获得的量由以下公式计算:

其中 D 是在平衡点时池内代币总量,在流动性增加前其值为 D0,在流动性增加后其值变为 D1。但是,(假设投入相同数量的代币)当池内代币比例离平衡点越远,D 值会相对越小,导致 LP 得到的 LP 代币量较少,即产生了损失。相反的,若投入的代币使得池内代币比例趋向于回归平衡点,那么 LP 将得到更多的 LP 代币,即获得了奖励。

流动性聚集

就流动性聚集来说,Uniswap V3 给予了 LP 最大程度的灵活性,LP 们可以根据自己的意愿聚合出任意形式的流动性分布曲线。相较之下,Balancer 和 Curve 以更多的固定参数设定代替了这种灵活性。

Table 4 流动性聚集方式

Uniswap V3 允许每个 LP 设置任意的流动性范围,以期望总体流动性聚集在一个最活跃的区间。但是,理论上,根据每个 LP 的自主决定,流动性可以被塑造成任意分布。

举例来说,一个和 Uniswap V2 等效的流动性分布入下图所示:

Figure 3 流动性分布 Uniswap V2

这表示,若所有的 LP 都将流动性区间设置为最大可能区间,那么 Uniswap V3 池将会同 V2 等效。

以下是一个和 Curve 近似的流动性分布,所有的流动性都聚集在平衡点附近的一个狭小区间内

Figure 4 流动性分布 Curve

然而,上图仅仅是 Curve V3 的近似,其实际要更复杂。随着市场条件变化,最活跃价格区间偏离原平衡点太多时,Curve V3 会根据内置 Orcale 来重新调整平衡点和价格曲线。

以下是一个等效于 Balancer V2 的流动性分布,其聚集于更大权重的代币价格更低的一侧

Figure 5 流动性分布 Balancer V2

然而,以上都不是实际观察到的 Uniswap V3 池常见流动性分布,常见的分布更类似于以下:

Figure 6 实际观察到的流动性分布 Uniswap V3

交易费用

Table 5 交易费用

Uniswap V3

每个交易对有三个费用梯度的池子供 LP 选择:0.05%,0.3%,1%。直观上看,LP 更偏向于高费用池,但当高费用池的交易活跃度远低于低费用池时,LP 就不得不参与低费用池。交易者更偏向低费用池,但当低费用池的流动性过于稀薄而滑点过高时,交易者就会被迫从高费用池中交易。

根据实际观察,对于稳定币交易对来说,0.05% 费用的池子最活跃。对于其他交易对,当市场波动率高时,高费用池变得更活跃,当波动率低时,低费用池更活跃。

Balancer V2

Balancer 协议收取两种费用:(1)交易手续费,以交易额的一定百分比对交易者收取 (2)出金费用,当 LP 从协议中出金时按提取额度收取

交易手续费可设置为 0.05% 到 1% 之间,由池子创建者设置初始值,并由协议根据多因子来动态调整,因子包括:波动率,交易额,无常损失,流动性总量,流动性挖矿奖励,等等。

出金手续费可由协议设置,但迄今为止未采用。

Curve V2

费用可设置为 0.04% 到 0.4% 之间,可根据目前池内代币比例做动态调整,当前比例距离平衡点越远,费用率越低:

结论

通过多方面的比较,可以看出每个协议都采取的不同的方法来契合 LP 和交易者们的多方面不同需要。

Uniswap V3 给予了 LP 最大的灵活性,几乎所有参数都可以由 LP 自主决定,而团队并没有额外加入更多辅助特性,以保持协议的简单化。而 LP 则需要管理自己的各种风险。

Curve 历史上曾专注于稳定币交易对,此新版本 V2 致力于扩展所涵盖代币的种类。不同于稳定币,非稳定币交易对的市场中价可能会偏移到新的活跃区间,所以此协议可根据内置 Oracle 的喂价调整流动性聚集范围,而无需 LP 自己重部署流动性区间。此种设计对个人投资者更加友好,但限制了开发更复杂的定制化做市策略的可能性。

Balancer V2 在同一流动性池中容纳了多于两种的代币,并且赋予不同的权重,这满足了一部分 LP 差别对待不同种代币风险敞口的需求。通过增加一侧风险波动的方式,来降低另一侧的风险。

引用文献

[1] G. Angeris, A. Evans, T. Chitra; When does the tail wag the dog? Curvature and market making, 2020.

[2] Hayden Adams, Noah Zinsmeister, Moody Salem, River Keefer, and Dan Robinson. Uniswap v3 Core. (2021).

[3] Michael Egorov, Curve Finance (Swiss Stake GmbH). Automatic market-making with dynamic peg (2021)

[4] Fernando Martinelli, Nikolai Mushegian. Balancer Whitepaper (2019)

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

热门版块
快速回复 返回顶部 返回列表