深入分析 Uniswap V3 流動性供應的數學原理

鏈聞看天下
2021-09-23 18:32:49
收藏
在 Uniswap V3 中以正確的比例提供流動性需考慮很多因素,例如刻度間隔內的不同流動性值及如何使用池數據來計算需要交換的代幣數量。

撰文:Mellow Protocol
編譯:Blake

大家好,客套話就不說了,讓我們談談 Uniswap V3 的數學邏輯吧!

我們將深入探討 Uniswap V3 中流動性供應的工作原理,以及如何調整兩種代幣的投資組合,以便您產生最大的 LP 頭寸,同時將 IL 降至最低。接下來會有很多的公式和數字。

Uniswap V2 回顧:交易者的角度

Uniswap V2 是一個自動化的做市商,它允許:

  • 交易者將一種資產換成另一種資產;
  • 流動性提供者 (LP) 提供流動性並賺取交易費用。

每個池有兩種代幣:X 和 Y。如果池內有 X~p~ 個 X 代幣和 Y~p~ 的 Y 代幣(也稱為池儲備),則池流動性 L 定義為:

深入分析 Uniswap V3 流動性供應的數學原理

目前池中代幣的比例定義了當前的交換價格 p:

深入分析 Uniswap V3 流動性供應的數學原理

如果交易者想要交換 y 個 Y 代幣,他們將 y 個代幣存入池中並收到 x 個 X 代幣。 x 由池使用以下等式決定:

深入分析 Uniswap V3 流動性供應的數學原理

這裡的ϕ是池費。對於 Uni V2 來說,它的數值是 0.3%。

現在假設當ϕ= 0 時,讓我們看看如果當前價格 p = 1,池儲備 X~p~=1,Y~p~=1,並且交易者想要交換 y= 1 個單位的 Y 代幣會發生什麼。

深入分析 Uniswap V3 流動性供應的數學原理圖 1:Uniswap V2 交易者的角度

交易者將收回 X 的 x = 0.5 代幣。池儲備和價格將更新為 X~p~ = 0.5, Y~p~ = 2, p = 4。

我們預期當前價格 p = 1 時 x = 1,但實際 x 金額會受到損失,我們稱之為滑點(sl= 0.5):

深入分析 Uniswap V3 流動性供應的數學原理

好消息是 sl→0,因為池流動性 L 增加或交換量減少,即對於足夠小的交換量,您以價格 p 交換的費用較小。

Uniswap V2 回顧:流動性提供者的角度

現在讓我們看看如果 p = 4,池準備金 X~p~ = 0.5,Y~p~ = 2,L = 1 並且流動性提供者想要放置 x = 0.25 的代幣 X 和 y = 1 的代幣 Y 會發生什麼。

深入分析 Uniswap V3 流動性供應的數學原理圖 2:Uniswap V2 流動性提供者的角度

在這種情況下,池的新儲備將為 X~p~ = 0.75、Y~p~ = 3 和 L² = X~p~·Y~p~ = 2.25,因此 L = 1.5 並且流動性提供者以 Uni V2 lp 代幣的形式收到 ΔL = 0.5 的流動性。現在,在每筆交易中,流動性提供者將收到ΔL/L=1/3 份額的費用。

在這個例子中,我們故意使用 x = 0.25 和 y = 1 作為流動性提供者的投資,因此 y / x = 4 = p。

如果 y / x≠p 會發生什麼?在這種情況下,一部分代幣Δx 或Δy 會被返還給流動性提供者,使得剩餘比率 (y-Δy)/ x = p 或 y / (x-Δx) = p。如果流動性提供者想要充分利用他們的代幣並獲得最大的流動性,他們首先必須交易他們的代幣,以便 y / x = p 然後將它們放入池中。

對於 Uni V2,調整您的代幣組合以獲得最大流動性非常簡單。 Uni V3 會怎麼樣呢?事實證明這越來越複雜。

Uniswap V3:單倉

2021 年 5 月,Uniswap 團隊推出了 V3。在 Uni V3 上,您可以將流動性置於任何價格區間 [pᵃ, pᵇ]。只要價格在 [pᵃ, pᵇ] 範圍內,您就有流動性 L 並賺取費用。當價格超出範圍時,您不會賺取任何費用,直到價格回到範圍內。

