DeFi挖矿入门(三)| 无常损失与滑点详解

2023-03-06 03:30发布

Trade your own risk.


风险提示:本文创作仅出于个人对DeFi爱好及分享,不代表及构成任何投资理财及资讯建议,入市有风险,投资需谨慎,风险自担。




无常损失 及 滑点为参与挖矿前的“必考”知识点,本文将基于之前发布的《DeFi入门必读—DEX运行逻辑》对其作出进一步介绍。




无常损失


1.定义


DeFi挖矿的形式主要有2种:1)单币白嫖 2)流动性挖矿


1)单币白嫖


早期DeFi项目的单币挖矿,以白嫖为主,本质上类似换个方式发空投,因为参与者只需要将手里持有的现货直接质押即可,随存随取,和屯现货没有任何区别,因此也叫单币白嫖,无常损失与单币挖矿没有任何关系。


这样做的好处就是,项目方可同时收获热度、流量、TVL(锁仓额)、持币地址(项目代币)及代币流通量(挖出来的币交易套现),一举多得;DeFi发展至今又出现了很多单币无损挖矿的机枪池类项目,同样也是无损挖矿,且收益率更高(机枪池项目的介绍我们后面再出文章做解释)




2)流动性挖矿


流动性挖矿即LP挖矿,也常叫二池,收益比一池单币高很多,但同时也伴随着更高的风险;


因提供流动性需要将两种代币质押到LP池子,如果两个代币的价格发生波动,根据恒定乘积公式 X*Y=K,质押的代币数量会发生变化,按U本位计价在比价波动前后,会承担额外的损失,这部分额外损失就是我们常说的无常损失。




本质上,无常损失是提供流动性时发生的资金暂时损失/非永久性损失。之所以叫做非永久性损失,是因为只要在AMM中的代币相对价格恢复到其初始状态,那么,该损失就消失了,不撤走质押的流动性,还是有机会回到初始状态,这过程中还能吃到挖矿的收益,当然在币价大幅波动的情况下则可能挖矿收益无法对冲掉无常损失,从而导致亏损。




2.无常损失到底会亏多少?


对无常损失的理解,其实也很简单,当你成为一个做市商的时候,相当于是和所有交易者做一个对手盘,如果所有交易者的盈亏加在一起还是盈利状态,那这部分的利润就来自于每个做市商的无常损失。


同时无常损失不是永久性的,价格经历短暂下跌后又重新恢复,收益也会修正。



下面引用一下其他大佬讲解的实例来看到底会损失多少


以Uniswap的DAI / ETH池子的流动性挖矿为例(DAI同USDT一样,为Maker Dao的抵押借贷出的稳定币,锚定1美元)


