4、无常损失:什么是无常损失?如何计算?什么时候会变成永久损失?

无常损失,这词儿听着挺玄乎的。我第一次接触时也懵了——什么叫无常?难道跟无常鬼有关系?

其实没那么复杂。说白了,无常损失就是:你往Uniswap池子里存币,币价涨了,但你赚的还没人家直接拿着币多。那部分「少赚的」,就是无常损失。

我当年第一次做LP时,存了ETH和DAI进去。结果ETH涨了30%,我兴冲冲去看收益——嗯?怎么账户里的ETH变少了?虽然DAI多了,但总价值算下来,比直接持有ETH少了5%。这就是无常损失在作祟。

无常损失是怎么产生的?

核心原因就一个:做市商必须保持两种资产的价值比例恒定

Uniswap的恒定乘积公式是:

x * y = k

x是代币A的数量,y是代币B的数量,k是常数。当外部价格变化时,套利者会来池子里交易,直到池内价格跟外部一致。这个过程会改变x和y的比例。

举个例子:

  • 你存了1 ETH和1000 USDC(假设1 ETH = 1000 USDC)
  • ETH涨到2000 USDC
  • 套利者会来买走你的ETH,直到池内价格也变成2000 USDC
  • 最终你的份额变成约0.707 ETH和1414 USDC
  • 总价值:0.707 * 2000 + 1414 = 2828 USDC
  • 如果直接持有:1 * 2000 + 1000 = 3000 USDC
  • 无常损失:3000 - 2828 = 172 USDC,约5.7%

嗯,这就是无常损失的全过程。你什么都没做错,只是市场波动了一下,钱就少了。

如何计算无常损失?

公式其实挺简洁的。假设价格变化倍数为r(比如涨了2倍,r=2):

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

我习惯用这个公式快速估算。给你个速查表:

价格变化 无常损失
±1% 0.002%
±5% 0.06%
±10% 0.23%
±25% 1.4%
±50% 5.7%
±100% 20%
±200% 38%
±400% 60%

看到没?价格翻倍,损失20%。价格涨5倍,损失60%。这可不是小数目。

你想想看,如果你存的是稳定币对(比如USDC/DAI),价格几乎不变,无常损失基本为零。但如果你存的是ETH/DAI这种波动大的对,那就要小心了。

什么时候会变成永久损失?

这个问题问得好。很多人以为「无常」就是暂时的,等价格回来就没事了。对,也不对。

如果你在价格波动期间没有退出,等价格回到初始位置,无常损失确实会消失。这就是「无常」二字的由来——它只是暂时的账面损失。

但如果你在价格偏离时退出了池子,那损失就变成永久的了。我见过太多人犯这个错:

⚠️ 我曾经见过一个项目方,ETH涨了50%时慌了,赶紧撤池子。结果无常损失从账面变成了真金白银的亏损。更惨的是,ETH后来又跌回去了,他两头亏。

永久损失发生的三种情况:

  1. 主动撤池:价格偏离时退出,损失锁定
  2. 池子归零:如果池内某个币种归零(比如项目跑路),你的LP代币直接变废纸
  3. 手续费覆盖不了:交易手续费收入小于无常损失,净亏损

这里有个关键点:手续费收入可以抵消部分无常损失。Uniswap的LP能赚0.3%的交易手续费。如果池子交易量大,手续费收入可能超过无常损失。

我个人的经验是:年化手续费率在5%以上的池子,才值得考虑。低于这个数,一旦价格波动超过20%,你就亏了。

如何用代码计算无常损失?

写个简单的Solidity函数:

function calculateImpermanentLoss(uint256 priceChangeRatio) 
    public pure returns (uint256) {
    // priceChangeRatio 以1e18为单位,比如2倍就是2e18
    uint256 sqrtRatio = sqrt(priceChangeRatio);
    uint256 numerator = 2 * sqrtRatio;
    uint256 denominator = 1e18 + priceChangeRatio;
    uint256 loss = numerator * 1e18 / denominator;
    return 1e18 - loss; // 返回损失比例
}

这个函数返回的是损失比例。比如返回0.05e18,就是5%的无常损失。

💡 小技巧: 我习惯在测试网上先跑一遍。用Hardhat写个脚本,模拟不同价格下的无常损失,看看自己的策略能不能扛住。别一上来就真金白银往里冲。

避坑指南

总结几条我踩过的坑:

  • 别在单边行情里做LP:牛市里ETH一直涨,你做ETH/DAI池子,手续费赚的远不如直接持有ETH
  • 稳定币对最安全:USDC/DAI这种,无常损失几乎为零,适合保守型玩家
  • 波动大的对要谨慎:比如一些新项目币种,一天波动50%很正常,无常损失能吃掉你所有手续费
  • 关注交易量:池子日交易量低于100万美元的,手续费收入可能不够看

说白了,无常损失不是洪水猛兽。你只要理解它的原理,算清楚账,就能做出明智的决策。我做了两年LP,现在看到价格波动已经心如止水了——该赚的赚,该亏的亏,心里有数就行。

无常损失核心逻辑图 初始存入 1 ETH + 1000 USDC ETH涨到2000 套利者交易 买走ETH,价格平衡 最终份额 0.707 ETH + 1414 USDC 做LP的总价值 0.707 × 2000 + 1414 = 2828 USDC 直接持有的总价值 1 × 2000 + 1000 = 3000 USDC 无常损失 = 3000 - 2828 = 172 USDC (5.7%) 关键结论 • 价格波动越大,无常损失越高 • 未退出前是账面损失,退出后变成永久损失 • 手续费收入可以部分抵消无常损失

📌 核心要点: 无常损失不是真正的「损失」,而是「机会成本」。你少赚的那部分,就是市场给你的做市风险溢价。理解它,管理它,而不是害怕它。

专注资料整理