讓我們看看它是如何運作的。首先,讓我們考慮只有一個持倉且價格區間為 [pᵃ, pᵇ] = [0.25, 4] 的礦池。當前池準備金為 X~p~ = Y~p~ = 0.5,價格為 p = 1。在這種情況下,隨著交換發生且價格在變動,我們觀察到以下池行為:

深入分析 Uniswap V3 流動性供應的數學原理圖 3:Uniswap V3 單倉

這裡綠色曲線是用於交換的實際代幣儲備(真實流動性曲線),紅色曲線是虛擬流動性曲線,模擬用戶在 Uni V2 上進行交換。

只要價格在 [0.25, 4] 範圍內,池的行為就與擁有紅色流動性曲線的 UniV2 池完全相同。當價格越界時,虛擬流動性降至零,實際流動性集中在 X 或 Y 代幣中,不用於交換。

Uniswap V3:多倉

現在讓我們看看如果在 [pᵃ₁, pᵇ₁] 上有兩個流動性投資 x₁, y₁和在 [pᵃ₂, pᵇ₂] 上有 x₂, y₂會發生什麼。這些投資中的每一個都意味著(我們將在後面的章節中看到)虛擬流動性 L₁和 L₂

深入分析 Uniswap V3 流動性供應的數學原理圖 4:Uniswap V3 兩個倉位

可以看出,當兩個區間都覆蓋價格時,兩個實際儲備都被使用,池虛擬流動性等於流動性總和。當只有一個區間覆蓋價格時------僅使用其流動性。當價格在兩個區間之外時,池流動性為零(或者您不賺取任何費用)。

這為 Uni V3 提供了一個獨特的特點------分段流動性函數。當價格沿著虛擬曲線移動時,流動性價值在某些價格點(即流動性頭寸的邊界)上變化了一些 ΔL。您可以在圖 3 中看到在價格 pᵃ₁ 和 pᵇ₁ 處發生這種跳躍。

刻度和刻度間距

Uniswap V3 的實際情況比上圖中顯示的要困難一些。在真正的 Uni V3 中,您不能將流動性置於任意價格區間。取而代之的是,所謂的刻度在價格範圍內形成了一個離散的網格。刻度由公式定義(i 是整數):

深入分析 Uniswap V3 流動性供應的數學原理

對於每個池,還有一個刻度間隔的概念。刻度間距是刻度之上的另一個網格,它限制了您可以放置流動性的刻度。例如,對於 0.3%-費用的池刻度間隔是 60,這樣你可以只在每個 60 的刻度上放置流動性,例如,0, -60, 60, 120, -120, … 下圖顯示了刻度間距刻度(橙色)和刻度(黑色)

深入分析 Uniswap V3 流動性供應的數學原理圖 5:刻度和刻度間距

因為您的流動性價格區間界限只能是刻度間距刻度,所以任何空間刻度間隔內的流動性都是恆定的,並且只有在價格穿過刻度間距刻度時才會改變。

因此,我們有一個分段流動性函數,其中可能在刻度間隔刻度處發生跳躍(類似於圖 2)。

倉位的流動性價值

讓我們看看流動性 L 是如何計算的,給定初始代幣 x 和 y、價格區間 [pᵃ, pᵇ] 和當前價格 p。

深入分析 Uniswap V3 流動性供應的數學原理

從這些等式中可以看出,如果 x 和 y 代幣的比例不正確(Lx≠Ly),則一些代幣將返回給流動性提供者。這與我們在 Uni V2 中觀察到的行為類似。

但是對於 Uni V3,它更複雜,因為我們有分段流動性函數,在刻度間隔刻度處跳躍。在下一章中,我們將展示如何在 Uni V3 上以最有效的方式放置代幣。

有效的流動性提供

如果我們有一個由 x 個代幣 X 和 y 個代幣 Y 組成的投資組合,並且我們想為價格範圍 [pᵃ, pᵇ] 提供流動性,我們應該交換多少代幣 X 或 Y 以從中獲得最大的流動性?

為了回答這個問題,讓我們用 R = y / x 來表示------我們投資組合中代幣的比率和 rᵃᵇ(p)------最佳代幣比率,使得 Lx = Ly。從 Lx 和 Ly 的公式我們可以得出:

