恒定乘积自动做市商算法

核心公式

恒定乘积做市商的核心公式是:
x * y = k
其中:

  • ( x ) 是第一种资产的数量(如ETH)
  • ( y ) 是第二种资产的数量(如USDT)
  • ( k ) 是常数乘积

价格变动机制

当交易发生时,资产数量的变化遵循:
[ (x + dx)(y - dy) = k ]
[ (x - dx)(y + dy) = k ]

滑点计算

滑点计算公式(纯文本格式)

滑点(S) = [(实际执行价格 - 预期价格) / 预期价格] × 100%

变量说明:

  • 滑点(S):以百分比(%)表示的价格偏差
  • 实际执行价格:交易实际成交的价格
  • 预期价格:交易发起时预期的市场价格

示例:

如果预期价格是2000 USDT,实际执行价格是2666.66 USDT,那么:
滑点 = [(2666.66 - 2000)/2000] × 100% = 33.33%

公式解读:

  1. 先计算实际价格与预期价格的差值
  2. 将差值除以预期价格,得到相对偏差
  3. 乘以100%转换为百分比形式

注意事项:

  • 正值表示实际价格高于预期(对买方不利)
  • 负值表示实际价格低于预期(对卖方不利)
  • 滑点大小反映市场流动性和交易规模的影响

交易案例

假定一个交易对 tokenA / tokenB

10A 200B

k = 10 * 200 =2000

情况

  1. 用户卖出5个A

​ (10 + 5 ) * (200 - dy)= 2000

​ 得 dy = 66.667B

​ 实际卖出价格:

  1. 恢复初始状态,用户此时持有100B,想买入A

​ (10 - dx) * (200+100) = 2000

​ 得dx = 3.33A

  1. 极端场景:用户卖出1000个A

​ (10 + 1000) * (200 - dy) = 2000

​ 得dy = 200 - 20/11 = 198B

spot price

PA = B / A = 200 / 10 = 20

PB = A / B = 10 / 200 = 0.05

重要概念

  1. 流动性池:由两种资产组成,数量乘积保持恒定
  2. 价格影响:大额交易会导致显著的价格滑点
  3. 交易执行:实际执行价格可能与预期价格有差异

注意事项

  • 大额交易(交易额占池子总数比较大)在AMM中会产生较高的滑点
  • 流动性深度影响价格稳定性
  • 公式中的k值代表流动性池的规模,k越大,同等交易量下的滑点越小

流动性参数 L

恒定乘积公式的两种表示方法

1. 传统形式 (x × y = k)

  • k是一个常数,代表流动性池中两种资产数量的乘积
  • 当交易发生时,k值保持不变
  • 资产数量x和y会呈反向变化关系
  • 这是最基本的自动做市商(AMM)模型公式

2. 改进形式 (x × y = L²)

  • L被定义为”流动性深度”(Liquidity)
  • L等于k的平方根(L = √k)
  • 这种表示法直接将流动性L与资产数量关联
  • 便于更直观地计算价格和滑点

使用L²表示的优势

(1) 几何意义

  • 公式x × y = L²描述的是双曲线
  • L值决定了曲线的”宽度”
  • L越大,曲线越平缓(流动性越深),价格滑点越小

(2) 统一流动性度量

  • 在Uniswap V3等先进模型中,明确将L定义为√(x × y)
  • 这样做的好处包括:
    • 添加/移除流动性时,可以直接通过L计算所需资产量
    • 可以实现不同价格区间的流动性分段计算(集中流动性)

(3) 简化价格计算

  • 资产价格P(如ETH/USDT价格)可以表示为:
    P = y/x = L²/x²
  • 这种表示方法能更直观地反映价格与流动性的关系

两种表示法的比较

特性 x × y = k x × y = L²
常数意义 k是任意乘积常数 L明确代表流动性深度
价格影响 滑点取决于k大小 滑点由L直接控制
适用性 基础AMM模型 高级模型(如Uniswap V3)

实际应用示例

假设一个ETH/USDT交易池:

  • 传统模型:100 ETH × 400,000 USDT = 40,000,000 (k值)
  • 流动性模型:√40,000,000 ≈ 6,324.56 (L值)

