第4章:无常损失 (Impermanent Loss) —— 它到底是什么?什么时候会发生?
好,咱们今天来聊聊一个让无数LP(流动性提供者)又爱又恨的话题——无常损失。
说实话,我最早接触这个概念时,也觉得它挺玄乎的。明明我存进去的是两种代币,怎么价格一涨一跌,我反而亏了?这听起来像是个悖论。但等你真正搞懂了AMM的定价机制,就会发现——嗯,这其实是数学上的必然。
4.1 无常损失的本质:一个数学事实
先给个最直白的定义:
无常损失,是指你作为LP存入流动性后,由于池中两种资产相对价格发生变化,导致你的资产价值,低于你单纯持有这两种资产(不存入池子)时的价值。
说白了,就是「你本来可以赚更多,但因为做了LP,少赚了」——这部分「少赚的」,就是无常损失。
我个人习惯用一个简单的例子来理解:
假设:
- 你存入 1 ETH 和 100 USDC(当时 ETH=100 USDC)
- 池子总流动性:10 ETH + 1000 USDC(你占10%)
- 你的总资产价值:1 ETH × 100 + 100 = 200 USDC
场景:ETH涨到 200 USDC
- 如果你没做LP,你的资产价值 = 1×200 + 100 = 300 USDC
- 如果你做了LP,池子会自动平衡,你的ETH会减少,USDC会增加
- 最终你的资产价值 ≈ 282.84 USDC
- 无常损失 = 300 - 282.84 = 17.16 USDC(约5.72%)
为什么会这样?因为AMM的恒定乘积公式 x * y = k 强制要求:当一种代币价格上涨时,池子会自动卖出它,买入另一种。你作为LP,被迫「高卖低买」——这恰恰是交易员最忌讳的操作。
4.2 什么时候会发生无常损失?
答案很简单:只要池中两种资产的价格发生相对变化,就会产生无常损失。
但这里有个关键点——「无常」二字。它之所以叫「无常」,是因为这个损失是暂时的。如果价格回到你存入时的水平,损失就消失了。但如果你在价格偏离时撤出流动性,这个「暂时」就变成了「永久」。
我在项目中遇到过不少新手,看到ETH涨了50%,兴冲冲地去撤LP,结果发现收益还不如直接持有ETH。嗯,这就是典型的「把无常损失变成了永久损失」。
4.3 无常损失的数学公式
咱们来点硬核的。假设价格变化倍数为 r(比如价格翻倍,r=2),那么无常损失的百分比可以用下面这个公式计算:
IL = (2√r) / (1 + r) - 1
其中 r = P_new / P_old,即新价格除以旧价格。
这个公式是怎么来的?我简单推导一下:
- 初始状态:你持有 x 个代币A 和 y 个代币B,满足 x * y = k
- 价格变化后,池子重新平衡,你的份额变为 x' 和 y'
- 你的资产价值 = x' * P_new + y'
- 持有价值 = x * P_new + y
- 两者相减,再除以持有价值,就得到上面的公式
我建议你把这个公式记下来,或者直接写个小脚本。每次做LP之前,先算算潜在的无常损失有多大。
4.4 一个实用的表格:不同价格波动下的无常损失
| 价格变化倍数 (r) | 价格变化百分比 | 无常损失百分比 |
|---|---|---|
| 1.01 | +1% | 0.0025% |
| 1.05 | +5% | 0.06% |
| 1.10 | +10% | 0.23% |
| 1.25 | +25% | 1.38% |
| 1.50 | +50% | 4.72% |
| 2.00 | +100% | 17.16% |
| 3.00 | +200% | 38.20% |
| 4.00 | +300% | 55.56% |
你看,当价格翻倍时,无常损失已经接近17.2%。如果价格涨了3倍,损失接近38%。这可不是小数目。
注意:这个表格假设价格只变化一次。实际中价格是连续波动的,无常损失会累积。我曾经见过一个池子,价格在两周内波动了5倍,LP们亏得连手续费都补不回来。
4.5 无常损失 vs 手续费收入
你可能会问:那做LP到底赚不赚钱?
答案是:看情况。手续费收入可以部分甚至完全抵消无常损失。但前提是——交易量足够大,且价格波动不太剧烈。
我个人的经验是:
- 对于稳定币对(如USDC/DAI),无常损失几乎为零,手续费是纯赚
- 对于ETH/USDC这类波动较大的对,如果年化手续费率低于10%,基本就是在给交易员打工
- 对于山寨币/ETH对,除非你极度看好,否则别碰——波动太大,无常损失会吃掉一切
避坑指南:我曾经在2021年牛市时,把大量ETH存入一个ETH/USDC池子。当时手续费年化高达40%,我以为稳赚。结果一个月后ETH涨了80%,我撤出时一算——手续费赚了3%,无常损失亏了12%,净亏9%。从那以后,我再也不在单边行情中做LP了。
4.6 如何计算无常损失?一个简单的Python脚本
我习惯用代码来算,这样更精确。下面这个脚本可以帮你快速计算:
def impermanent_loss(r):
"""
r: 价格变化倍数 (新价格/旧价格)
返回: 无常损失百分比 (小数形式)
"""
return (2 * (r ** 0.5)) / (1 + r) - 1
# 示例
r_values = [1.01, 1.05, 1.1, 1.25, 1.5, 2.0, 3.0, 4.0]
for r in r_values:
il = impermanent_loss(r)
print(f"价格变化 {r:.2f}x -> 无常损失 {il*100:.2f}%")
输出结果:
价格变化 1.01x -> 无常损失 0.00%
价格变化 1.05x -> 无常损失 0.06%
价格变化 1.10x -> 无常损失 0.23%
价格变化 1.25x -> 无常损失 1.38%
价格变化 1.50x -> 无常损失 4.72%
价格变化 2.00x -> 无常损失 17.16%
价格变化 3.00x -> 无常损失 38.20%
价格变化 4.00x -> 无常损失 55.56%
你想想看,如果你存入100万U,价格翻倍时,无常损失就是17万U。这可不是小数目。
4.7 核心逻辑图:无常损失的形成机制
下面这张图展示了无常损失从产生到实现的完整路径:
4.8 总结:你该怎么应对无常损失?
说了这么多,最后给几条实操建议:
- 选对池子:稳定币对(如USDC/DAI)几乎无无常损失,适合稳健型选手
- 算清账:做LP前,用公式算一下潜在损失,再对比手续费收益
- 别在单边行情中做LP:如果你预测价格会大幅上涨,直接持有代币比做LP更划算
- 考虑对冲:可以在其他平台做空波动大的代币,对冲无常损失
- 及时止损:如果价格已经大幅偏离,且你判断不会回来,果断撤出
记住一句话:无常损失不是「损失」,而是「少赚」。 它不会让你亏掉本金,但会让你错过本该属于你的收益。理解它、计算它、管理它——这才是合格LP的必修课。
公众号:蓝海资料掘金营,微信deep3321