第三章:无常损失数学推导

说实话,无常损失这个概念,我最早接触的时候也觉得挺玄乎的。什么「无常」啊,听起来像佛学概念。但说白了,它就是你在流动性池里放钱,价格变动后你亏的那部分——跟单纯持有相比。

这一章,咱们就把这个损失用数学语言讲清楚。我会从最基本的公式推导开始,然后分析单边上涨和单边下跌的场景,最后用可视化让你一眼看明白。

3.1 恒定乘积公式回顾

先复习一下最基础的Uniswap V2模型。池子里有两种代币,比如ETH和USDC。它们的数量满足:

x * y = k

其中x是ETH数量,y是USDC数量,k是常数。这个公式保证了无论怎么交易,乘积不变。

假设你往池子里添加流动性时,ETH价格是P₀。那么池子里两种代币的比例就是:

y₀ / x₀ = P₀

嗯,这里要注意:价格其实就是两种代币数量的比值。你存入的流动性占比为α,那么你拥有的代币数量就是αx₀和αy₀。

3.2 损失函数推导

现在,假设ETH价格从P₀变成了P₁。根据恒定乘积公式,池子里的代币数量会重新平衡。新的数量x₁和y₁满足:

x₁ * y₁ = k
y₁ / x₁ = P₁

解这个方程组,得到:

x₁ = √(k / P₁)
y₁ = √(k * P₁)

你持有的流动性份额α不变,所以你的资产价值V₁为:

V₁ = α * (x₁ * P₁ + y₁) = α * (√(k / P₁) * P₁ + √(k * P₁)) = α * 2√(k * P₁)

如果你当初没有提供流动性,而是单纯持有,那么你的资产价值V_hold为:

V_hold = α * (x₀ * P₁ + y₀) = α * (x₀ * P₁ + x₀ * P₀) = α * x₀ * (P₁ + P₀)

这里我用了y₀ = x₀ * P₀这个关系。接下来,无常损失IL定义为:

IL = (V₁ - V_hold) / V_hold

代入并化简,得到:

IL = (2√(P₁ / P₀)) / (1 + P₁ / P₀) - 1

令r = P₁ / P₀,即价格变化倍数,那么:

IL(r) = 2√r / (1 + r) - 1

这就是无常损失的核心公式。我个人习惯把这个公式记在脑子里,因为很多对冲策略的决策都基于它。

关键结论:无常损失只取决于价格变化倍数r,与初始价格P₀无关。也就是说,无论你是在100美元还是1000美元时添加流动性,只要价格翻倍,损失比例是一样的。

3.3 单边上涨场景分析

先看价格上涨的情况。假设r > 1,比如ETH从1000涨到2000,r=2。

代入公式:

IL(2) = 2√2 / (1 + 2) - 1 = 2*1.414 / 3 - 1 ≈ 0.943 - 1 = -0.057

也就是说,你亏了约5.7%。

为什么会这样?因为价格上涨时,套利者会来买走你的ETH,换成USDC。你手里的ETH变少了,虽然USDC变多了,但总价值跑不赢单纯持有。

我记得有一次,一个朋友在UNI上提供了ETH/USDC池,ETH从3000涨到4500,他兴冲冲地跟我说赚翻了。我让他算一下无常损失,他算完发现比单纯持有少了8%左右。嗯,这就是典型的「看着涨了,其实没涨够」。

来看几个关键点的损失值:

价格变化倍数 r 价格变化幅度 无常损失 IL
1.25 +25% -0.99%
1.5 +50% -2.02%
2.0 +100% -5.72%
3.0 +200% -13.40%
5.0 +400% -25.46%

你看,价格翻倍时损失还不到6%,但涨了4倍时损失就超过25%了。所以波动越大,损失越明显。

3.4 单边下跌场景分析

现在看价格下跌的情况。r < 1,比如ETH从1000跌到500,r=0.5。

代入公式:

IL(0.5) = 2√0.5 / (1 + 0.5) - 1 = 2*0.707 / 1.5 - 1 ≈ 0.943 - 1 = -0.057

咦?跟r=2时一模一样,也是-5.7%。

这就是无常损失的一个对称性:价格涨一倍和跌一半,损失比例相同。因为公式中r和1/r代入结果一样。

下跌时,套利者会来买你的USDC,换成ETH。你手里的USDC变少了,ETH变多了。但ETH在跌,所以总价值还是跑不赢单纯持有。

避坑指南:我曾经见过有人以为「价格跌了,我手里的ETH变多了,等涨回来就能赚」。这是典型的误解。无常损失是相对于「什么都不做」而言的。你提供流动性后,无论涨跌,只要价格变动,你就比单纯持有亏。除非价格回到原点。

3.5 损失曲线可视化

光看数字不够直观,咱们画个图。下面这个SVG展示了无常损失随价格变化倍数的变化曲线。

无常损失曲线 价格变化倍数 r 0 0.5 1.0 1.5 2.0 2.5 0% -10% -20% -30% -40% r=1, IL=0% r=0.5, IL=-5.7% r=2.0, IL=-5.7% r=0.25, IL=-20% r=4.0, IL=-20% 对称点

从曲线上能看出几个特点:

  • 对称性:r和1/r对应的损失相同。比如涨一倍和跌一半,损失都是5.7%。
  • 非线性:损失不是线性增长的。r从1到2损失5.7%,但从2到4损失从5.7%跳到20%,加速了。
  • 极限值:当r趋近于0或无穷大时,IL趋近于-100%。也就是说,如果价格归零或涨上天,你的流动性价值会趋近于零——但注意,单纯持有也会趋近于零,只是流动性亏得更快。

实战技巧:我个人习惯在添加流动性前,先估算一下目标价格区间的最大损失。比如我觉得ETH在2000-4000之间波动,那就算一下r=2时的损失5.7%。如果这个损失我能接受,再考虑手续费收益能不能覆盖。如果覆盖不了,那就不如不做。

3.6 用Python验证一下

光推导公式不够,我习惯写几行代码验证一下。下面这个Python函数计算无常损失:

def impermanent_loss(r):
    """
    计算无常损失
    r: 价格变化倍数 (P1/P0)
    返回: 损失比例,负值表示亏损
    """
    return 2 * (r ** 0.5) / (1 + r) - 1

# 测试几个值
for r in [0.25, 0.5, 1, 2, 4]:
    il = impermanent_loss(r)
    print(f"r={r:.2f}, IL={il*100:.2f}%")

输出结果:

r=0.25, IL=-20.00%
r=0.50, IL=-5.72%
r=1.00, IL=0.00%
r=2.00, IL=-5.72%
r=4.00, IL=-20.00%

跟表格数据完全吻合。嗯,数学不会骗人。

3.7 小结

这一章我们做了三件事:

  1. 从恒定乘积公式推导出无常损失的数学表达式
  2. 分析了单边上涨和单边下跌场景,发现损失是对称的
  3. 用曲线可视化展示了损失随价格变化的规律

核心就一句话:无常损失是提供流动性相对于单纯持有的机会成本,价格波动越大,损失越大。它叫「无常」,是因为只要价格回到原点,损失就消失了——但现实中价格很少会精准回归。

下一章我们会讨论如何用期权和永续合约对冲这个损失。在那之前,建议你把公式记牢,最好能自己推导一遍。我当年就是这么干的,推完之后感觉通透多了。


公众号:蓝海资料掘金营,微信deep3321