深入分析 Uniswap V3 流動性供應的數學原理

所以我們的目標是使 R = rᵃᵇ。

然而,這項任務比僅僅將 x 和 y 對齊到指定的比率 rᵃᵇ 稍微複雜一些。當我們開始將 x 交換為 y 或反之亦然時,池價格 p 開始變化,rᵃᵇ 也是如此。這種行為如下圖所示:

深入分析 Uniswap V3 流動性供應的數學原理圖 6:將 R 對齊到 rᵃᵇ

另一層複雜的是,隨著價格 p 的變化以及跨越分時間隔分時池流動性 L 也在變化!為了解決這個問題,讓我們首先了解在流動性 L 不變的情況下,當我們用代幣 Y 交換代幣 X 時,比率 R 如何演變。

從方程 L²=xy 和 p = y / x 很容易推導出:

深入分析 Uniswap V3 流動性供應的數學原理

因此,如果我們用 Y 交換 X,從 Y 中減去費用,交換後的價格結算為 p₁ (p₁ > p₀):

深入分析 Uniswap V3 流動性供應的數學原理

如果是用 X 交換 Y,則 p₁\< p₀,我們有:

深入分析 Uniswap V3 流動性供應的數學原理

下一個問題是:

R 在什麼比率時會穿過刻度間隔以及產生流動性變化?

如果我們將 R+ 表示為穿越上刻度的比率,R- 表示下刻度的比率,p₀是初始價格,p-、p+ 是各自在刻度上對應的價格,L 為刻度間隔的當前流動性,然後我們得到:

深入分析 Uniswap V3 流動性供應的數學原理

最後,我們已準備好解決問題。

首先,我們需要回答 2 個問題:

  • R > rᵃᵇ(p₀) 嗎?如果是,我們需要將 Y 交換為 X,否則的話將 X 交換為 Y。
  • 當我們交換時------礦池價格會跨越一個刻度間隔刻度嗎?如果否- 我們可以立即解決問題。如果是-我們需要調整我們的值,就像我們一直交換到刻度間隔,然後在新的流動性上重複我們的算法。

這些問題的答案將我們帶到了 4 個不同的案例中:

  • 在一個刻度間隔內用 Y 交換 X:R > rᵃᵇ(p₀), R+ ≤ rᵃᵇ(p+)
  • 在一個刻度間隔內用 X 交換 Y:R \< rᵃᵇ(p₀), R- ≥ rᵃᵇ(p-)
  • 在不同的刻度間隔中用 Y 交換 X:R > rᵃᵇ(p₀), R+ > rᵃᵇ(p+)
  • 在不同的刻度間隔中用 X 交換 Y:R \< rᵃᵇ(p₀), R- \< rᵃᵇ(p-)

情況 1:在一個刻度間隔內用 Y 交換 X:R > rᵃᵇ(p₀), R+ ≤ rᵃᵇ(p+)

深入分析 Uniswap V3 流動性供應的數學原理圖 7:在一個刻度間隔內將 Y 交換為 X。當我們從 Y 交換到 X 時,價格增加到 p₃,R 減少到 R+,而 rᵃᵇ 增加到 rᵃᵇ+。由於最初 R > rᵃᵇ 且 R+ ≤ rᵃᵇ+,因此可以保證 R = r 在刻度間隔內。

如果我們用 y 交換 x 並且交換後的價格穩定在 p₁,我們只需要確保 Ryx(p₁) = rᵃᵇ(p₁):

深入分析 Uniswap V3 流動性供應的數學原理

如果我們假設 z = √p₁ 並重新排列方程的項,我們將得到一個二次方程:

深入分析 Uniswap V3 流動性供應的數學原理

因此我們可以求解它並找到 p₁:

深入分析 Uniswap V3 流動性供應的數學原理

要交換的代幣 Y 的數量是:

深入分析 Uniswap V3 流動性供應的數學原理

情況 2:在一個刻度間隔內用 X 交換 Y:R \< rᵃᵇ(p₀), R- ≥ rᵃᵇ(p-)

