写给女朋友的 DeFi 笔记:无常损失

你会遇见一个人,让你不再忍心虚度余生。你会吗?你会你妈,你不会的,别做梦了。你只会遇到一个爱斤斤计较,一般工作普通薪酬,40 之后婚内出轨,逢年过节以抢红包为乐,做爱做到一半你睡着了,电视里还在放着快乐大本营,六年不管孩子家庭作业突然天天去学校接他只为和孩子新学期漂亮班主任上床的中年张大锤。而这一切都是因为你当初不会手推无常损失,被 MEME Coin 🈹完只怨自己入场已晚。

又或者,多年以后梦魇中惊醒的一刻才发现,原来一切的鸿沟还是认知。

DeFi 秋凉,得意时多做事,需看大力如疯,失意时多读书,大力如山是书。

——德妃·鲁迅

作者:Kay,没有故事的男同学。

这是《写给女朋友的 DeFi 笔记》系列的第 1 篇文章,这个系列致力于用最通俗易懂的语言提供一些关于 DeFi 的常识,包括不限于无常损失 / AMM 这样的常规概念,又或者关于新项目原理、设计上的分析,力争让(假想出的、可能)完全不了解 DeFi 的女朋友也能看懂。但愿起码能写 30 篇。

Disclaimer

  • 笔者目前没有女朋友
  • 笔者热爱女性
  • 笔者极度反对类似「男孩天生就该学理科,女生天然文科更好」这类毫无科学依据的性别歧视

定义

憨憨翻译

impermanent loss,中文一般译作无常损失,这是一个类似「鲁棒性」一样糟糕的翻译,完全没有办法「望文生义」。

Robustness 直译成「健壮性」不好么,翻译成鲁棒性,emmm,对方不想跟你说话并丢给你一个赫鲁晓夫

image-20201011224041052.png

impermanent loss 直译成「非永久损失」不好么,「无常」在中文语境里除了佛教用语,似乎也看不出什么了。

还以为像黑白无常一样可怕呢。

哦,无常损失可以带着你的钱一把归零,还真可以像黑白无常一样可怕

两个预备知识

了解无常损失之前,首先要了解其他两件事:

  1. 在 Uniswap 做(kui)市(qian)过的朋友都知道,添加流动性的时候,两种 token 以当时的市价基本是等值的,假如瞬时市价 1ETH=400USDT,添加流动性只能按这个比例来添加:
  • 1ETH 配 400USDT
  • 1.5ETH 配 600 USDT
  • 2ETH 配 800USDT
  • ……
  1. 这里不谈 Uniswap,即使对于传统 CEX,做市也类似于网格交易,币跌的时候加仓、涨的时候减仓,行话讲叫赚 spread,说人话就是价格波动不大就赚钱,价格波动大就很有可能亏钱。简而言之,做市是交易,有可能亏的,不是无风险套利。

