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后来又跌回去了,他两头亏。
永久损失发生的三种情况:
- 主动撤池:价格偏离时退出,损失锁定
- 池子归零:如果池内某个币种归零(比如项目跑路),你的LP代币直接变废纸
- 手续费覆盖不了:交易手续费收入小于无常损失,净亏损
这里有个关键点:手续费收入可以抵消部分无常损失。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,现在看到价格波动已经心如止水了——该赚的赚,该亏的亏,心里有数就行。
📌 核心要点: 无常损失不是真正的「损失」,而是「机会成本」。你少赚的那部分,就是市场给你的做市风险溢价。理解它,管理它,而不是害怕它。