假设我们作为流动性提供者向DAI / ETH Uniswap 50/50池提供流动性。向50/50池提供流动性,须向池提供两个等值的token。(即提供DAI/ETH时,你提供两个币种流动性的价值(即价格*数量)需要相同。




假设此时DAI=1 USD, ETH=500 USD, 你需要提供20个ETH,和10000个DAI。







提供流动性后,此时,两个token的价值是相同的。




假设,ETH的价格在外部的交易所中开始上涨。中心化交易所的ETH价格从500涨到了550美元。于是其他市场参与者(称为套利者)就开始工作了。套利者注意到中心化交易所和Uniswap之间的价格差异,并将其视为套利机会。




随着套利者从池中购走更多的ETH(即取走ETH流动性),ETH的价格就变得越高。套利者不断在Uniswap上购买更便宜的ETH,直到交易所之间不再存在价格差异为止。




使用恒定乘积公式,我们可以看到Uniswap ETH价格将达到550美元的时候,池中的情况会被套利者变为有10488.09个DAI和19.07 个ETH。




也就是说套利者花费488.09个 DAI买走了0.93 ETH,以实现Uniswap和Coinbase的ETH价格之间的平衡。此时,套利者的成本是1 ETH = 524.83 DAI 。套利者购买的ETH可以在外部的中心化交易所以DAI或任何其他基于美元的稳定币即时出售,价格为550美元。于是套利者从中赚取了约25美元(减去手续费)。





让我们看看这如何影响我们的流动资金提供者(LP)。




我们可以看到,如果流动性提供者一开始不提供流动性,而是把ETH和DAI放在钱包里面,他们将拥有$ 23.41的收益。这23.41美元基本上是LP的无常损失,如果此刻选择撤走流动性,将造成实际损失,如果选择继续质押挖矿,则当币价回调到初始价值,则损失随机消失,即交割即损失。




整个过程中,初始投入到流动性挖矿的金本位为20000U,ETH与USDT各占50%;ETH币价上涨了10%,根据上面的计算,提供的LP市值同步变成了20976.59U,涨幅4.88%,如果初始资产ETH与USDT没有质押到池子,金本位涨幅则为5%,无常损失23.41即为(23.41/20000)0.11%。




这里给大家推荐一个计算无常损失的工具,可以直接计算实际的金本位损失


无常损失计算器:https://yieldfarmingtools.com/tools


截图同上述示例,ETH相对DAI涨幅10%,无常损失比例0.11%,日常使用时,根据计算所得比例乘以初始投入资金即可





再次提醒:无常损失的定义是LP代币市值在正常涨跌波动基础上的额外损失,简单理解,就是涨了少赚的钱 和 跌了多亏的钱,币价波动造成LP整体的大幅波动并非无常损失。一般在币价剧烈波动时,无常损失的比例才会相对明显,下图显示在419%(4.19倍)以上时,无常损失高达26.39%。





当然了,上述情况没有包含流动性提供者(LP)在提供流动性期间所赚取的手续费(0.4%每笔交易),以及流动性挖矿的收益(不是每一个流动性提供者都有此收益,而且流动性挖矿的收益是随时变化的)。




也就是说,即使你参加的流动性挖矿,可能展示出来极高的收益,但是如果挖矿的资产价格突然暴跌,并永远回不到你提供流动性时的水平,你的无常损失就会变成永久损失。而且你的永久损失,可能大于你的挖矿收益。




一般情况下,价格暴跌的资产就是你挖矿所得的资产,一旦其价格暴跌,挖矿收益率也会暴跌,同时无常损失会剧增。这会引发其他流动性提供者停止提供流动性,一旦流动性撤走,资产的价格就更容易继续暴跌。这就是所谓的“死亡螺旋”,或者说“矿难”。




滑点


1.滑点产生的原因:


基于之前AMM的介绍,我们都知道DEX的交易模式并非订单簿的一次性成交,AMM的核心公式X*Y=K,实际的交易中因扣除手续费,实际的K值并非恒定,但幅度非常小,为了方便计算滑点,我们这里暂且不计手续费的影响,来看下整体的交易过程:


假设预期买入 Δx 个 ALT



买入及卖出会改变池内 代币的数量,买入 ALT 会让池中 ALT 的数量减少;付出 USD 会让池中的 USD 数量增加。无论如何改变 x 或 y,池内 tokens 数量必须满足前述等式,即一个简单的反比例函数,负象限暂且省略,绘制如下图:


在如图可见,给定 Δx 就自动决定 Δy,反之亦然。所以只要有交易发生,该点就会在蓝线上移动。


成交过程为X与Y的兑换,则实际成交价(单位:USD/ALT):



例如:买 50 ALT (Δx) 花了 100 USD (Δy),成交价格就是 100/50 = 2 USD/ALT由图可观察出,成交价格即为两点相连之直线斜率(取绝对值)。



不同的买入量 Δx 会对应不同的 Δy,而产生不一样的价格。一次买入越多,成交价格就越高(斜线越斜),此即为滑价的成因,当池子内X与Y的数量足够大或单笔交易足够小,斜率变化的绝对值即可忽略不计,损失就越小。




2.利用滑点倒推粗算TVL


一般池子内的锁仓量(TVL)也就是池子深度代表了项目的热度及安全性,是非常重要的数字指标,深度越小,项目越危险,实际兑换过程中,根据滑点可以迅速计算出池子TVL,作为我们投资的辅助依据。




如果LP过小,这种投资机会风险就很高。我们如果遇到每次交易都去查询相关交易对的流动性池子信息,会非常繁琐。




举例1:



例:以体量不大的币种Whale作为例子。Whale-USDT,然后将USDT这里随意输入一个数字,比如10000USDT,这时候滑点是1.04%,这时候可以用计算器这么计算:10000÷1.04%*2=192.3万美金。




但是这么算还需要计算器,那么,直接手动调整下USDT的数字,直到滑点显示为1%,如下图所示:



这里直接口算:9600*200=192万美金。




可以看到兑换路径为Whale先换成ETH,ETH再换成USDT,不过不影响,因为ETH和USDT之间的滑点非常小,不影响最终结果,我们来看一下实际流动性池子的大小:



https://info.uniswap.org/pair/0x4fda00d490c1c05ff15d7313d1cebe9c711e434b


和口算数字192万美金非常一致。这种计算方法是基于AMM自动化做市商的基本原理推算的。


简单调整兑换金额,使滑点靠近1%,然后这个兑换金额的200倍就是整个流动性池的大小。


例子2:



初次输入还是10000USDT,这时候可以计算器算10000÷1.2%*2=166万美金,但是更好更准确的方法还是再花三秒钟试验几个数字,现在滑点大于1%改成8000,还是打了改成7000,然后7200的时候看到滑点0.99%,接近1%了。



口算:7200美元的200倍,等于14400美元,这就是锁仓量。



口算是144万,实际是147万,相差无几。你会发现上文用1.2%滑点用计算器计算的166万,反而没有口算的准确,原因是滑点小的时候相对来说这种计算方式误差小一些,而滑点过小的时候如0.01%这种,后面很多位小数省略了,也会不准。综合来看,就是调整兑换金额,接近1%滑点的时候,去乘以200口算得出流动性池子大小最为方便。




注:以上数据取自网络,非当前时间点价格,重点看计算方法,非常实用




总结:


用三秒钟时间简单调整兑换金额(USDT),使滑点逼近1%,然后这个兑换金额的200倍就是整个流动性池的大小。


例如1000美金,滑点正好对应1%(1.01%或者0.99%也可以),那么该标的流动性池的大小就是20万美金。


这种方法可以用极为快速的方法,判断自己所兑换的加密资产的流动性,如果池子很小10万美金都不到,那么风险极高,尤其是当前土狗横飞局面,一定要擦亮眼镜,不要轻易下注。


同时,如果坚持要投资一个加密资产,一次性兑换的时候建议不要超过1%(最多3%),不然即使价格不变,用USDT或者ETH等常用代币来回兑换就已经承受不小的损失。