mcpField
I
impermanent-loss

impermanent-loss

github.com/agiprolabs其他456431 次安装8 周前更新
代码仓库

关于 impermanent-loss

面向 DeFi 流动性提供者的无常损失分析技能,涵盖恒定乘积池与集中流动性池,并提供计算、情景模拟和费用盈亏平衡方法。

主要功能

  1. 01计算恒定乘积池无常损失
  2. 02估算集中流动性放大效应
  3. 03比较费用收入与无常损失
  4. 04通过蒙特卡洛模拟价格路径
  5. 05基于历史价格进行分析
  6. 06提供计算与情景建模脚本

适用场景

  1. 01评估提供流动性的潜在损失
  2. 02比较 LP 费用与无常损失
  3. 03模拟不同价格路径下的头寸结果
  4. 04分析历史期间的流动性头寸表现

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/agiprolabs/claude-trading-skills --skill impermanent-loss

安装后在 Claude Code 中输入/impermanent-loss确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
breakeven_analysis.md
il_formulas.md
scripts/
il_calculator.py
il_scenario_modeler.py

详细介绍

无常损失 — 计算、建模与盈亏平衡分析

无常损失(IL)是相较于单纯持有代币,为自动做市商(AMM)提供流动性所付出的成本。当你将代币存入流动性池后,AMM 会随着价格变动持续重新平衡你的头寸。这种重新平衡总会对你不利——卖出赢家、买入输家——导致最终价值低于单纯持有原始代币的价值。

为什么称为“无常”?

IL 被称为“无常”,是因为它只有在你提取资产时才会成为实际损失。如果价格回到最初的比例,IL 就会归零。然而,现实中价格很少会恰好回到原位,所以 IL 通常确实存在。

关键见解

IL 取决于价格比例的变化,而非绝对价格。代币价格从 $1 涨到 $2 所产生的 IL,与从 $100 涨到 $200 相同——两者的价格比例都变化了 2 倍。方向也无关紧要:上涨 2 倍和下跌至 0.5 倍,产生的 IL 幅度相同。

恒定乘积 IL 公式

对于标准的 x * y = k AMM(Raydium 标准版、Orca 旧版):

IL = 2 * sqrt(r) / (1 + r) - 1

其中 r = P_new / P_initial(价格比例)。

关键价格比例下的 IL
价格变化比例(r)IL
-75%0.25-5.72%
-50%0.50-5.72%
-25%0.75-0.60%
0%1.000.00%
+25%1.25-0.60%
+50%1.50-2.02%
+100% (2x)2.00-5.72%
+200% (3x)3.00-13.40%
+400% (5x)5.00-25.46%
+900% (10x)10.00-42.54%

请注意其对称性:上涨 2 倍(r=2.0)和下跌至 0.5 倍(r=0.5)都会产生 -5.72% 的 IL。

集中流动性(CLMM)的 IL 放大效应

集中流动性做市商(Orca Whirlpools、Raydium CLMM、Meteora DLMM)允许 LP 在价格区间 [P_lower, P_upper] 内集中提供流动性。这会同时放大手续费收入和 IL。

集中系数
concentration_factor = 1 / (1 - sqrt(P_lower / P_upper))

对于当前价格上下 ±10% 的区间:集中系数 ≈ 10 倍。

CLMM 的 IL 表现
  • 价格在区间内:与恒定乘积 IL 相比,IL 会按集中系数放大。
  • 价格超出区间:头寸将全部转换为表现较差的资产。这是该方向上可能出现的最大 IL——你只持有贬值的代币。
IL_clmm ≈ IL_constant_product * concentration_factor

此近似适用于小幅价格变动。对于大幅变动或接近区间边界的价格,请使用完整的 CLMM 公式(参见 references/il_formulas.md)。

示例:CLMM 与恒定乘积

SOL 价格为 $150,LP 设置的区间为上下 ±20%($120–$180):

情景恒定乘积 ILCLMM IL(±20%)
SOL → $180-0.62%~-3.1%
SOL → $200-1.03%100% SOL(超出区间)
SOL → $120-1.80%~-9.0%
SOL → $100-3.42%100% USDC(超出区间)

IL 与手续费:盈亏平衡分析

