Uniswap v3:通用自动做市商

  • Paradigm
  • 发布于 2021-06-08 15:56
  • 阅读 50

本文详细介绍了Uniswap v3如何通过提供定制的流动性在特定价格范围内实现资本效率。文中还探讨了如何使用Uniswap v3模拟其他自动化市场制造商(AMMs)的流动性曲线,并分析了这些AMMs的流动性特征。未来的工作将致力于改进这些模拟方法并提高效率。

大纲

引言

Uniswap v3 (论文) 允许流动性提供者在选定的价格区间提供自定义数量的流动性。对于可以手动调整其风险敞口的流动性提供者来说,这解锁了巨大的资本效率提升。

但这一特性也极大地扩展了 自动化 流动性提供的设计空间。任何静态的 AMM 都可以通过在 Uniswap v3 上涉及多个位置的自定流动性提供策略来逼近。

我们可以将任何 AMM 提供的流动性可视化为“tick 空间”中的曲线。将此方法应用于现有的 AMM,如 Curve、Balancer 和对数市场评分规则(LMSR),显示了这些 AMM 如何在不同价格区间集中其流动性,揭示了与每个 AMM 相对应的独特“流动性指纹”。

后续工作将探讨如何在 Uniswap v3 中有效准确地实现这种策略。

自动化做市商

本文假设你熟悉定义为交易函数的两个资产之间的自动化做市商(见 论文),即其储备 $X$ 和 $Y$ 之间的关系。我们只考虑双资产池。

为方便比较,假设这些公式中的常量以 $s$ 表示,其中 $s$ 是在 $x=y$ 时的 $X$ 数量。你可以大致将 $s$ 视为流动性提供者在该池中的“股份”数量。例如,Uniswap v2 使用的恒定乘积公式(忽略费用)可以用公式 $ x \cdot y = s^2$ 描述,其中 $s$ 大致对应于流动性代币的总供应。

我们用 $P$ 表示资产 $X$ 相对于资产 $Y$ 的价格。 $P$ 相当于储备曲线的负导数,$ -\frac{dy}{dx}$。 (有关将 AMM 理解为导数更多的背景信息,请参见 YieldSpace 论文)。

Uniswap v3

在 Uniswap v3 中,任何人都可以创建一个位置以提供一定数量的流动性— $L$

—在两个 ticks 之间的价格区间内。Tick 指数($t_i$ )在价格上是对数的,并指定该位置提供流动性的上下限价格。

Uniswap v3 白皮书 所示,这是描述单个 Uniswap v3 位置的储备关系的交易函数,当其流动性在范围内时:

$$(x + x{offset}) \cdot (y + y{offset}) = L^2$$

$$ x{offset} = \frac{L}{\sqrt{p{upper}}}$$

$$ y{offset} = L \cdot \sqrt{p{lower}}$$

如果一个策略涉及在多个位置提供流动性,那么这些以总储备量定义的定义将不再适用。

因此,找到一个 局部 流动性定义是有帮助的,这描述了流动性在其常规意义上的意义:当有人与此池进行交易时,池对价格冲击的抵抗力。

如附录 A 所示,实际上 $L$ 也可以被定义为$y$ (即 $Y$ 代币的储备)对于 $\sqrt{P}$(即 $Y$ 代币的价格的平方根)变化的变化率:

$$ L = \frac{dy}{d\sqrt{P}}$$

模拟其他曲线

流动性提供者如何使用 Uniswap v3 来模拟自定义曲线?一种直观的方法是创建许多不同的位置,并在每个位置提供自定义数量的流动性:

image.png

这些“切片”越狭窄,就越能准确地模拟目标曲线。在本文中,我们将 tick 空间视为可无限细分,并想象流动性提供者被允许在任何 tick 处提供任何任意函数 $L(t_i)$ 以提供该数量的流动性。

绘制$L(t_i)$ 函数显示了这些其他 AMM 的“流动性指纹”。(为了方便定义 ticks 的函数,我们将 $t_i$ 定义为 $\ln(P)$ ,仿佛我们的 tick 大小为 $e$ 。)附录 B 显示了从给定的不变量推导出该 $L(t_i)$ 函数的步骤。

