坦白说,很多人第一次做DeFi收益耕作时,盯着的是APR、手续费收入和代币激励,真正结算时才发现:币价涨了,池子也在赚钱,但自己的净值不一定比单纯持币更高。问题往往不在收益率,而在无常损失没有被正确计算。
我见过最常见的误区是:把无常损失理解成“亏钱”。更准确地说,它是LP仓位相对HODL同等初始资产组合的机会成本。你可能仍然是盈利的,但跑输了持币;也可能手续费和激励覆盖了无常损失,最终跑赢。
这篇文章不讲空泛概念,我会按实际建仓思路,把DeFi收益耕作无常损失计算、收益拆解、对冲策略和风控检查表串起来。目标很简单:你看完以后,能自己判断一个LP池到底值不值得进,而不是只看平台展示的年化。
先把问题说清楚:LP赚的不是单一收益
以一个经典的ETH/USDC 50/50恒定乘积池为例。你投入价值1万美元的资产,其中5000美元ETH、5000美元USDC。AMM的核心约束是:
x * y = k
当ETH价格上涨,套利者会买走池中的ETH,留下更多USDC。你的LP份额没有变,但底层资产比例变了:ETH数量减少,USDC数量增加。
这就是无常损失的来源。
LP最终收益大致可以拆成四块:
| 收益/风险项 | 说明 | 是否可控 |
|---|---|---|
| 交易手续费 | 来自池内交易量 | 部分可预测 |
| 代币激励 | 协议额外发放的奖励 | 高度依赖规则 |
| 无常损失 | 相对持币组合的机会成本 | 可计算、可对冲 |
| 智能合约与清算风险 | 合约漏洞、预言机、杠杆清算 | 只能控制暴露 |
关键在于,不要单独看APR。一个30% APR的池,如果标的波动剧烈、交易量不足、奖励代币持续下跌,净收益可能并不好看。
无常损失公式:别背结论,要理解变量
对于50/50恒定乘积池,价格变化倍数记为r:
r = 新价格 / 初始价格
无常损失公式为:
IL = 2 * sqrt(r) / (1 + r) - 1
如果ETH从2000涨到3000,r = 1.5。
IL = 2 * sqrt(1.5) / 2.5 - 1 ≈ -2.02%
注意,这个-2.02%不是说你本金亏了2.02%,而是说你的LP仓位相对“初始50/50持币组合”少了约2.02%。如果手续费和激励超过这个值,LP仍然是划算的。
常见价格变动下的无常损失如下:
| 价格变化 | r | 50/50池无常损失 |
|---|---|---|
| 下跌50% | 0.5 | -5.72% |
| 上涨50% | 1.5 | -2.02% |
| 上涨100% | 2 | -5.72% |
| 上涨300% | 4 | -20.00% |
| 下跌80% | 0.2 | -25.46% |
这里有个坑要注意:上涨和下跌不是按涨跌幅对称,而是按价格倍数r和1/r对称。涨100%和跌50%的无常损失相同。
用Python做一个最小可用计算器
在实际项目中,我不建议只用网页计算器。网页适合快速估算,但你需要把手续费、激励、奖励代币折价、退出滑点都放进一个模型里。下面这个Python脚本足够做第一版判断。
import math
def impermanent_loss(r):
return 2 * math.sqrt(r) / (1 + r) - 1
def lp_projection(initial_value, price_change, fee_apr, reward_apr, days, reward_discount=0.0):
il = impermanent_loss(price_change)
time_factor = days / 365
fee_return = fee_apr * time_factor
reward_return = reward_apr * (1 - reward_discount) * time_factor
net_vs_hodl = fee_return + reward_return + il
projected_diff = initial_value * net_vs_hodl
return {
'il_pct': il * 100,
'fee_pct': fee_return * 100,
'reward_pct': reward_return * 100,
'net_vs_hodl_pct': net_vs_hodl * 100,
'net_vs_hodl_value': projected_diff
}
case = lp_projection(
initial_value=10000,
price_change=1.5,
fee_apr=0.12,
reward_apr=0.18,
days=60,
reward_discount=0.3
)
for k, v in case.items():
print(k, round(v, 4))这个例子表达的是:本金1万美元,标的上涨50%,手续费APR 12%,奖励APR 18%,持仓60天,但奖励代币按30%折价处理。
我个人习惯一定给奖励代币打折。原因很简单:很多池子的APR漂亮,是因为奖励代币按当前市场价计算;但你真正卖出时,可能面对价格下跌、流动性不足和解锁规则。保守估值不是悲观,而是避免被表面APR误导。
实操判断:一个池子能不能做,看这四个变量
我通常不会问“这个池子APR多少”,而是先问四个问题。
1. 标的相关性强不强?
ETH/wstETH、USDC/DAI、WBTC/tBTC这类相关性较高的池子,无常损失通常更可控。ETH/高波动山寨币这种池子,风险结构完全不同:你不是在赚稳定手续费,而是在被动做再平衡,价格越偏离,资产结构变化越明显。
2. 交易量是否真实持续?
手续费来自交易量,不来自页面上的年化数字。一个池子昨天交易量很高,不代表未来一个月都高。尤其是新池上线、激励启动、空投预期阶段,交易量可能短期失真。
最佳实践是看至少几个维度:日交易量、TVL变化、手续费率、同类池竞争、路由器是否稳定把交易导入该池。
3. 激励是否可兑现?
奖励代币要看三件事:是否锁仓、是否有足够流动性、是否存在持续抛压。说实话,高APR池子最大的问题不是算不清,而是你算得很清楚,但奖励资产兑现不了。
4. 退出成本是否被低估?
退出LP不是按理想价格完成。你可能要拆LP、兑换单边资产、跨链、还债、平仓对冲头寸。每一步都有Gas、滑点和时间成本。小资金尤其容易被固定成本吃掉收益。
对冲无常损失:不是消灭风险,而是换一种风险
很多教程会说“用期货做空波动资产就能对冲无常损失”。这句话只对了一半。
以ETH/USDC LP为例,随着ETH上涨,你的池内ETH数量会减少;随着ETH下跌,你的池内ETH数量会增加。这意味着LP仓位本身不是固定Delta,而是动态变化的。
一个简化的对冲思路是:估算LP当前对ETH的净敞口,然后用永续合约或期权降低方向性风险。
流程可以画成这样:
建立LP仓位
↓
计算初始资产数量与价格区间
↓
估算当前LP中的ETH数量
↓
确定目标Delta暴露
↓
用永续合约/期权对冲
↓
定期再平衡,检查资金费率与清算风险这里要注意:对冲成本可能比无常损失更高。永续合约有资金费率,期权有权利金,借贷做空有利息和清算线。没有免费的午餐。
三种常用对冲方案,我会这样选
方案A:用永续合约做Delta对冲
适合流动性深、资金费率稳定的主流资产池,比如ETH/USDC、BTC/USDC。
做法是估算LP中波动资产的美元敞口,然后在合约市场开相反方向仓位。比如LP当前约等于持有2 ETH风险敞口,你可以做空一部分ETH永续,降低价格下跌或上涨带来的相对偏离。
优点是执行简单、流动性好。缺点也明显:需要维护保证金,极端行情可能被强平,资金费率会侵蚀收益。
我一般不会做100%对冲。根据我的经验,完全对冲看似精确,实际会因为再平衡频率、交易成本和资金费率变得很笨重。更实用的是做区间对冲,比如只对冲50%-70%的方向敞口。
方案B:用期权对冲尾部风险
如果你担心的是极端上涨或暴跌,期权更合适。比如做ETH/USDC LP,同时买入看涨期权,防止ETH暴涨时LP跑输持币太多;或者买入看跌期权,防止标的大幅下跌带来的净值压力。
期权的问题是成本透明但不便宜。买保护就像买保险,长期持续买,权利金会吃掉不少收益。所以我更倾向于在事件风险前使用,例如重大升级、宏观事件、解锁窗口附近,而不是机械地长期买。
方案C:选择相关资产池,少对冲甚至不对冲
这可能是最容易被忽略的方案。
如果你选择的是稳定币池、LST池、封装BTC池,无常损失本来就较低,复杂对冲未必值得。很多时候,最好的风险管理不是把高风险池子对冲到看似安全,而是从源头选择风险结构更干净的池子。
集中流动性池:收益更高,坑也更深
Uniswap V3、PancakeSwap V3等集中流动性AMM让LP可以选择价格区间。区间越窄,资金效率越高,手续费收益可能越高。但问题是:价格一旦离开区间,你就会变成单边资产,停止赚取区间内手续费。
这类池子的无常损失不能只套50/50公式。你需要考虑:
- 价格区间上下界
- 当前价格距离边界多远
- 区间外单边资产风险
- 再平衡频率和Gas成本
- 主动管理策略是否可靠
坦白讲,新手如果没有监控和再平衡工具,不建议一上来就做很窄区间。看起来APR很高,实际可能是用更高的管理难度换来的。
我的风控清单:进池前必须过一遍
下面这张清单比较朴素,但很实用。
| 检查项 | 我会怎么判断 |
|---|---|
| 合约风险 | 是否为成熟协议,是否经过审计,是否有历史安全事件 |
| 资产风险 | 是否有脱锚、增发、预言机、治理攻击风险 |
| 流动性质量 | TVL是否集中,退出滑点是否可接受 |
| 收益来源 | 手续费和激励分别占多少,激励是否可持续 |
| 对冲成本 | 资金费率、借贷利率、期权权利金是否吃掉收益 |
| 操作成本 | Gas、跨链、再平衡、税务记录是否可承受 |
| 最坏情况 | 标的涨跌50%时,净值和保证金是否安全 |
我认为最重要的是“最坏情况”。如果一个策略只有在温和行情下赚钱,遇到剧烈波动就会爆仓或无法退出,那它不是收益策略,而是没写清楚风险的杠杆仓位。
一个可执行的建仓框架
真正落地时,我建议按这个顺序来:
- 先选资产,不先选APR。优先选择你愿意长期持有或风险认知充分的资产。
- 用无常损失公式跑价格情景,比如r = 0.5、0.8、1.2、1.5、2。
- 把手续费APR和奖励APR分开计算,不要混在一起。
- 奖励代币按折价估值,流动性差的折价更高。
- 估算退出成本,包括滑点、Gas、跨链和对冲平仓。
- 如果做对冲,提前写好再平衡规则,而不是行情来了再拍脑袋。
- 小仓位试运行,确认收益、成本和操作流程后再扩大。
还有一点,不要把所有资金放进同一种AMM模型。稳定币池、相关资产池、主流波动资产池、借贷策略的风险来源不同,组合起来会比单押一个高APR池子更稳。
FAQ:几个经常被问到的问题
无常损失一定会发生吗?
只要池内两种资产相对价格发生变化,就会产生相对HODL的偏离。价格回到初始点时,无常损失理论上会消失,但期间手续费、激励、滑点和操作成本已经发生,所以真实结果仍要单独计算。
手续费能完全覆盖无常损失吗?
可以,但不保证。高交易量、高手续费率、低价格偏离的池子更容易覆盖。问题是未来交易量和价格波动都不确定,所以只能做情景分析,不能用静态APR下结论。
做LP适合长期持有吗?
这取决于资产类型。相关资产池可以更偏长期,波动资产池需要更频繁评估。集中流动性窄区间策略通常不适合完全放着不管。
对冲后是不是就没有风险了?
不是。对冲只是把无常损失和方向风险的一部分,转换成资金费率、保证金、流动性、模型误差和操作风险。专业策略的核心不是消灭风险,而是知道自己承担了什么风险。
结语:真正的收益来自可解释的风险
DeFi收益耕作不是看哪个池子APR最高,而是看你能不能解释收益从哪里来、风险在哪里、最坏情况会怎样。
如果只记一个结论,我建议记这个:无常损失不是玄学,它可以计算;但能不能赚钱,取决于手续费、激励、价格路径、对冲成本和执行纪律的共同结果。
最佳实践是先用小仓位跑通模型,再逐步扩大。别急着追高APR,也别迷信复杂对冲。能长期活下来的策略,通常不是最炫的,而是每个风险点都算得明白。