DeFi收益耕作无常损失计算与对冲策略实操:从公式、Python回测到仓位管理完整指南

loong
2026-07-19 / 0 评论 / 7 阅读 / 正在检测是否收录...

坦白说,很多人第一次做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仍然是划算的。

常见价格变动下的无常损失如下:

价格变化r50/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%时,净值和保证金是否安全

我认为最重要的是“最坏情况”。如果一个策略只有在温和行情下赚钱,遇到剧烈波动就会爆仓或无法退出,那它不是收益策略,而是没写清楚风险的杠杆仓位。

一个可执行的建仓框架

真正落地时,我建议按这个顺序来:

  1. 先选资产,不先选APR。优先选择你愿意长期持有或风险认知充分的资产。
  2. 用无常损失公式跑价格情景,比如r = 0.5、0.8、1.2、1.5、2。
  3. 把手续费APR和奖励APR分开计算,不要混在一起。
  4. 奖励代币按折价估值,流动性差的折价更高。
  5. 估算退出成本,包括滑点、Gas、跨链和对冲平仓。
  6. 如果做对冲,提前写好再平衡规则,而不是行情来了再拍脑袋。
  7. 小仓位试运行,确认收益、成本和操作流程后再扩大。

还有一点,不要把所有资金放进同一种AMM模型。稳定币池、相关资产池、主流波动资产池、借贷策略的风险来源不同,组合起来会比单押一个高APR池子更稳。

FAQ:几个经常被问到的问题

无常损失一定会发生吗?

只要池内两种资产相对价格发生变化,就会产生相对HODL的偏离。价格回到初始点时,无常损失理论上会消失,但期间手续费、激励、滑点和操作成本已经发生,所以真实结果仍要单独计算。

手续费能完全覆盖无常损失吗?

可以,但不保证。高交易量、高手续费率、低价格偏离的池子更容易覆盖。问题是未来交易量和价格波动都不确定,所以只能做情景分析,不能用静态APR下结论。

做LP适合长期持有吗?

这取决于资产类型。相关资产池可以更偏长期,波动资产池需要更频繁评估。集中流动性窄区间策略通常不适合完全放着不管。

对冲后是不是就没有风险了?

不是。对冲只是把无常损失和方向风险的一部分,转换成资金费率、保证金、流动性、模型误差和操作风险。专业策略的核心不是消灭风险,而是知道自己承担了什么风险。

结语:真正的收益来自可解释的风险

DeFi收益耕作不是看哪个池子APR最高,而是看你能不能解释收益从哪里来、风险在哪里、最坏情况会怎样。

如果只记一个结论,我建议记这个:无常损失不是玄学,它可以计算;但能不能赚钱,取决于手续费、激励、价格路径、对冲成本和执行纪律的共同结果。

最佳实践是先用小仓位跑通模型,再逐步扩大。别急着追高APR,也别迷信复杂对冲。能长期活下来的策略,通常不是最炫的,而是每个风险点都算得明白。

0