Uniswap V3价格出了区间,为什么手续费收益会停?

Uniswap V3:活跃区间与手续费:假设价格轴90—110,不展开tick端点规则;区间内不保证盈利

Uniswap V3:活跃区间与手续费。假设价格轴90—110,不展开tick端点规则;区间内不保证盈利
假设价格轴90—110,不展开tick端点规则;区间内不保证盈利

查看完整图表 ↗

在 Uniswap V3 中,手续费只分配给“活跃流动性”,即价格区间覆盖当前成交价格的头寸。价格一旦走出你设定的区间,这笔头寸就不再处于活跃范围,新的 swap 不再把手续费计到它头上,新增收益因此停止。但停止的是“新增应计”,不是“已有收益”:此前已经累计的可领取手续费仍记在该头寸名下,需要头寸所有者主动提取,不会因为出区间而消失或被没收。

区间外停止计费,是 V3 的设计结果

V3 允许 LP 把流动性集中在自选价格区间内。协议在每次 swap 时,只向当前价格所在区间内的流动性分配手续费,并按流动性占比分摊。可以把它理解成一个判定条件:当前价格是否落在该头寸的区间内。落在区间内,就参与本次手续费分配;落在区间外,就不参与。这里还有一个容易忽略的前提:即使在区间内,也要有实际发生的交易,才可能产生新的手续费。没有 swap,就没有可分配的费用,头寸只是保持“具备分配资格”。

这带来一个直接推论:手续费收入取决于两件事——你提供了多少流动性,以及你的区间是否跟住了市场价格。区间越窄,资金越集中,在区间内时单位资金分到的手续费份额通常越高;但价格越容易走出区间,一旦走出,新增收益停止,直到价格重新进入。区间内并不等于必然赚钱,手续费只是收入项,报价资产的价格波动和资产结构变化仍然存在。

这里讨论的是 V3 的区间与手续费机制。V2 没有自定义区间,所有流动性始终有效;V4 的费用机制与 V3 不同。不要把其他版本的规则套到 V3 头寸上。

一个假设例子

假设某 V3 池当前价格处于 100,你建立了一个价格区间为 90 至 110 的头寸,投入流动性。为简化,忽略真实 tick 离散规则和端点细节,仅用于说明区间与计费资格的关系。

阶段 当前价格 头寸是否在区间内 新增手续费
A 95 是 有交易时可能累积
B 105 是 有交易时可能累积
C 115 否 停止累积
D 108 是(重新进入) 有交易时恢复累积
E 85 否 停止累积

在阶段 C,价格高于区间上沿 110,你的流动性在这个价格上不再被交易使用,swap 产生的手续费分给的是其他覆盖 115 附近价格的活跃头寸。阶段 A、B 期间已累计的手续费仍然属于你,处于可领取状态。阶段 D 价格回落到 108,重新进入 90 至 110,你的头寸重新具备分配资格,有交易时手续费恢复累积——但 C 期间错过的收益不会补发。

配图“流动性有效区间图”与上表使用同一组假设:90 至 110 为头寸区间,价格在区间内时该头寸参与手续费分配,价格越过上沿或下沿后退出分配。图示只表达这一逻辑,不代表任何实际头寸或实测结果。

判断头寸是否还在计费

可以按三步自查:

  1. 找到头寸的价格区间上下限,以及池子当前价格(或当前 tick 对应的价格)。
  2. 判断当前价格是否落在区间内。高于上沿或低于下沿,即为区间外,新增手续费停止;在区间内,也只是具备分配资格,仍需有交易才可能产生费用。
  3. 区分“新增”和“存量”:查看该头寸已累计的待领取手续费。这部分是历史应计,出区间不影响其存在,但 V3 的手续费需要头寸所有者手动领取,不会自动复投。

如果价格长期停在区间外,头寸实际上变成了单边资产:价格向上突破,头寸逐渐全部转为区间上沿对应的资产;向下突破则转为下沿对应的资产。此时既没有新增手续费,又承担了价格方向带来的资产结构变化。

几个容易混淆的点

“收益停了”不等于“收益没了”。停的是新 swap 不再计入,历史应计仍在,可领取。

回到区间内会恢复资格,但不补发。区间外那段时间的手续费分配给了当时活跃的其他流动性。

区间内不保证盈利。手续费是收入项,但报价资产的价格波动、无常损失以及资产本身的风险仍然存在。窄区间在震荡行情中可能手续费可观,在单边行情中则可能很快出区间并承受资产结构变化。

端点与 tick 细节另算。真实 V3 按 tick 离散化,区间端点是否包含、初始化价格如何对应,属于实现层面的细节,本文不展开;判断“在不在区间”时以实际头寸的 tick 边界为准。

参考资料