Uniswap v2

Uniswap v2 中储备的行为可以用以下方程描述:

$$ x \cdot y = s^2$$

image.png

该储备曲线的流动性指纹为一条平坦的线:

$$L = s$$

要在 Uniswap v3 中模拟此曲线,我们只需创建一个流动性为 $s$ 的单一位置,并将 tick 边界设置为 $t{min}$ 和 $t{max}$。

image.png

Curve(常数 chi)

Curve 使用的公式在 StableSwap 白皮书 中有所描述。该论文首先以常数放大因子 $x$ 来描述其不变性,$X$ 。它们的公式可写为:

$$2 \chi s (x + y) + xy = 4 \chi s^2 + s^2$$

这条储备曲线(以 Uniswap v2 进行比较)如下所示:

image.png

事实证明,使用常数 $X$ ,使用此公式提供的流动性 正好等同于 由单个 Uniswap v3 位置提供的流动性,如果我们设定 $L = s \cdot (2\chi + 1$)$),并将上下限价格设置为

${\left(\frac{2\chi + 1}{2\chi}\right)}^2$ 和 ${\left(\frac{2\chi}{2\chi + 1}\right)}^2$ 。这意味着我们可以用 Uniswap v3 中的一个位置模拟该公式:

image.png

Curve 实际上使用的是非恒定的 $X$ ,它被定义(使用我们的术语)为 $\frac{Axy}{s^2}$ ,其中 A 是一个常数放大因子。这导致了一个更复杂的方程,更难用封闭形式的流动性函数表示。在后续工作中,我将展示如何以数值方式近似这一曲线和其他曲线。

Balancer

双资产 Balancer 池中的储备可以通过此不变性描述,其中 $w_x$ 是 $X$ 资产的权重, $w_y$ 是 $Y$ 资产的权重(或 $1 - w_x$):

image.png

$$x^{w_x} \cdot y^{w_y} = s$$

在流动性空间中,这对应于指数函数:

$$L(t_i) = s \cdot (2 {w_x}^{w_y} {w_y}^{w_x}) \cdot e^{(w_x - \frac{1}{2}) t_i} $$

image.png

直观来看,当资产 $X$ 的权重较低时,池中的更多流动性被保留用于更低的资产 $X$ 价格。这是很有道理的,因为在任何给定时间,保留用于更低价格的流动性实际上是对资产 $X$ 的买单,因此它目前持有的是资产 $Y$ 。

对数市场评分规则

对数市场评分规则 (LMSR) 是最早和最广泛研究的自动化做市商之一。双资产案例最为人所知的是其在二元预测市场中的应用(即 YES 和 NO 股票之间),其中两个资产的价格(以现金计算)相加等于 1。

通常,LMSR 以每个资产(YES 和 NO)与现金之间做市的规则进行描述。我们也可以更改为描述一个资产与另外一个资产之间做市的规则。如果这样做,如 这里 所解释的,储备可以用这个不变性来描述:

$$ 2^{-\frac{x}{s}} + 2^{-\frac{y}{s}} = 1$$

该公式的储备曲线如下所示:

image.png

当转换为 tick 空间时,该曲线的流动性指纹的形状为——没错——双曲正割函数:

$$ L(t_i) = \frac{s}{\ln(2)} \cdot \operatorname{sech}{\left(\frac{t_i}{2}\right)}$$

image.png

正如你所看到的,LMSR 的流动性更集中于 tick 0(价格为 1)。在预测市场中,当 YES 和 NO 股票相等时,这意味着概率为 50%。因此,LMSR 更集中于支持概率约为 50% 的流动性,而不是支持更极端的概率。

附录 B 展示了如何计算这个流动性指纹。

未来工作

本文展示了如何使用 Uniswap v3 模拟多个流行的 AMM,并展示了在流动性空间中绘制曲线如何提供它们独特的 “流动性指纹” 的见解。然而,在 Uniswap v3 可以被用来模拟大多数这些 AMM 之前,有几个限制需要克服:

  • Ticks 不是无限细分的,流动性提供者必须使用可用的细分 ticks 来近似此曲线。
  • 铸造和销毁的 gás 费用与更新的 ticks 数量成正比,因此在 tick 空间的所有自定义级别上提供流动性将极其低效。
  • 最后,并不是所有有用的 AMM 都可以轻松表示为流动性空间中的函数。

