撰文:MellowProtocol编译:Blake
大家好,客套话就不说了,让我们谈谈UniswapV3的数学逻辑吧!
我们将深入探讨UniswapV3中流动性供应的工作原理,以及如何调整两种代币的投资组合,以便您产生最大的LP头寸,同时将IL降至最低。接下来会有很多的公式和数字。
UniswapV2回顾:交易者的角度
UniswapV2是一个自动化的做市商,它允许:
交易者将一种资产换成另一种资产;
流动性提供者(LP)提供流动性并赚取交易费用。
每个池有两种代币:X和Y。如果池内有Xp?个X代币和Yp?的Y代币,则池流动性L定义为:
当前池中代币的比例定义了当前的交换价格p:
如果交易者想要交换y个Y代币,他们将y个代币存入池中并收到x个X代币。x由池使用以下等式决定:
这里的?是池费。对于UniV2来说,它的数值是0.3%。
现在假设当?=0时,让我们看看如果当前价格p=1,池储备Xp=1,Yp=1,并且交易者想要交换y=1个单位的Y代币会发生什么。
图1:UniswapV2交易者的角度
交易者将收回X的x=0.5代币。池储备和价格将更新为Xp?=0.5,Yp?=2,p=4。
我们预计当前价格p=1时x=1,但实际x金额会受到损失,我们称之为滑点:
好消息是sl→0,因为池流动性L增加或交换量减少,即对于足够小的交换量,您以价格p交换的费用较小。
UniswapV2回顾:流动性提供者的角度
现在让我们看看如果p=4,池准备金Xp?=0.5,Yp?=2,L=1并且流动性提供者想要放置x=0.25的代币X和y=1的代币Y会发生什么。
图2:UniswapV2流动性提供者的角度
在这种情况下,池的新储备将为Xp?=0.75、Yp?=3和L2=Xp·Yp?=2.25,因此L=1.5并且流动性提供者以UniV2lp代币的形式收到ΔL=0.5的流动性。现在,在每笔交易中,流动性提供者将收到ΔL/L=1/3份额的费用。
在这个例子中,我们故意使用x=0.25和y=1作为流动性提供者的投资,因此y/x=4=p。
如果y/x≠p会发生什么?在这种情况下,一部分代币Δx或Δy会被返还给流动性提供者,使得剩余比率(y-Δy)/x=p或y/(x-Δx)=p。如果流动性提供者想要充分利用他们的代币并获得最大的流动性,他们首先必须交易他们的代币,以便y/x=p然后将它们放入池中。
对于UniV2,调整您的代币组合以获得最大流动性非常简单。UniV3会怎么样呢?事实证明这越来越复杂。
UniswapV3:单仓
2021年5月,Uniswap团队推出了V3。在UniV3上,您可以将流动性置于任何价格区间。只要价格在范围内,您就有流动性L并赚取费用。当价格超出范围时,您不会赚取任何费用,直到价格回到范围内。
让我们看看它是如何运作的。首先,让我们考虑只有一个持仓且价格区间为=的矿池。当前池准备金为Xp?=Yp?=0.5,价格为p=1。在这种情况下,随着交换发生且价格在变动,我们观察到以下池行为:
图3:UniswapV3单仓
这里绿色曲线是用于交换的实际代币储备,红色曲线是虚拟流动性曲线,模拟用户在UniV2上进行交换。
只要价格在范围内,池的行为就与拥有红色流动性曲线的UniV2池完全相同。当价格越界时,虚拟流动性降至零,实际流动性集中在X或Y代币中,不用于交换。
UniswapV3:多仓
现在让我们看看如果在上有两个流动性投资x?,y?和在上有x?,y?会发生什么。这些投资中的每一个都意味着虚拟流动性L?和L?
图4:UniswapV3两个仓位
可以看出,当两个区间都覆盖价格时,两个实际储备都被使用,池虚拟流动性等于流动性总和。当只有一个区间覆盖价格时——仅使用其流动性。当价格在两个区间之外时,池流动性为零。
这为UniV3提供了一个独特的特点——分段流动性函数。当价格沿着虚拟曲线移动时,流动性价值在某些价格点上变化了一些ΔL。您可以在图3中看到在价格p??和p??处发生这种跳跃。
刻度和刻度间距
UniswapV3的实际情况比上图中显示的要困难一些。在真正的UniV3中,您不能将流动性置于任意价格区间。取而代之的是,所谓的刻度在价格范围内形成了一个离散的网格。刻度由公式定义:
对于每个池,还有一个刻度间隔的概念。刻度间距是刻度之上的另一个网格,它限制了您可以放置流动性的刻度。例如,对于0.3%-费用的池刻度间隔是60,这样你可以只在每个60的刻度上放置流动性,例如,0,-60,60,120,-120,...下图显示了刻度间距刻度和刻度
图5:刻度和刻度间距
因为您的流动性价格区间界限只能是刻度间距刻度,所以任何空间刻度间隔内的流动性都是恒定的,并且只有在价格穿过刻度间距刻度时才会改变。
因此,我们有一个分段流动性函数,其中可能在刻度间隔刻度处发生跳跃。
仓位的流动性价值
让我们看看流动性L是如何计算的,给定初始代币x和y、价格区间和当前价格p。
从这些等式中可以看出,如果x和y代币的比例不正确,则一些代币将返回给流动性提供者。这与我们在UniV2中观察到的行为类似。
但是对于UniV3,它更复杂,因为我们有分段流动性函数,在刻度间隔刻度处跳跃。在下一章中,我们将展示如何在UniV3上以最有效的方式放置代币。
有效的流动性提供
如果我们有一个由x个代币X和y个代币Y组成的投资组合,并且我们想为价格范围提供流动性,我们应该交换多少代币X或Y以从中获得最大的流动性?
为了回答这个问题,让我们用R=y/x来表示——我们投资组合中代币的比率和r??(p)——最佳代币比率,使得Lx=Ly。从Lx和Ly的公式我们可以得出:
所以我们的目标是使R=r??。
然而,这项任务比仅仅将x和y对齐到指定的比率r??稍微复杂一些。当我们开始将x交换为y或反之亦然时,池价格p开始变化,r??也是如此。这种行为如下图所示:
图6:将R对齐到r??
另一层复杂的是,随着价格p的变化以及跨越分时间隔分时池流动性L也在变化!为了解决这个问题,让我们首先了解在流动性L不变的情况下,当我们用代币Y交换代币X时,比率R如何演变。
从方程L2=xy和p=y/x很容易推导出:
因此,如果我们用Y交换X,从Y中减去费用,交换后的价格结算为p?(p?>p?):
如果是用X交换Y,则p?<p?,我们有:
下一个问题是:
R在什么比率时会穿过刻度间隔以及产生流动性变化?
如果我们将R+表示为穿越上刻度的比率,R-表示下刻度的比率,p?是初始价格,p-、p+是各自在刻度上对应的价格,L为刻度间隔的当前流动性,然后我们得到:
最后,我们已准备好解决问题。
首先,我们需要回答2个问题:
R>r??(p?)吗?如果是,我们需要将Y交换为X,否则的话将X交换为Y。
当我们交换时——矿池价格会跨越一个刻度间隔刻度吗?如果否-我们可以立即解决问题。如果是-我们需要调整我们的值,就像我们一直交换到刻度间隔,然后在新的流动性上重复我们的算法。
这些问题的答案将我们带到了4个不同的案例中:
在一个刻度间隔内用Y交换X:R>r??(p?),R+≤r??(p+)
在一个刻度间隔内用X交换Y:R<r??(p?),R-≥r??(p-)
在不同的刻度间隔中用Y交换X:R>r??(p?),R+>r??(p+)
在不同的刻度间隔中用X交换Y:R<r??(p?),R-<r??(p-)
情况1:在一个刻度间隔内用Y交换X:R>r??(p?),R+≤r??(p+)
图7:在一个刻度间隔内将Y交换为X。当我们从Y交换到X时,价格增加到p?,R减少到R+,而r??增加到r??+。由于最初R>r??且R+≤r??+,因此可以保证R=r在刻度间隔内。
如果我们用y交换x并且交换后的价格稳定在p?,我们只需要确保Ryx(p?)=r??(p?):
如果我们假设z=√p?并重新排列方程的项,我们将得到一个二次方程:
因此我们可以求解它并找到p?:
要交换的代币Y的数量是:
情况2:在一个刻度间隔内用X交换Y:R<r??(p?),R-≥r??(p-)
图8:在一个刻度间隔内用X交换Y。当我们从X交换到Y时,价格下降到p?,R增长到R-,而r??下降到r??-。由于最初R<r??并且R-≥r??-可以保证R=r在刻度间隔内。
这种情况与情况1非常相似,除了我们是将X交换为Y,因此我们需要确保Rxy(p?)=r??(p?):
与情况1类似,我们可以得到:
要交换的代币X的数量是:
情况3:在不同的刻度间隔中用Y交换X:R>r??(p?),R+>r??(p+)
图9:在不同的刻度间隔中将Y交换为X。当我们从Y交换到X时,价格会增长到p2,然后增长到p?,R减少到R+,而r??增加到r??+。由于最初R>r??和R+>r??+,因此当我们交换到R=r??时,可以保证价格将跨越刻度间距刻度
在这种情况下,我们将Y交换为X,直到R=R+并且p=p+并且我们处于具有新流动性的新刻度间隔中。我们记得我们交换了多少个Y标记,以便稍后将它们添加到最终数字中。然后我们重新开始算法并重复,直到我们遇到案例1。那我们就重新定义:
情况4:在不同的刻度间隔中用X交换Y:R<r??(p?),R-<r??(p-)
图10:在不同的刻度间隔中将X交换为Y。当我们从X交换到Y时,价格下降到p?然后到p?,R增加到R-,而r??减少到r??-。由于最初R<r??和R-<r??-可以保证在我们交换到R=r??时价格将跨越刻度间距刻度
与情况3完全相似,除了我们将X交换为Y,直到R=R-并重复直到我们遇到情况2。我们重新定义:
结论
在UniV3中以正确的比例提供流动性是一项非常复杂的任务。您需要考虑很多因素,例如刻度间隔内的不同流动性值。上面的算法描述了如何使用池数据来计算需要交换的代币数量以获得最高的流动性。
数字图表可在此处获得:
https://www.desmos.com/calculator/rqbrnapxbj
https://www.desmos.com/calculator/ys7kcfgjxe
https://www.desmos.com/calculator/ehdwkbtu7z
https://www.desmos.com/calculator/huzzwffze9
https://www.desmos.com/calculator/t9u9x8xgcy
在以后的文章中,我们计划讨论UniV3的其他有趣方面,如无常损失、多头投资组合、策略风险等。
MellowProtocol正在探索AMM的流动性提供和做市空间。您还可以在?此处查看我们的初步研究论文。Mellow的目标是建立一个强大的工具生态系统,以消除市场低效率并为用户创造成果。
我们不仅将其视为一种产品,而且将其视为复杂数学可以为DeFi领域带来的演变。与Uniswap和Curve创新用户交易体验的方式类似,我们相信LP优化也在推动tradfi的可能性。
在接下来的文章中,我们将讨论有关如何实施适当的再平衡策略的更多想法,并将继续讨论DeFi中更广泛的主题。
?
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。