为何流动性池的两种通证总是初始价值相同?Defi无常损失分析
2020年夏天,Defi集中爆发,Uniswap,Compound,Sushi,YFI等项目纷纷展现出强劲的成长能力,将来自各方的目光牢牢吸引。其中自动做市与以往的中心化交易所匹配规则完全不同,不需要买方和卖方分别报价,而是通过简单而又精巧的模型设计,实现算法自动确定交易价格。
不过,虽然这种交易方式非常简便,但却也存在自身的问题,而“无常损失”就是其中非常重要的一个。无常损失是指由于自动做市模式无法承担价格发现功能,从而在通证价格发生变化时,会出现套利的空间。套利者利用流动性池里通证价格和中心化交易所之间通证价格的差异进行套利,而这部分套利的利润则会成为流动性提供者(LP)的损失,亦即无常损失。
如上所述,无常损失最终的承受者是LP,而LP又是Defi流动性的来源和生存之本。因此,如何避免或减轻无常损失将是重中之重。本篇文章中,我们仅从数学角度,探讨在最常用的xy=k模型下,将流动性池的两种通证的初始价值设置为相同,是如何能够降低无常损失的空间的。
假设一个交易对中的两个通证分别为A和B,在初始状态,流动性池中共有A通证x个,B通证y个,其价格(法币本位)分别为px与py。此时,B的价格在外部出现了上涨,新的价格为py’,此时流动池中的py小于池外的py’,出现了套利空间,套利者会在流动池中用A购买低价的B。
假设某套利者向池子中注入一定量的A,使得A的数量从x变为x’,并从池子中获得一定量的B。那么在这次交易过程中,该套利者获得了多少利润?也就是产生的无常损失是多少?
设流动性的初始总价值为TV,则TV=x*px+y*py
当B的价格上涨,TV’=x*px+y*py’
当套利者完成交易,TV’’=x’*px+y’*py’
则无常损失TL=TV’-TV’’
且因为xy=k=x’y’,所以y’=xy/x’
因此TL=(x*px+y*py’)-(x’*px+py’*xy/x’)
=(y-xy/x’)py’-(x’-x)px
两边同时乘以x’,那么
x’TL=(x’y-xy)py’-x’(x’-x)px
两边再同时除以(x’-x),则
x’TL/(x’-x)=y*py’-x’*px
因此TL=(y*py’-x’*px)(x’-x)/x’
=(1-x/x’)(y*py’-x’*px)
由此我们得到最终公式:
TL=(1-x/x’)(y*py’-x’*px)
由于x一定小于x’,因此(1-x/x’)一定大于0。故只要(y*py’-x’*px)大于0,就会产生无常损失。
由此我们可以看出,从大体上来讲,A和B之间的价值差距越大,无常损失的空间越大。这也就是为什么流动池的设计都要设计成A和B之间的价值相等,就是为了尽量避免无常损失;同时,这也是为什么带稳定币的交易对无常损失小的原因——稳定币的价格波动小,因而会产生的无常损失的空间也会更小。
因此,这就是流动性池的初始状态会安排成两种通证的价值相等的原因。