圖 8:在一個刻度間隔內用 X 交換 Y。當我們從 X 交換到 Y 時,價格下降到 p₂,R 增長到 R-,而 rᵃᵇ 下降到 rᵃᵇ-。由於最初 R \< rᵃᵇ 並且 R- ≥ rᵃᵇ- 可以保證 R = r 在刻度間隔內。

這種情況與情況 1 非常相似,除了我們是將 X 交換為 Y,因此我們需要確保 Rxy(p₁) = rᵃᵇ(p₁):

深入分析 Uniswap V3 流動性供應的數學原理

與情況 1 類似,我們可以得到:

深入分析 Uniswap V3 流動性供應的數學原理

要交換的代幣 X 的數量是:

深入分析 Uniswap V3 流動性供應的數學原理

情況 3:在不同的刻度間隔中用 Y 交換 X:R > rᵃᵇ(p₀),R+ > rᵃᵇ(p+)

深入分析 Uniswap V3 流動性供應的數學原理圖 9:在不同的刻度間隔中將 Y 交換為 X。當我們從 Y 交換到 X 時,價格會增長到 p2,然後增長到 p₃,R 減少到 R+,而 rᵃᵇ 增加到 rᵃᵇ+。由於最初 R > rᵃᵇ 和 R+ > rᵃᵇ+,因此當我們交換到 R = rᵃᵇ 時,可以保證價格將跨越刻度間距刻度

在這種情況下,我們將 Y 交換為 X,直到 R = R+ 並且 p = p+ 並且我們處於具有新流動性的的新刻度間隔中。我們記得我們交換了多少個 Y 標記,以便稍後將它們添加到最終數字中。然後我們重新開始算法並重複,直到我們遇到案例 1。 那我們就重新定義:

深入分析 Uniswap V3 流動性供應的數學原理

情況 4:在不同的刻度間隔中用 X 交換 Y:R \< rᵃᵇ(p₀), R- \< rᵃᵇ(p-)

深入分析 Uniswap V3 流動性供應的數學原理圖 10:在不同的刻度間隔中將 X 交換為 Y。當我們從 X 交換到 Y 時,價格下降到 p₃ 然後到 p₂,R 增加到 R-,而 rᵃᵇ 減少到 rᵃᵇ-。由於最初 R \< rᵃᵇ 和 R- \< rᵃᵇ- 可以保證在我們交換到 R = rᵃᵇ 時價格將跨越刻度間距刻度

與情況 3 完全相似,除了我們將 X 交換為 Y,直到 R = R- 並重複直到我們遇到情況 2。我們重新定義:

深入分析 Uniswap V3 流動性供應的數學原理

結論

在 Uni V3 中以正確的比例提供流動性是一項非常複雜的任務。您需要考慮很多因素,例如刻度間隔內的不同流動性值。上面的算法描述了如何使用池數據來計算需要交換的代幣數量以獲得最高的流動性。

數字圖表可在此處獲得:

https://www.desmos.com/calculator/rqbrnapxbj

https://www.desmos.com/calculator/ys7kcfgjxe

https://www.desmos.com/calculator/ehdwkbtu7z

https://www.desmos.com/calculator/huzzwffze9

https://www.desmos.com/calculator/t9u9x8xgcy

在以後的文章中,我們計劃討論 Uni V3 的其他有趣方面,如無常損失、多頭投資組合、策略風險等。

Mellow Protocol 正在探索 AMM 的流動性提供和做市空間。您還可以在 此處
查看我們的初步研究論文。 Mellow 的目標是建立一個強大的工具生態系統,以消除市場低效率並為用戶創造成果。

我們不僅將其視為一種產品,而且將其視為複雜數學可以為 DeFi 領域帶來的演變。與 Uniswap 和 Curve 創新用戶交易體驗的方式類似,我們相信 LP 優化也在推動 tradfi 的可能性。

在接下來的文章中,我們將討論有關如何實施適當的再平衡策略的更多想法,並將繼續討論 DeFi 中更廣泛的主題。

鏈捕手ChainCatcher提醒,請廣大讀者理性看待區塊鏈,切實提高風險意識,警惕各類虛擬代幣發行與炒作,站內所有內容僅係市場信息或相關方觀點,不構成任何形式投資建議。如發現站內內容含敏感信息,可點擊“舉報”,我們會及時處理。
ChainCatcher 與創新者共建Web3世界