任何 LP 面临的核心问题是:赚取的手续费是否超过产生的 IL?

Net Position = LP_value + accrued_fees - hold_value

当 accrued_fees > IL 时即可盈利。

盈亏平衡费率

对于恒定乘积池,每个周期的预期 IL 约为:

expected_IL ≈ σ² / 8

其中,σ 是该周期对数收益率的标准差。这意味着:

日波动率(σ)预期日 IL盈亏平衡所需的最低日费率
1%0.001%0.001%
3%0.011%0.011%
5%0.031%0.031%
10%0.125%0.125%
20%0.500%0.500%

LP 的每日费用收入:

daily_fee_income = (deposit / TVL) * daily_volume * fee_rate

如需了解完整的盈亏平衡框架,请参阅 references/breakeven_analysis.md。

随时间模拟 IL

蒙特卡洛模拟

使用几何布朗运动(GBM)模拟许多随机价格路径:

import numpy as np

def simulate_price_path(
    initial_price: float,
    daily_vol: float,
    days: int,
    drift: float = 0.0,
) -> np.ndarray:
    """Simulate a price path using geometric Brownian motion."""
    dt = 1.0  # daily steps
    log_returns = np.random.normal(
        (drift - 0.5 * daily_vol**2) * dt,
        daily_vol * np.sqrt(dt),
        days,
    )
    prices = initial_price * np.exp(np.cumsum(log_returns))
    return np.insert(prices, 0, initial_price)

对每条路径,计算每个时间步的 IL 和累计赚取的费用。完成 N 次模拟后,分析结果分布。

完整的蒙特卡洛模拟请参见 scripts/il_scenario_modeler.py。

历史分析

使用实际的 OHLCV 价格数据,计算过去某段时间内的 IL。这能提供更贴近现实(但基于历史数据)的估算。

IL 缓解策略

1. 稳定币交易对

USDC/USDT 等交易对的价格比几乎不变,因此 IL 接近于零。费用收入几乎就是纯利润。

2. 高相关性交易对

SOL/mSOL 或 ETH/stETH 等交易对走势相近,因此价格比保持在 1.0 附近。IL 极小。

3. 更宽的 CLMM 范围

更宽的范围会降低集中系数,从而减少 IL,但每单位资金的费用收入也会降低。

4. 主动管理范围

监控价格,并在价格接近边界时重新调整 CLMM 范围。这样可以降低价格完全超出范围的风险。

5. 选择费率档位

较高的费率档位(例如,1% 而非 0.3%)可以补偿波动性较高的交易对所带来的更高 IL。应根据预期波动率选择费率档位。

何时可以接受 IL

  • 高交易量池:费用收入显著高于预期 IL。
  • 稳定或高相关性交易对:IL 从结构上看极小。
  • 代币累积策略:无论如何,你都希望累积价格更低的代币。
  • 较短持有期限并主动管理:费用会复利增长,而且你会在大幅波动发生前重新调整仓位。

何时应避免提供 LP 流动性

  • 低交易量、高波动性:IL 占主导,费用收入不足以弥补。
  • 趋势市场:强劲的单向波动会造成大幅且持续的 IL。
  • 缺乏流动性的新代币:价格可能在数小时内上涨 10 倍以上,导致灾难性的 IL。
  • 价差较大的池:交易量低,费用收入无法弥补任何 IL。

相关技能

  • lp-math:AMM 机制和储备计算,是 IL 公式的基础。
  • yield-analysis:将扣除 IL 后的 LP 收益与其他 DeFi 机会进行比较。
  • liquidity-analysis:评估池深度和交易量,以估算费用收入。
  • volatility-modeling:预测 IL 建模所需的波动率输入。

文件

参考资料
  • references/il_formulas.md — 恒定乘积池、CLMM 和多资产池的完整 IL 推导
  • references/breakeven_analysis.md — 费用与 IL 的盈亏平衡框架及实用工具
脚本
  • scripts/il_calculator.py — 计算各种池类型在任意价格变动下的 IL,并提供表格和比较结果
  • scripts/il_scenario_modeler.py — 对 LP 仓位随时间进行蒙特卡洛模拟,并模拟费用和 IL

评论

支持 Markdown