从 A 参数来看,Curve 技术细节和治理理念如下:

'根据 A 参数,Curve 的技术细节和治理理念如下:'

Curve Pool的A参数和市场定价的关系

一年前,我曾经对Uni V3的LP进行了一段时间的玩耍,而在那个时候,有一种说法认为,Curve Tricrypto Pool的LP是一种相当稳健的持续收益的主流资产配置方式,这吸引了我阅读了一番Curve V2的白皮书。通过阅读,我意识到Uni和Curve两者的差异。Uni追求的是尽可能充分的自由市场,而Curve具有一些精确的计划经济的特质。

为了更好地理解Curve V2,我开始深入研究该项目的技术细节。作为曾经的物理学科研人员,Curve的创始人Michael在白皮书中自如地组合着一个个数学公式。作为一个数理素人的读者,我费尽心思地理解其中一些核心但不直观的元素,如Xcp和相关的D、Virtual Price。

在研究过程中,我也意识到,即便是对于专家来说,也非一日之功可以掌握全部奥义,Curve V2是在V1的基础上进行改进和通用化的版本。因此,理解Curve V1能够更清晰地把握其设计的核心。所以我决定重新审视Curve V1,沿着高手当年的道路再次深入研究。

V1的主角是A和D。A参数看似简单,A越大,价格靠近1的流动性越多。然而,当我翻阅当年的记录时(包括Discord、治理论坛和Telegram),围绕A出现了各种问题,既有技术层面的问题,也与协议治理相关,非常丰富。这也是我决定单独写一个关于A参数的文章的原因。其中一部分内容讨论了A作为单个DEX独有参数对整个市场的影响力。管理一个有影响力的参数是一个重要问题,下文进一步探讨了调节A的技术细节。

然而,即使是对于A这样微观细致的主题,我也没有忘记最初的兴趣,也没有忘记对比Uni和Curve气质的初衷。我一直尝试提出一个问题,这些细节背后是否透露了一种根本性的理念差异呢?

A参数和全市场价格的决定关系

在2020年9月4日,Andre Cronje在Curve治理论坛上提出了一个提案,希望将y Pool的A参数从2000调整到1000。这引发了一些讨论,也有一些反对意见,几天后这个提案平静地通过了投票,看起来比起后来很多DeFi项目在一些事项上的广泛大辩论似乎不值一提。

正是由于Curve的数学复杂性,讨论的门槛较高,掩盖了一些问题的重要性,甚至阻碍了对Curve本质的理解。因此,这个系列的文章将聚焦于A参数,回到曾经的事件,尝试简化数学,以展示关于Curve真正重要的一些命题。

A参数是否会影响市场价格呢?让我们来看看AC和反对方的观点。AC认为y Pool的A参数过高(A=2000),导致y Pool提供了大量本不该如此便宜的DAI。他提出了以下论述。而反对的声音主要围绕着两个角度,其中一个角度与yETH Vault不断卖出CRV带来的抛压有关。

我对与价格决定机制相关的另一个角度感兴趣。比如@iamaloop的观点是,不存在Cheap DAI,套利者会使各个市场价格趋于平衡。A参数只会影响Curve y Pool在不同DAI价格点上的深度,而无法决定市场价格。这三位意见的概括就是:DAI的价格由市场供需决定,A参数只能决定流动性在价格1附近的分配情况。

双方的观点互相对峙,引出了一个问题:A参数和市场供需的关系是怎样的?

A参数对供给侧的重要影响

在某些情况下,A参数在供给一侧产生了极为重要的影响,进而是价格决定的最重要变量之一。

在引入供需曲线图之前,我们需要先讨论几个重要的前提假设和基本因素。首先,Curve是LianGuaissive LP模式。我认为相对于主动管理型LP或做市商,作为供给方,LianGuaissive LP更为稳定。其操作频度较低,即在市场波动时,操作相对较少。Curve LP的收益大部分来自于与交易费用无关的CRV代币奖励,在2020年尤为突出。以上两个因素的共同作用使得Curve LP更加稳定。此外,对于某些代币来说,Curve是最大的流动性提供者。以上三点的共同效应使得Curve Pool主导全市场的供给曲线。

A参数将影响供给曲线的形状。A值越高,价格靠近1的曲线越平,并且流动性越充沛。

再来看需求曲线。我们假设在平稳的市场行情下的需求曲线为需求曲线1。当ETH急剧下跌时,关闭CDP的需求急剧增加,市场需要更多的DAI,因此需求曲线将向右移动,即需求曲线2。