当用户买入10 ETH时:

  • 两种公式计算结果相同
  • 但L²形式能更直观显示流动性变化

LP 和 LPT 解释

1. LP(Liquidity Provider,流动性提供者)

  • 定义:向去中心化交易所(DEX)或自动做市商(AMM)资金池存入代币的用户。
  • 作用:提供交易对的流动性(如 ETH/USDT),使其他用户能顺利交易。
  • 收益
    • 赚取交易手续费(通常 0.1%-0.3% 每笔)。
    • 可能获得流动性挖矿的额外代币奖励。
  • 风险
    • 无常损失(Impermanent Loss):当代币价格剧烈波动时,LP 的资产价值可能低于单纯持有。
    • 智能合约风险:资金池可能被黑客攻击或存在漏洞。

2. LPT(Liquidity Provider Token,流动性提供者代币)

  • 定义:当用户成为 LP 时,系统发放的凭证代币,代表其在资金池中的份额。
  • 功能
    • 赎回权:凭 LPT 可随时取回自己存入的资产(按比例计算)。
    • 流动性证明:用于参与治理或质押挖矿(如 Curve 的 veCRV)。
  • 示例
    • Uniswap 的 LP 会收到 UNI-V2 代币。
    • PancakeSwap 的 LP 会收到 CAKE-LP 代币。

关键区别

术语 含义 作用
LP 流动性提供者(人/地址) 存入代币,赚取手续费
LPT 流动性凭证(代币) 证明份额,用于赎回或质押

为什么需要 LPT?

  1. 追踪份额:资金池中资产价格变动时,LPT 确保 LP 能按比例取回资产。
  2. 可组合性:LPT 可质押到其他协议(如 Yearn Finance)进行二次收益 farming。
  3. 去中心化治理:部分项目的 LPT 具有投票权(如 SushiSwap 的 SLP)。

实际案例

  1. 在 Uniswap 添加流动性
    • 存入 1 ETH + 2000 USDT → 获得 UNI-V2 LPT。
    • 交易手续费按 LPT 占比分配。
  2. 赎回资产
    • 销毁 UNI-V2 LPT → 取回 ETH 和 USDT(可能因价格变动数量不同)。

注意事项

  • 无常损失:价格波动越大,LP 的潜在损失风险越高。
  • LPT 价值:本身可在二级市场交易(如 SushiSwap 的 SLP),但通常与底层资产挂钩。

添加流动性(Adding Liquidity)

1. 基本概念

添加流动性 是指用户向去中心化交易所(DEX)或自动做市商(AMM)的资金池存入一定比例的两种代币,成为流动性提供者(LP),以支持该交易对的交易活动。作为回报,LP 会获得交易手续费分成和可能的额外奖励。


2. 核心原理

  • 恒定乘积公式(AMM 模型)

  • 添加流动性时
    用户必须按当前池中资产的比例同时存入两种代币。例如:

    • 如果池中有 100 ETH 和 200,000 USDT(比例 1:2000),用户需按相同比例存入(如 1 ETH + 2000 USDT)。

    (x +dx) / (y + dy) = x / y


3. 操作步骤(以 Uniswap 为例)

  1. 选择交易对:如 ETH/USDT。
  2. 输入存入数量:系统会自动计算另一种代币的所需数量(保持比例一致)。
  3. 授权代币:首次需授权智能合约访问你的代币。
  4. 确认添加:完成交易后,你会收到 LP Token(LPT) 作为凭证。

4. 为什么需要添加流动性?

  • 支持交易:没有流动性,用户无法在 DEX 中买卖代币。
  • 赚取收益
    • 手续费:每笔交易收取 0.01%-0.3% 的费用,按 LP 份额分配。
    • 挖矿奖励:部分项目额外发放治理代币(如 UNI、CAKE)。

5. 风险与注意事项

  • 无常损失(Impermanent Loss)
    当代币价格剧烈波动时,LP 取回的资产价值可能低于单纯持有。
    示例:存入 ETH/USDT 后,若 ETH 价格暴涨,部分 ETH 会被自动卖出,导致 LP 的 ETH 数量减少。
  • 智能合约风险:资金池可能存在漏洞或被黑客攻击。
  • 代币选择风险:为低流动性或诈骗代币提供流动性可能导致重大损失。

