在DeFi生态中,流动性挖矿是吸引用户参与的核心玩法之一,而“无常损失”(Impermanent Loss)则是流动性提供者(LP)最需要警惕的风险之一,很多新手在参与AMM类协议(如Uniswap、PancakeSwap)的流动性挖矿时,常因忽略无常损失而低估实际收益,本文将从原理出发,详细拆解DeFi无常损失的计算方法,帮你快速估算潜在风险。

先懂AMM:无常损失的根源
要理解无常损失,首先得明白AMM自动做市商的运作规则,以Uniswap V2这类恒定乘积模型为例,两种代币(如ETH和USDT)的储备量满足核心公式:
*xy = k**
x是代币A的储备量,y是代币B的储备量,k是恒定值(当价格变动时,储备量会自动调整,保证乘积不变)。
无常损失的本质是:当代币价格偏离初始水平时,LP将资产存入AMM池子获得的收益,不如直接持有两种代币的收益高,这个差值就是“无常损失”。
无常损失的计算步骤(附简化公式)
我们可以通过“价格变动前后的价值对比”来计算无常损失,具体步骤如下:
定义初始状态
假设LP在某时刻投入代币A(数量a₀)和代币B(数量b₀),此时代币A相对于B的价格为P₀(即1个A = P₀个B),则:
- LP初始总价值(以B计价):
V₀ = b₀ + a₀*P₀ - AMM池子的恒定值:
k = a₀*b₀
价格变动后的状态
当代币A的价格变为P₁时,根据恒定乘积公式,池子中两种代币的储备量会自动调整为a₁和b₁,此时满足:
- 价格关系:
P₁ = b₁/a₁(A的价格 = B储备量 / A储备量) - 推导新储备量:
a₁ = √(k/P₁),b₁ = √(k*P₁)
两种场景的价值对比
我们需要对比两种选择的收益:
- 场景1:存入AMM池子:此时总价值(以B计价)为:
V_pool = b₁ + a₁*P₁ - 场景2:直接持有代币:不存入池子,初始资产的总价值(以B计价)为:
V_hold = b₀ + a₀*P₁
无常损失的计算公式
无常损失(以B计价)为V_hold - V_pool,通常用百分比表示:
*IL% = [(V_hold - V_pool) / V_hold] 100%**
为了简化计算,我们可以用价格变动率r = P₁/P₀(即价格涨跌倍数)推导通用简化公式:
*IL% = (2√r)/(1 + r) - 1**
这个公式不需要初始储备量,只要知道价格变动倍数就能快速估算,非常实用。
实际计算例子(一看就懂)
举个直观的例子:
假设LP投入1ETH和1000USDT,初始价格P₀=1ETH=1000USDT,则a₀=1,b₀=1000,k=1*1000=1000。
情况1:ETH价格涨到2000USDT(r=2)
- 新储备量:
a₁=√(1000/2000)≈0.707ETH,b₁=√(1000*2000)≈1414USDT - 池子总价值:
V_pool=1414 + 0.707*2000=2828USDT - 直接持有的价值:
V_hold=1000 +1*2000=3000USDT - 无常损失:
IL%=(3000-2828)/3000≈5.73%,和简化公式计算结果一致。
情况2:ETH价格跌到500USDT(r=0.5)
代入简化公式:IL%=(2*√0.5)/(1+0.5)-1≈-5.73%,和价格翻倍的损失相同,说明价格涨跌幅度相同时,无常损失的绝对值一致。
关键提醒:“无常”的含义与实际影响
这里的“无常”是指:如果代币价格回到初始水平,无常损失会完全消失,只有当价格偏离初始水平时,损失才会