未来的工作将展示一些利用数值逼近解决这些问题的技术,以及一些智能合约技巧,使自定义流动性提供更加节省 gás。

附录

附录 A:流动性定义

我们可以证明,在 Uniswap v3 中,导数 $\frac{dy}{d\sqrt{P}}$ 等于$L$ 。

我们从交易函数开始(当该位置在范围内时):

$$ (x + x{offset})\cdot (y + y{offset}) = L^2$$

求解 $x$ (以便稍后使用):

$$ x = \frac{L^2}{y + y{offset}} - x{offset}$$

求解$y$:

$$ y = \frac{L^2}{x + x{offset}} - y{offset}$$

将 $P$ 作为 $x$ 的函数,取 $-\frac{dy}{dx}$:

$$P = \frac{L^2}{\left(x + x_{offset}\right)^2}$$

而是求解 $\sqrt{P}$:

$$ \sqrt{P} = \frac{L}{x + x_{offset}}$$

代入 $x$ 并简化:

$$\sqrt{P} = \frac{y + y_{offset}}{L}$$

求解 $Y$ :

$$ y = L * \sqrt{P} - y_{offset}$$

取导数:

$$ \frac{dy}{d\sqrt{P}} = L$$

附录 B:示例推导

本附录演示了如何从定义为交易函数的 AMM 公式推导出流动性曲线在 tick 空间中的形式。我们将使用 LMSR 作为示例。

如附录 A 所示,流动性可以定义为关于 $y$ 的变化率 $\sqrt{P}$。由于 $P$ 只是关于 $x$ 的 $y$ 的导数的 -1 倍,我们知道流动性可以计算为:

$$ L = \frac{dy}{d\sqrt{-\frac{dy}{dx}}}$$

我们从定义为不变的 AMM 开始:

$$ 2^{-\frac{x}{s}} + 2^{-\frac{y}{s}} = 1$$

求解 $y$ :

$$ y = -s \log_2{(1-2^{-\frac{x}{s}})}$$

取导数并将其取反以获得价格(以资产 $X$ 相对于资产 $Y$ 的价格)作为$x$ 的函数:

$$ P_x(x) = -\frac{dy}{dx} = \frac{1}{2^{\frac{x}{s}}-1}$$

接下来,我们需要找到该价格的公式,但要作为$y$ 的函数而不是 $x$ 。由于该曲线(像本文描述的其他曲线一样)在$x$ 和 $y$ 之间对称,我们可以简单地用 $y$ 替换 $x$ 并取倒数来得到以 $y$ 为函数的价格:

$$ P_y(y) = 2^{\frac{y}{s}} - 1$$

接下来,我们对其进行倒换以找到 $y$ 作为 $P$ 的函数,然后将其重写为 $\sqrt{P}$的函数。

$$ y_{\sqrt{P}}(\sqrt{P}) = s \log_2{(\sqrt{P}^2+1)}$$

然后我们对 $\sqrt{P}$ 取导数:

$$ L(\sqrt{P}) = \frac{dy}{d\sqrt{P}} = \frac{2s}{\ln(2)} \cdot \frac{1}{\sqrt{P}+\frac{1}{\sqrt{P}}}$$

最后,我们将其转换为 tick 空间,通过将其重写为 tick 指数 $ t_i$ ($ln(P)$):

$$ L(t_i) = \frac{1}{\ln(2)} \cdot \frac{2}{e^{\frac{t_i}{2}}+e^{-\frac{t_i}{2}}} = \frac{s}{\ln(2)} \cdot \operatorname{sech}{\left(\frac{t_i}{2}\right)}$$

  • 原文链接: paradigm.xyz/2021/06/uni...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
Paradigm
Paradigm
Paradigm 是一家研究驱动型技术投资公司 https://www.paradigm.xyz/