第三章 无常损失深度解析
3.1 无常损失的本质
无常损失,英文叫 Impermanent Loss。说白了,就是你在 AMM 里做市时,因为价格波动导致的账面亏损。
为什么叫「无常」?因为只要你不撤单,这个损失就是浮动的。价格涨回来,损失就没了。但如果你在价格低点撤单,浮亏就变成了实亏。嗯,这里要注意——很多新手就是栽在这个「无常」二字上。
我在项目中遇到过一位朋友,他在 Uniswap V2 的 ETH/USDC 池子里放了 10 万美金。ETH 从 2000 涨到 3000,他兴冲冲地去算收益——结果发现,如果当初只是拿着不动,能赚 50%;但做市只赚了 30%。那 20% 的差额,就是无常损失。
3.2 无常损失的计算公式
我们先从最简单的恒定乘积公式说起。AMM 的核心公式是:
x * y = k
其中 x 和 y 是两种资产的数量,k 是常数。
假设初始价格是 P₀,价格变为 P₁。那么无常损失的百分比公式是:
IL = (2 * √r) / (1 + r) - 1
其中 r = P₁ / P₀
这个公式怎么来的?我习惯从「持有 vs 做市」的对比来理解。
如果你持有不动,资产总价值是:
V_hold = x₀ * P₁ + y₀
如果你做市,资产总价值是:
V_pool = 2 * √(k * P₁)
无常损失就是两者的比值减 1:
IL = V_pool / V_hold - 1
代入化简后,就得到了上面的公式。
3.3 不同价格波动下的损失模拟
我们来看一组模拟数据。假设你投入了 1000 USDC 和 1 ETH,初始价格 1000 USDC/ETH。
| 价格变化 | r 值 | 无常损失 | 实际感受 |
|---|---|---|---|
| 不变 | 1.0 | 0% | 完美 |
| 涨 25% | 1.25 | -0.6% | 几乎没感觉 |
| 涨 50% | 1.5 | -2.0% | 有点心疼 |
| 翻倍 | 2.0 | -5.7% | 明显亏了 |
| 涨 4 倍 | 4.0 | -20.0% | 大出血 |
| 涨 10 倍 | 10.0 | -42.9% | 几乎腰斩 |
你想想看,价格翻倍才亏 5.7%,但涨 10 倍就亏了 42.9%。这说明什么?波动越大,无常损失越恐怖。
我曾经在测试网上跑过一个模拟脚本,把 BTC 从 3 万拉到 6 万再砸回 3 万。结果发现,做市商的最终收益,比持有者少了将近 12%。这还是没算手续费的情况。
3.4 无常损失的可视化
下面这张图是我用 SVG 画的,展示了无常损失随价格变化的曲线。你可以直观地看到,损失是非对称的——价格下跌和上涨带来的损失其实一样大。
从图上你能看到,曲线在 r=1 处是 0,往两边对称下降。这就是为什么我常说:做市最怕的不是单边行情,而是剧烈波动。
3.5 如何对冲无常损失
好,问题来了:既然无常损失躲不掉,那怎么对冲?
我总结了几种实战方法,按推荐程度排序:
- 选择稳定币对池——比如 USDC/DAI,价格几乎不变,无常损失趋近于 0。但收益率也低。
- 使用单边流动性——像 Uniswap V3 那样,只在一个价格区间内提供流动性。波动超出区间,你就只持有一种资产,无常损失被锁定。
- 期权对冲——买入看跌期权保护下行风险,卖出看涨期权补贴做市收益。我在项目中试过,效果不错,但成本高。
- 永续合约对冲——在永续市场开反向仓位。比如你在 ETH/USDC 池做市,就开等量的 ETH 空单。价格涨,做市亏但空单赚;价格跌,做市赚但空单亏。两边抵消。
- 利用无常损失代币——像 Bancor 的 vBNT,或者一些项目提供的无常损失保险。但要注意,这些代币本身也有风险。
3.6 实战中的对冲策略
我个人最推荐的是「动态对冲」策略。具体做法是:
- 每 6 小时检查一次价格变化
- 如果价格波动超过 5%,就调整对冲仓位
- 对冲比例控制在 50%-80%,留一些敞口吃手续费
举个例子。假设你在 ETH/USDC 池子里有 10 ETH 和 10000 USDC。当前 ETH 价格 2000 USDC。
# 伪代码示例
pool_eth = 10
pool_usdc = 10000
eth_price = 2000
# 计算无常损失敞口
il_exposure = pool_eth * eth_price * 0.5 # 50% 对冲
# 开空单
open_short(amount=il_exposure, leverage=1x)
# 每 6 小时检查
while True:
new_price = get_eth_price()
price_change = abs(new_price - eth_price) / eth_price
if price_change > 0.05:
# 重新计算并调整
new_exposure = pool_eth * new_price * 0.5
adjust_short(target=new_exposure)
eth_price = new_price
sleep(6 * 3600)
这个策略的优点是简单,缺点是资金利用率低。你想想看,50% 的对冲意味着你有一半的仓位被锁住了。
3.7 总结
无常损失是 AMM 做市的核心成本之一。它不是一个「损失」,而是一个「机会成本」。理解它的计算公式和变化规律,是设计做市策略的第一步。
对冲无常损失的方法很多,但没有银弹。你需要根据自己的资金规模、风险偏好和交易频率,选择最适合的方案。我个人建议:新手先从稳定币对开始,等熟悉了再尝试带对冲的策略。
记住一句话:做市不是无风险套利,而是风险管理。你能管好无常损失,就已经赢了一半。
公众号:蓝海资料掘金营,微信deep3321