第三章 无常损失深度解析

无常损失,这个词我当年刚入行时听着就头大。

说白了,它就是你在AMM里做流动性提供者时,因为价格波动导致的账面损失。嗯,这里要注意——它不是真亏,而是「相对损失」。什么意思?就是你放在池子里的钱,如果单纯拿着不动,可能比放池子里赚得更多。

无常损失的计算公式

先上公式,别怕,我带你一步步拆解:

无常损失 = 1 - 2√(r) / (1 + r)

其中 r = 新价格 / 旧价格

这个公式怎么来的?我习惯从恒定乘积公式入手。

假设一个交易对,比如ETH/USDC。池子里有x个ETH和y个USDC,满足:

x * y = k

价格P = y / x。所以当价格从P₀变到P₁时,r = P₁ / P₀。

你想想看,如果价格翻倍(r=2),无常损失是多少?代入公式:

1 - 2√2 / (1 + 2) = 1 - 2.828 / 3 ≈ 5.7%

也就是说,价格翻倍时,你比单纯持有少赚了5.7%。

核心结论:无常损失永远是非正的。你不可能因为价格波动而赚到额外的钱,最多就是不赚不赔(当价格不变时)。

产生原因:为什么会有无常损失?

我在项目中遇到过不少新手,他们总以为做市商是稳赚的。其实不然。

无常损失的本质是:AMM的做市策略与「持有不动」策略之间的差异

传统订单簿做市商可以灵活调整报价,但AMM不行。它必须遵循恒定乘积公式,价格一变,池子里的资产比例就得跟着变。

举个例子:

  • 你存入1 ETH和2000 USDC,价格2000 USDC/ETH
  • ETH涨到4000 USDC,套利者会买入ETH直到池子平衡
  • 最终池子里剩下约0.707 ETH和2828 USDC
  • 你的总资产价值 = 0.707 * 4000 + 2828 = 5656 USDC
  • 如果持有不动:1 * 4000 + 2000 = 6000 USDC
  • 损失 = 6000 - 5656 = 344 USDC,约5.7%

为什么会这样?因为AMM被迫在低价时卖出ETH,在高价时买入ETH。这正好是「低卖高买」——做市商最忌讳的事。

数学推导:一步步拆解公式

我个人习惯用代数推导来理解,这样更踏实。来,我们一起推一遍:

  1. 初始状态:x₀个ETH,y₀个USDC,价格P₀ = y₀ / x₀
  2. 新价格P₁ = r * P₀,其中r是价格变化倍数
  3. 在新价格下,池子重新平衡:x₁ * y₁ = k,且y₁ / x₁ = P₁
  4. 解得:x₁ = x₀ / √r,y₁ = y₀ * √r
  5. 你的资产价值V₁ = x₁ * P₁ + y₁ = (x₀ / √r) * (r * P₀) + y₀ * √r
  6. 简化:V₁ = x₀ * P₀ * √r + y₀ * √r = (x₀ * P₀ + y₀) * √r
  7. 持有不动的价值V₀ = x₀ * P₁ + y₀ = x₀ * r * P₀ + y₀
  8. 无常损失 = 1 - V₁ / V₀ = 1 - 2√r / (1 + r)

我的小技巧:记住几个关键点的损失值就够了。r=1.25(涨25%)时损失约0.6%,r=2(翻倍)时损失约5.7%,r=4时损失约20%。这样你在做决策时能快速估算。

不同波动率下的损失模拟

我曾经用Python跑过一个模拟,看看不同波动率下的实际损失情况。这里给你看核心数据:

价格变化倍数 (r) 价格变化百分比 无常损失
1.01 +1% 0.0025%
1.05 +5% 0.06%
1.10 +10% 0.23%
1.25 +25% 0.60%
1.50 +50% 2.02%
2.00 +100% 5.72%
3.00 +200% 13.40%
4.00 +300% 20.00%
10.00 +900% 42.85%

你看,小波动时损失几乎可以忽略。但一旦价格翻倍以上,损失就开始变得明显了。

避坑指南:我曾经在2021年牛市时,把大量ETH放进Uniswap的ETH/USDC池子里。结果ETH从2000涨到4000,我不仅没吃到全部涨幅,还因为无常损失少赚了5.7%。那笔交易让我深刻意识到——做市不是被动持有,你得主动管理。

如何用SVG理解无常损失

下面这张图是我自己画的,帮你直观理解无常损失与价格变化的关系:

无常损失 vs 价格变化倍数 价格变化倍数 (r) 1 2 3 4 5 0% 10% 20% 30% 0.6% 2.0% 5.7% 13.4% 20.0% 无常损失曲线 注:横轴为价格变化倍数,纵轴为无常损失百分比

从这张图你能清楚看到:曲线在r=1附近非常平缓,说明小波动几乎没影响。但随着r增大,曲线越来越陡,损失加速增长。

实战中的应对策略

知道了无常损失的原理,那怎么应对?我分享几个实战经验:

  • 选择低波动性资产对:比如稳定币对(USDC/USDT),无常损失几乎为零。我个人的大部分仓位都在这类池子里。
  • 利用手续费补偿:Uniswap V3的集中流动性可以放大手续费收入,但同时也放大了无常损失。需要权衡。
  • 动态调整仓位:当价格大幅波动时,及时撤出或重新平衡。我曾经用脚本监控价格变化,超过20%就自动撤单。
  • 使用无常损失保险:一些协议如Bancor、SushiSwap的某些池子提供无常损失保护,但通常有锁定期。

我的建议:如果你刚开始做流动性挖矿,先从稳定币对开始。等熟悉了无常损失的脾气,再尝试波动性大的资产对。记住——手续费收入必须大于无常损失,你才真正赚钱。

无常损失不是洪水猛兽,它是AMM机制的一部分。理解了它,你就能更好地管理风险,做出更明智的做市决策。


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