观察供需曲线的交点,可以清晰地看到A参数对价格的影响。A值越低,对应的新的价格均衡点越高。如果一个代币的主要流动性阵地在Curve上,那么A参数对价格决定有着极为重要的影响。

A参数或多或少地影响了全市场的价格决定,其程度取决于Curve Pool的代币奖励幅度、市场份额等因素。

这么重要的参数自然会引发一系列问题。A参数的设定机制是什么?是谁来设定参数的数值和选择标准?进一步地,市场是不断变化的,这又引发了一系列动态的问题。A参数何时需要调整?调整A参数对AMM公式有何影响?等等。

调整A参数带来的曲线变化及损益

在2020年4月17日,DAI仍然处于正向脱锚状态,价格在1.02左右。Curve的创始人Michael在推特上发起了一个投票,征求大家是否支持将Compound Pool的A参数从900调整到400。

这次投票只有49人参与,回复者只有一人。8个小时后,Michael将A参数调整为400,又发了一则推特,但没有回复。

在那个时刻,真正参与讨论的人寥寥无几。Michael可能沉浸在一个人的实验中,调试参数、观察和改进。在Telegram上的一些评论中,我能感受到他的兴趣和乐趣。

A参数调整后带来了约0.1%的损失。这篇文章的目的是解释A参数调整后到底意味着什么,并且为什么会带来损失。

先来看一组实际参数设定,进行图示呈现。本文的案例是基于Curve V1 Pool,并根据V1白皮书中的曲线公式进行计算。

黑色线对应的参数是:A=10,D=20,000。当前池子处于黑色点,X_token和Y_token的数量分别为2500和18105,价格约为1X_token = 1.36 Y_token。

将A参数降为3后,曲线变成了红色线。红色曲线的参数为:A=3,D=19,022。

通过比较黑色和红色曲线,可以明显看出黑色曲线更加趋于直线,这也是A参数的核心作用,A越大,则价格接近1的流动性越多。而红色曲线的A(3)相对于黑色曲线的A(10)较低,因此远离价格1的区间的流动性更多。

在那个推特投票的时刻,DAI有些脱锚。如果使用红色曲线这样低的A值,就能够提供更多的流动性,这也是Michael调整A参数的原因,他希望池子能够捕获更多的手续费。

我们再来看一下A调整带来的变化。A调整后,两种Token的数量并没有发生变化,但D值发生了变化。此外,从图中还可以看出,当前点的切线斜率和曲线形状发生了变化。

接下来,我们从订单簿的视角来看A值调整后的变化。每个池子可以从订单簿的角度去理解,根据A和D参数的不同,池子在所有价格点上的挂单数量分布也不同,并且所有的挂单是联动的存在。

在前述的示例中,A从10降为3后,可以理解为所有挂单都进行了整体性的调整,从黑色的一组挂单集合变成了红色的挂单集合。

接下来,我们可以通过最直接的方式计算A调整带来的损益。将两种Token的价值折算成单一Token的数量,二维转为一维,然后对比A调整前后的总价值。这也是Michael提到的“With Impermanent Loss”。

A调整后会带来一些损失。之前已经提到,A调整后相当于按照高于市场价的价格挂了很多错位的买单,这些买单被套利者吃掉,这必然会带来损失。从曲线图上看会更加清晰。

除了瞬时损失,A调整还可能带来长期损益。这取决于价格发展的方向,是朝着脱锚的方向还是回归锚定。在代币价格接近1的情况下,无需过多考虑无常的影响,因此可以直接用D值的变化来近似评估损益。

Curve引入了D值这一度量衡,它剔除了无常的影响,简化了计算,而在大部分情况下也是适用的。D值表示当池子价格为1时,池子内两种Token的总数量。D值的变化能够反映A调整带来的损益。

A参数的一次性大幅调整具有突兀感,甚至有瑕疵感。在Compound Pool A参数调整完成的推文下,Michael还跟帖评论称A参数的调整方式需要修正。后续版本的池子,A参数的调整改成了一段时间渐变完成的模式。

A参数的一次性调整方式不仅仅是瑕疵,还存在一个脆弱点。幸运的是,这个脆弱点被一个白帽发现,并及时引起了注意。后续会单独写一篇关于这个攻击方法的文章。

以上就是关于Curve Pool的A参数以及其和市场定价的关系,以及A参数调整带来的曲线变化和损益的讨论。A参数对价格决定有着重要的影响,其调整带来的变化将直接影响到池子的总价值。同时,A参数的调整方式也需要细致考虑,以避免可能的损失。

(本文部分内容参考自Curve的白皮书,作者为XXX)