结合以上两点,聪明的女朋友(误 已经可以得出结论了,去 Uniswap 做市,本质上就是把市价 1:1 的两种币给 Uniswap 这样一个黑箱(其实是白箱,后面会说)交易机器人来跑一种交易策略。

少赚就是亏

这个时候就有了一个比较,如果这笔钱不拿去做市呢?那么多币圈大佬高呼囤 BTC / ETH,教练我也想囤币,要单纯美好的小幸福。

是的,无常损失的定义就是这样,即,拿去做市比直接囤币少赚的钱的比例(少赚就是亏),行话讲叫机会成本——如果你拿去做市(做交易),你就失去了本来囤币安安稳稳赚钱的可能

无常损失的定义,先看一眼:

$$Impermanent\ Loss = (做市余额 - 囤币余额) / 囤币余额 = 做市余额 / 囤币余额 - 1$$

那既然 AMM 做市是交易,囤币也是交易,这还能事先分出好坏优劣?

还真能。

先直接给结论,这是 50:50 池的无常损失曲线,横轴是价格变化,竖轴是无常损失:

image-20201011230958380.png

可以看到,图上无常损失一直为负。

无常损失一直为负。

一直为负。

……

换言之,只要开始做市,就会比不做市只囤币少赚。

啊不,不仅仅是少赚,如果币价跌了,做市还会比囤币亏的更多。

impermanent,所谓「无常」/「非永久」的意思就是,如果币价有一天回到做市开始的币价,就相比囤币不亏钱……

image-20201011231700324.png

谁来做亏本生意

看到这里,有没有内心千万匹草泥马奔腾了吗,这样的赔本生意为什么会有人去做???

哦,虽然这里是肯定比囤币少赚了,但生活处处都是 trade-off,就像程序员都喜欢用空间换时间一样,虽然在币价波动上是肯定比囤币少赚了,其实有一点别的收入,在 Uniswap 做市可以获得每笔 0.3% 的交易手续费。

换句话说,在某段时间内,如果 交易手续费 > 无常损失,是有可能比单纯囤币赚钱的。

个么,大家都赚钱了吗?

截止今年 5 月,过去一年里 LINK 翻了七倍,而如果一年前拿去 Uniswap 做市呢?

波澜壮阔的大行情之下,ETH 本位居然还亏了 -52.67%

……

image-20201011234032909.png

还有可能赚钱吗

我也很绝望啊,但,还是有的。

image-20201011230958380.png

回看无常损失图表,可以观察到曲线在 1 的邻域无常损失是相对平缓的,换言之,和中心化交易所做市一样,价格波动不大就有可能赚钱,所以有三个常规思路

  • 选择价格相关性高的币种,交易对价格波动一般会相对小,比如 USDT/USDC,或者 WBTC/ETH
  • 期待长期 Uniswap 整体交易量显著增加,做时间的朋友(不看就是没无常 doge)
  • 复盘之前流动性挖矿的玩法里,相比直接开冲 Pool2,风险其实和直接梭哈买币是差不多的,甚至可能 Risk-Adjusted 之后的收益,买币一般还会更高一些
image-20201012001815097.png

手推无常损失

科普书里每多一个公式,就会减少 50% 的销量。

——霍金

所以这段放在文章后一个部分,先给结论再手推。不想看的旁友可以直接到文下点个赞啦~

手推&解释

  1. NS为 non-stablecoin,非稳定币数量,比如 ETH,S 为稳定币数量,比如 DAI 或者 USDT
  2. NS*S是一个固定常数,这是 AMM 的机制,即使完全不了解 AMM 机制的朋友,应该也是对固定乘积有所耳闻的(AMM 后面有机会会另外写文)
  3. Price = S/NS,这太显然了,S/NS可以换成USDT/ETH,如果再加个标价,400 USDT/ETH,是不是和 CEX 世界看到的一模一样?
  4. ② 只是等式两边调换了位置
  5. ①/②,消去了 S 数量,只用 Pricek 即可求得非稳定币数量
  6. 类似的,结合 ① 和 ③ 可以得到只用 Pricek 求得的非稳定币数量
  7. 其实 SNS 这样区分有没有稳定币并不重要,换成 WBTC/ETH 或者 LINK/ETH 这样的两种非稳定币也是一样的,只是用 S/NS 能够给大家一个常规观感的形如 400 USDT/ETH 的价格,当然也完全可以是另一个 Price 比如是 NS/S,这样就变成了 0.0025 ETH/USDT,生活中相对少这么用而已
$$NS * S = k ①\\ Price = S / NS \\ =>S/NS=Price ②\\ ①/②\\ =>NS^2=k/Price\\ =>NS = \sqrt {k/Price}③\\ ① \& ③ \\ =>S=\sqrt {k*Price}$$

样例

好了,现在我们有公式了,代入数据实际计算一下:

假设用户向 Uniswap 流动池注入初始流动性 ETH 100 个、DAI 10000 个,换言之就是 NS = 100S = 10000,此时 Price = S / NS = 100 DAI / ETH,固定乘积 k = S * NS = 100 * 10000 = 1000000

现在假设外部市场拉盘了,ETH 涨到了 120DAI 一个,由于发生价格差,这时套利者开始工作,套利者通过搬砖将流动池中的价格维持与外部是市场一致,这时流动池中最新的数量为

$$NS' = \sqrt {k/Price'} = \sqrt {1000000/120} = 91.28709292\\ S' = \sqrt {k*Price'} = \sqrt {1000000*120} = 10954.45115$$

所以,做市的余额是:

$$Balance1 = NS' * Price' + S' = 91.28709292*120 + 10954.45115 = 21908.9023$$

如果当初不做市,直接囤币的余额是:

$$Balance0 = NS * Price' + S = 100*120 + 10000 = 22000$$

回顾,无常损失的定义是:

$$Impermanent\ Loss = (做市余额 - 囤币余额) / 囤币余额 = 做市余额 / 囤币余额 - 1$$

代入:

$$Impermanent\ Loss = 做市余额 / 囤币余额 - 1 \\ = Balance1/Balance0 -1 \\ = 21908.9023/22000-1\\ =-0.4140805\%$$

可以看出价格从 100 变成 120 后,相比不做市,损失了 0.4% 左右,即无常损失,如果流动池中的币价回到 100 时,我们是没有损失的,这是为什么叫 impermanent loss 无常损失的原因。

综上可以发现,在整个语境下面,只需要知道价格变化,做市份额的变化行为是固定的,这也是上文说 Uniswap 是「白箱」而不是「黑箱」的原因。

另一个公式

其实对于 50:50 池,有一个更方便的公式,只需要用到价格变化比例,但推导过程相对复杂(用上面的前置结论足够),有兴趣的可以自行推导,这里的 priceRatio 比如跌 90% 就是 0.1,不变就是 1,翻倍就是 2,依此类推:

$$Impermanent\ Loss = 2*\sqrt {priceRatio}/(1+priceRatio)-1$$

计算器

推完啦!好累,下次还是用 CMC 的计算器吧233需要注意的是,计算器 Price change 例如跌 90% 要输入 -90% (手动 doge

测试一下刚才的数据,ETH100DAI 涨到 120DAIpriceChange = 20%,嗯哼,果然没算错:

Jietu20201012-093959@2x.jpg

参考:

[1] https://medium.com/@pintail/understanding-uniswap-returns-cc593f3499ef

[2] https://medium.com/balancer-protocol/calculating-value-impermanent-loss-and-slippage-for-balancer-pools-4371a21f1a86

[3] https://cryptocam.tech/2020/08/06/calculating-uniswap-fees/


Kay

20201012