V3中的流动性计算
什么是限价订单
在 Uniswap V3 中,提供一个单边流动性(Single-Sided Liquidity)到一个非常窄的价格区间,就相当于下了一个限价订单。
详细工作原理
1. 与传统限价订单的类比
想象一下你想在交易所用 ETH 买入 USDC,并设定一个限价订单:
- 传统订单: “当 1 ETH 的价格 ≤
$2,000
时,卖出我的 1 ETH 并买入等值的 USDC。” - Uniswap V3 的实现: 你作为流动性提供者,在价格区间 $1,999 - $2,001 内存入 1 ETH。当市场价格进入这个区间时,你的 ETH 会沿着曲线逐渐被卖出换成 USDC。
2. 技术过程分解
Uniswap V3 的流动性是集中在自定义价格区间内的。当你提供流动性时,你的资金会处于以下三种状态之一:
- 订单未触发(Out of Range):
- 场景: 你希望在 ETH 价格 ≤
$2,000
时卖出 ETH 买入 USDC。你将流动性设置在$1,900 - $2,100
的区间。 - 当前市场价: ETH =
$2,500
- 状态: 你的流动性完全由 ETH 一种资产构成。它静静地待在那里,不会参与任何交易,就像一张等待价格跌至
$2,100
以下才会激活的订单。
- 场景: 你希望在 ETH 价格 ≤
- 订单正在执行(In Range):
- 场景: 市场价格下跌。
- 当前市场价: ETH =
$2,000
(进入了你的流动性区间) - 状态: 你的流动性开始活跃地参与交易。随着价格在
$1,900 - $2,100
之间波动,套利者和交易者会与你的流动性池进行交换。你的 ETH 会逐渐被卖出,同时逐渐积累 USDC。在此过程中,你还会赚取这些交易产生的手续费。
- 订单完成(Below Range):
- 场景: 价格继续下跌,跌破了你的区间下限。
- 当前市场价: ETH =
$1,800
- 状态: 你的流动性不再活跃。此时,你存入的 ETH 已经全部被兑换成了 USDC。你的头寸完全由 USDC 构成。至此,你的“限价订单”已经执行完毕。你可以随时从池中移除流动性,提取你获得的全部 USDC。
反之亦然:如果你想用 USDC 买入 ETH,你可以只存入 USDC 到一个价格区间(例如 $2,000 - $2,200
)。当价格高于 $2,000
时,你的 USDC 会逐渐被卖出换成 ETH,直到价格超过 $2,200
,你的头寸就完全变成了 ETH。
优势与风险
优势 (Pros)
- 资本效率:与传统订单簿模式下的挂单资金被锁定不同,在这里你的资金在订单执行期间(价格在区间内时)还在为你赚取手续费。
- 无对手盘风险:你的交易对手是整个流动性池和所有交易者,而不是某个特定的个人。
- 完全去中心化:这完全在链上运行,不需要中心化的订单簿系统。
风险 (Cons) / 注意事项
- 无常损失(Impermanent Loss)的极端形式:这本质上就是你期望发生的“损失”——为了将一种资产换成另一种资产。但如果价格变化与你的预期不符(例如,刚进入区间就立刻离开),你可能会得到一个比预期更差的兑换价格。
- ** gas 成本**:创建(存入)和撤销(取出)流动性头寸都需要支付链上交易费,这可能对于小额订单来说不划算。
- 价格区间风险:如果区间设置得太窄,价格可能会快速穿过你的区间,导致你的订单只有一部分成交,剩下的资产则被“困”在无效区间里,需要你重新调整策略。
- 机会成本:在订单等待触发期间,你的资产没有其他用途(例如,不会在借贷协议中产生利息)。
总结
Uniswap V3 的“限价订单”是一个通过提供 concentrated liquidity(集中流动性)来模拟订单簿限价订单功能的强大创新。
- 买入限价单:存入资产A(如 USDC),设置一个高于当前价的价格区间。当价格上涨时,A 被换成 B(如 ETH)。
- 卖出限价单:存入资产B(如 ETH),设置一个低于当前价的价格区间。当价格下跌时,B 被换成 A(如 USDC)。
它并非完美无缺,主要成本是 gas 费和策略管理的复杂性,但它为去中心化金融世界带来了前所未有的灵活性和高级交易策略。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 EIGHTJIU!
评论