6. 实际案例

  • 场景
    你向 ETH/USDT 池存入 1 ETH(价值 2000 USDT)和 2000 USDT。
  • 结果
    • 获得 UNI-V2 LP Token。
    • 若池中总流动性为 100 ETH + 200,000 USDT,你的份额是 1%。
    • 每笔交易手续费(如 0.3%)的 1% 归你所有。

7. 常见问题

  • Q:能否只存一种代币?
    A:不能,必须按比例存入两种(AMM 机制要求)。
  • Q:如何计算收益?
    A:收益来自手续费 + 挖矿奖励,可通过 DEX 的仪表盘实时查看。
  • Q:何时取出流动性?
    A:当手续费收益覆盖无常损失,或需要收回资金时。

添加流动性是 DeFi 生态的核心操作之一,通过提供代币支持交易并获得被动收益,但需谨慎评估无常损失和项目风险。对于新手,建议从主流交易对(如 ETH/USDT)开始,并充分理解机制后再参与。

添加初始流动性决定了一个token的初始价格

添加流动性时,不可以改变/影响价格


移除流动性(Removing Liquidity)

1. 基本概念

移除流动性 是指流动性提供者(LP)从去中心化交易所(DEX)的资金池中取回自己原先存入的代币,并销毁对应的 LP Token(LPT)。这一操作会减少资金池的流动性,同时 LP 停止赚取手续费收益。


2. 核心原理

  • 赎回比例
    移除流动性时,你能取回的代币数量取决于:

    1. 当前资金池的资产比例(可能因交易和价格波动而变化)。
    2. 你持有的 LPT 占总 LPT 的比例
      公式
      你的代币数量 = (你的 LPT 数量 / 总 LPT) × 池中代币余额
  • 无常损失的影响
    如果代币价格波动较大,取回的代币数量可能与最初存入时不同(通常少于单纯持有)。


3. 操作步骤(以 Uniswap 为例)

  1. 连接钱包:访问 DEX 的「Pool」或「流动性管理」页面。
  2. 选择要移除的流动性池:如 ETH/USDT。
  3. 输入移除数量:选择销毁全部或部分 LPT。
  4. 预览赎回资产:系统会显示可取回的两种代币数量(可能因价格变化与最初不同)。
  5. 确认移除:完成交易后,LPT 被销毁,代币返回钱包。

4. 为什么需要移除流动性?

  • 提取收益:将积累的手续费和本金变现。
  • 规避风险:避免无常损失进一步扩大,或应对市场剧烈波动。
  • 调整投资策略:将资金转移到其他池子或退出 DeFi 市场。

5. 关键注意事项

  • 价格影响
    移除大额流动性可能导致池内资产比例失衡,短暂影响价格(滑点增大)。
  • 手续费
    部分平台会收取少量交易费(如以太坊的 Gas 费)。
  • 税收
    某些地区将移除流动性视为应税事件(需咨询专业人士)。

6. 实际案例

  • 场景
    你最初存入 1 ETH + 2000 USDT,获得 10 枚 UNI-V2 LPT(占总 LPT 的 1%)。
    现在池中有 100 ETH + 400,000 USDT(ETH 价格上涨至 4000 USDT)。
  • 移除操作
    • 销毁全部 10 枚 LPT。
    • 取回数量:
      ETH = 1% × 100 = 1 ETH
      USDT = 1% × 400,000 = 4000 USDT
    • 结果
      你最终获得 1 ETH + 4000 USDT(总价值 8000 USDT),比最初存入的 4000 USDT 翻倍(但 ETH 数量未变,存在无常损失)。

7. 常见问题

  • Q:移除流动性后,LPT 会消失吗?
    A:是的,LPT 会被销毁,无法再次使用。
  • Q:能否分批移除流动性?
    A:可以,自由选择销毁部分 LPT。
  • Q:移除时价格如何计算?
    A:按移除时池中的实时资产比例计算(非存入时的价格)。

impermanentloss.com提前模拟收益与风险。

移除流动性时,不可以改变/影响价格

撤底池(移除全部)

添加/移除流动性时候,k都是有变化的

k的恒定是指在swap时候是恒定不变的