三種衡量 AMM 收入表現的觀點
2024-11-10 09:32
Taipei Ethereum Meetup
2024-11-10 09:32
订阅此专栏
收藏此文章

AMM 的收入來自哪裡?

Introduction

Automated Market Maker (AMM) 是在去中心化金融 (DeFi) 領域中一個常見且重要的代幣交換機制。AMM 池子內通常有兩種以上的代幣,並透過固定的定價公式與池子內代幣的數量來自動調整交易的報價,而把代幣存進池子內的角色被稱為流動性提供者 Liquidity Provider (LP),LP 所獲得的報酬則來自於 AMM 池子產生的交易手續費。

而作爲一名流動性提供者,其中之一個首要關心的議題就是,要如何衡量 AMM Pool 的投資報酬?AMM Pool 是如何收取交易費用的?交易手續費從哪裡來,又會到哪裡去。如果你還是一名 Builder 的話,你可能還關心 AMM 作為一個 DeFi 的基礎元件,這種機制是否可以永續運作下去呢?

這篇文章我將梳理三種不同看待交易費收入的觀點,以及比較這些不同觀點下所計算出來的投資報酬,試著回答在這三種觀點下 AMM 收入產生差異的原因。

我不會去說服你哪種方式才是對的,哪種是錯誤的,而身為一名投資人,抱持著一種以上的觀點是必要,不然你就會感到茫然。讓我們看看這篇 Reddit 上的討論:Is being a LP actually profitable in 2024?,截至 2024 年 11 月總共有 161 個 upvote、165 則 comment,而這篇的發文者也不只在一個版上發相同的文章,在 2024 年仍有有人對流動性提供者是否有利可圖抱持疑問,並獲得廣泛的回響,顯然成爲一個能獲利的流動性提供者有多麽不容易。

這篇文章受到 EthCC[7] 一場演講的啟發,這篇文章中的部分內容會來自於這場演講的東西,並延伸其觀點,建議大家可以先去看看哦。
https://ethcc.io/archives/fixing-objectively-bad-models-in-lp-performance-evaluations

An AMM pool example

為了讓接下來的內容更容易被理解與展現每個觀點的差異,讓我們用一個假想的例子來說明,假設有一個代幣叫 UNI ,它目前的價格是 5 USDC,我們創建了一個用恆定乘積公式報價的 AMM 池子,並在其中存進了 10 UNI 與 50 USDC,在這個池子中,我們把 UNI 當作是 Base token,而 USDC 是 Quote token,接著有一連串的交易按照順序發生,分別是

  • 買入 1 顆 UNI
  • 賣出 1 顆 UNI
  • 賣出 1 顆 UNI
  • 買入 1 顆 UNI
  • 買入 10 顆 UNI
  • 賣出 1 顆 UNI

讓我們一起思考看看這個 AMM 池子最終產生了多少投資報酬吧。

P.S. 這裡的“買入”與“賣出”是以流動性提供者的視角來看,如果是流動性提供者買入 1 UNI ,那也就是交易者賣出 1 UNI ,反之亦然。
P.S. 如果現實世界中也有一個代幣叫 UNI,並且價格也剛好在 5 USDC 附近,那一定是一個巧合~

Perspective 0: No fee

首先,我們考慮一下沒有收取任何費用的情況,來作為比較的對照組。

根據如下的恆定乘績公式,K 是一個常數,x₀ 為 base token 的初始數量,y₀ 為 quote token 的初始數量。

移項一下,我們可以得到報價公式

上述的交易按照順序執行的結果為

| UNI balance | USDC balance | K   | UNI change | USDC change | Effective price |
|-------------|--------------|-----|------------|-------------|-----------------|
| 10 | 50 | 500 | 1 | -4.545455 | 4.545455 |
| 11 | 45.454545 | 500 | -1 | 4.545455 | 4.545455 |
| 10 | 50 | 500 | -1 | -5.555556 | 5.555556 |
| 9 | 55.555556 | 500 | 1 | 5.555556 | 5.555556 |
| 10 | 50 | 500 | 10 | -25.000000 | 4.545455 |
| 20 | 25 | 500 | -1 | 1.315789 | 1.315789 |

我們可以觀察到以下幾件事情:

  • 不管交易如何進行,K 始終保持不變
  • 不管是先買入 1 UNI 後賣出 1 UNI ,還是先賣出 1UNI 後買入 1 UNI,池子內代幣的數量依然不變(無任何收入產生)

如果 AMM 池子沒有投資報酬收入,那也就沒有人會有任何動機想成為流動性提供者,該代幣在 DeFi 市場中也就無法建立起流動性。

因此如果我們想讓 AMM 能夠持續運作,就必須要為流動性提供者提供額外的投資收入來吸引代幣持有人成為流動性提供者,一個直觀的想法是在每一筆交易上抽取一小部分的交易費用作為收入,這也是大多數 DEX 的收入模式,其中以 Uniswap v2 最為代表,Uniswap v2 實際的收費方式則是在池子收款的代幣上先抽取一小部分作為交易費用,然後將剩下的部分用上述的報價公式來兌換代幣,因此接下來我們以 Uniswap v2 為例,並以三種不同的觀點來衡量這個收入模式的績效表現。

Perspective 1: Trading fee

讓我們開始在每一筆的交易上都收取一部分的交易抽成 (δ, 0 < δ < 1),因此每一筆交易的費用為

而兌換代幣的公式會是

我們將交易抽成設為 0.3% (δ = 0.003) ,將上述例子中的交易按照順序執行,得到的結果為

| UNI balance | USDC balance | K          | UNI change | USDC change | Effective price | Fee           |
|-------------|--------------|------------|------------|-------------|-----------------|---------------|
| 10 | 50 | 500 | 1 | -4.531818 | 4.531818 | 0.003 UNI |
| 11 | 45.468182 | 500.150000 | -1 | 4.560500 | 4.560500 | 0.013681 USDC |
| 10 | 50.028681 | 500.286815 | -1 | 5.575469 | 5.575469 | 0.016726 USDC |
| 9 | 55.604150 | 500.437353 | 1 | -5.543734 | 5.543734 | 0.003 UNI |
| 10 | 50.060417 | 500.604165 | 10 | -24.955118 | 2.495512 | 0.03 UNI |
| 20 | 25.105299 | 502.105978 | -1 | 1.325307 | 1.325307 | 0.003976 USDC |

總結一下最終的結果:

  • 根據交易手續費的定義,在完成了這幾筆交易後,池子的總收入為 0.036 UNI 和 0.034384 USDC
  • 各別計算兩種代幣的投資報酬率:UNI ROI = 0.036 / 10 = 0.36%;USDC ROI = 0.034384 / 50 = 0.068768%
  • 以 UNI 為結算單位,整個池子的 ROI = (0.036 + (0.034384 / 1.391085 ))/ 20 = 0.3%
  • 以 USDC 為結算單位,整個池子的 ROI = ((0.036 * 1.391085) + 0.034384) / 100= 0.084463%
  • 由於手續費收入是與交易量直接相關,而在例子中只有 6 筆交易,所以上述的 ROI 才會這麼低,不過當隨著交易量上升,手續費收入也可能會變得很可觀。

而與不收取交易費的情況 (Perspective 0) 相較,我們可以觀察到:

  • K 值隨著交易量再逐漸增大。由於手續費的存在,導致每次交易後池子內的代幣數量乘積不守恆。
  • 並且每一筆交易的報價都比無收取手續費的情況還差

而在仔細觀察池子那個各代幣的餘額變化後,我們將會發現一個有趣的現象,以第一筆交易為例,我們認為收取了 0.003 UNI 的交易費用,但是在與不收取手續費的情況相較,池子內的 UNI 餘額其實並沒有任何不同,反倒是 USDC 的餘額多了 0.013637,那池子的收入究竟是 0.003 UNI 還是 0.013637 USDC 呢?或是手續費收入其實是一場幻覺呢?

Perspective 2: Liquidity growth

不管收入究竟是 0.003 UNI 還是 0.013637 USDC ,可以假定有部分代幣收入進入池子內,因此池子的流動性在交易後的確比交易前更多了,可以從 K 值的增加來應證這點。

我們可以將流動性 (L) 定義為

將上述例子中的交易按照順序執行,流動性變化的結果為:

| UNI balance | USDC balance | Liquidity | UNI change | USDC change |
|-------------|--------------|-----------|------------|-------------|
| 10 | 50 | 22.360679 | 1 | -4.531818 |
| 11 | 45.468182 | 22.364033 | -1 | 4.560500 |
| 10 | 50.028681 | 22.367092 | -1 | 5.575469 |
| 9 | 55.604150 | 22.370457 | 1 | -5.543734 |
| 10 | 50.060417 | 22.374185 | 10 | -24.955118 |
| 20 | 25.105299 | 22.407721 | -1 | 1.325307 |
| 19 | 26.430606 | 22.409406 | 0 | 0 |

我們可以發現:

  • 在完成了這幾筆交易後,最終計算出來的 Liquidity ROI = (22.409406- 22.360679) / 22.360679 = 0.217913%。
  • Liquidity ROI 不受池子內各個代幣價格變化的影響
  • 流動性 (L) 在每次完成交易後都會遞增

Liquidity ROI 看似是一個公正的指標,可以用來解釋 AMM 池子的投資報酬,但是含義是相當抽象的,它意味著把價值 50:50 的 UNI 和 USDC 存入池子內,在經過一連串的交易後,還是可以領出價值 50:50 的 UNI 和 USDC ,但這不表示 UNI 的數量或是 USDC 的數量就會變得比一開始更多了。也就是說,這個觀點迴避了收入來源的問題,並且相信流動性的增加等於投資報酬。

Perspective 3: Pool total value

顯然,以上兩種觀點都無法明確說明 AMM 池子的收入來源,當無法正確的理解一項投資的收入模式,也就無法正確的計算與衡量投資報酬。

為了回答在此機制下 AMM 池子的收入來自何處,讓我們先拋開手續費的概念,直接觀察池子內代幣餘額與現貨價格的變化,並以此來計算看看池子內資產的總價值與投資報酬率 (ROI)。

以 Quote token 結算,池子總價值計算公式為

以 Base token 結算,池子總價值計算公式為

將上述例子中的交易按照順序執行,池子資產總價值的變化結果為:

| UNI balance | USDC balance | Total value in UNI | Total value in USDC | UNI change | USDC change | Effective price |
|-------------|--------------|--------------------|---------------------|------------|-------------|-----------------|
| 10 | 50 | 20 | 100 | 1 | -4.531818 | 4.531818 |
| 11 | 45.468182 | 22 | 90.936364 | -1 | 4.560500 | 4.560500 |
| 10 | 50.028681 | 20 | 100.057362 | -1 | 5.575469 | 5.575469 |
| 9 | 55.604150 | 18 | 111.2083 | 1 | -5.543734 | 5.543734 |
| 10 | 50.060417 | 20 | 100.120834 | 10 | -24.955118 | 2.495512 |
| 20 | 25.105299 | 40 | 50.210598 | -1 | 1.325307 | 1.325307 |
| 19 | 26.430606 | 38 | 52.861212 | 0 | 0 | 0 |

總結一下最終的結果:

  • 當以 base token 結算,可以得出 ROI = (38–20) / 20 = 90%。
  • 當以 quote token 結算,可以得出 ROI = (52.861212–100) / 100 = -47.138788%。
  • 可以發現以不同的代幣計價進行計算時,會得到完全相反的投資報酬,這是因為假設當 base token 相對於 quote token 變便宜時,以 base token 計價的話,總價值的數量會變得更多,ROI 看起來也會很漂亮,但以 quote token 計價的話,總價值的數量會變得更少,ROI 也會可能會變為負值。

現在讓我們以 quote token 計價來看看每一筆交易都發生了什麼事情。

  • 第一筆交易中,池子買入 1 顆 UNI,此時有效價格為 4.531818 USDC。
  • 第二筆交易中,池子賣出 1 顆 UNI,此時有效價格為 4.560500 USDC。
  • 我們可以發現這是一組先買低後賣高的策略,在這組交易中池子賺了 0.028682 USDC。
  • 第三筆交易中,池子賣出 1 顆 UNI,此時有效價格為 5.575469 USDC。
  • 第四筆交易中,池子買入 1 顆 UNI,此時有效價格為 5.543734 USDC。
  • 我們可以發現這是一組先賣高後買低的策略,在這組交易中池子賺了 0.031735 USDC。
  • 第五筆交易中,池子買入 10 顆 UNI,此時有效價格為 2.495512 USDC。
  • 第六筆交易中,池子賣出 1 顆 UNI,此時有效價格為 1.325307 USDC。
  • 我們可以發現這是一組先買高後賣低的策略,第六筆交易的 UNI 賠本賣出,損失了 1.170205 USDC。
  • 以此類推…

在此一觀點下,我們可以得到到以下結論:

  • 不管是以交易員的視角還是以流動性提供者的視角來看,手續費用其實並不存在於交易中。
  • AMM 池子的獲利來源與交易員一樣是對代幣進行買賣操作,當賣出的收入 (sell amount * average sell price) 大於買入的成本 (buy amount * average buy price),就會獲利,反之則會賠錢。
  • AMM 池子的獲利其實並沒有與交易量直接相關,反而跟交易成交的順序相關,因為交易執行的順序會影響成交價格的變化,因而影響 AMM 池子的獲利能力。
  • 因此在此一觀點下,我們可以將自動做市商理解為被動的交易策略,此策略完全不考慮當前池子的盈虧,永遠以池子內的代幣餘額來調整報價,這顯然對流動性提供者是極爲不利的。

Pricing formula transformation

既然交易費用並不存在,那之前引入被稱為交易抽成的參數 (δ) 究竟對報價公式產生了什麼影響呢?

讓我們看看含有 δ 報價公式,整理一下前面的方程式

計算 Marginal price (Spot price)

各別對 x 從 x 到 $x + Δx 積分,和對 y 從 y 到 y + Δy 積分,可以得到以下方程式 (bonding curve)

對以上方程式作圖,看看報價曲線發生了哪些變化

我們可以發現以下幾點:

  • δ 的存在導致 AMM 以兩條不同的訂價公式在進行報價
  • 一條為買價公式的曲線,一條為賣價公式的曲線,兩條曲線在當前代幣餘額的點上相交。
  • 買價公式與賣價公式依然屬於恆定乘積公式,不過都不是以代幣比重 50:50 來報價。在交易員賣 UNI 時,會將池子內 UNI 餘額的佔比縮小來報價,而交易員買 UNI 時,會將池子內 USDC 餘額的佔比縮小來報價。
  • 對交易員來說,賣價公式的報價相對於原始公式都更低價,買價公式的報價相對於原始公式都更高價,但這不保證對流動性提供者來說隨時都能夠進行買低賣高的策略。
  • 當有連續賣出或買入代幣時,並不會讓流動性增加,因為代幣餘額變化仍然在同一條曲線上移動。一定要有賣出和買入都發生時,流動性才有可能增加或減少。

Where does the revenue come from?

現在讓我們回頭看看之前對於 AMM 實際收入所提出來的疑問。

池子在買入 1 顆 UNI 後,所產生的手續費收入究竟是 0.003 UNI 還是 0.013637 USDC 呢?或是手續費收入其實是一場幻覺呢?

在這三種觀點下,我們將分別得到三種不同的答案。

第一種觀點根據產品規格與定義,手續費收入會是 0.003 UNI。

第二種觀點從流動性的角度去觀察,在每一筆交易後,流動性都會些微地成長,而流動性成長的來源正好是因為 USDC 的餘額多了 0.013637 ,這或許可以間接地被解釋為一種收入。

第三種觀點剖析了池內代幣餘額變化的過程,發現所謂的手續費收入並不存在於這個過程中, 由於引入 δ 參數,使得 AMM 採用的訂價曲線 (bonding curve) 從 K = X * Y 變成了 K = X ^ ( 1 — δ) * Y 和 K = X * Y ^ ( 1 — δ),這僅僅只造成了報價上的變化。因此當池子買入 1 UNI 所花費的 USDC 應該被視爲一種成本,只有當這顆 UNI 被賣出時,才會產生收入,有可能賺錢,也有可能賠錢。

哪一種觀點對你來說更為合理呢?

第一種手續費收入的詮釋是最為常見的,Uniswap Explore上統計的費用收入與各個 DEX 網頁上顯示的 APY 也都是類似的計算方式。第二種流動性成長的觀點雖然實際上沒有人用這種方式來評估,但是它也是相對直觀,與第一種觀點互補,這讓決大多數的加密貨幣投資人相信 AMM 是一種具有生產性的資產。

第三種觀點與前兩種觀點是截然不同的,這種觀點似乎有點違反常理,但是當你仔細想想卻十分合理,相信很多流動性提供者們在贖回代幣後,會將兩種代幣換算成美元價值,以此來計算 ROI ,而不是用手續費收入來計算 ROI,大多數的時候將會發現你的 ROI 與當初在網站上看到的 APY 有著頗大的差距。第三種觀點則能夠解釋會有這個差距的原因,因為手續費並不存在,倉位會賺錢還是賠錢只是這段時間內代幣交易的結果。

Conclusion

這篇文章中分析了三種觀點來衡量 AMM 池子績效表現,並且將它們都與無收費的情況進行對比,嘗試解釋 AMM 池子的收入模式,收入模式包含了收費來源與收費方式。我們總共得到 7 種 ROI 的計算方式,在我們的例子中,這 7 種 ROI 分別是:

  • Single side trading fee ROI for UNI = 0.36%
  • Single side trading fee ROI for USDC= 0.068768%
  • Total trading fee ROI in UNI = 0.3%
  • Total trading fee ROI in USDC= 0.084463%
  • Liquidity ROI = 0.217913%
  • Pool total value ROI in UNI = 90%
  • Pool total value ROI in USDC= -47.138788%

由於我們比較的先決條件都是同一個 AMM 池子、一樣的代幣對、一樣的初始狀態、一樣交易過程和一樣報價數學模型,對交易原來說他們成交價格也沒有任何不同,因此造成這些 ROI 有如此差異的原因來自於流動性提供者的主觀因素,包括

  • 流動性提供者所選擇的計價單位: 當計價單位本身在通膨時,所有資產的價格都會隨之升高,ROI 自然也會比較漂亮,反之亦然。在加密貨幣投資領域中,這會關系到投資人是以幣本位、美元本位、還是本國貨幣本位來看待投資機會,以不同的本位來評估投資績效將會得到完全不同的結論。
  • 對收入來源的詮釋: 這一點可能會有相當大的爭議,畢竟一間企業賺錢的手法應該是一客觀事實才對。在同樣的收入模式下,即是給不同的會計師依照同樣的會計原則,也應該產生出類似的財務報表,如果產生出不一樣報表,在假定會技師是誠實的情況下,那一定是有一方在收入項目做手腳。不過 AMM 的創新之處就在於把整個交易過程給數學形式化,因此即使是同樣的數學模型,自然也可能會產生不同的詮釋。

當我們試著把 AMM 理解為被動的交易策略,就會發現作為一名流動性提供者所掌握用以制訂策略的參數與工具是相當不足的,這會讓流動性提供者在 DEX 市場中處於非常劣勢的位置,而可能未來被動的流動性提供者的數量與投資額將會越來越少或是會有越來越多的流動性提供者從被動投資轉變成更加主動。

盤點一下目前市場上幾個流動性提供者所能操作的主流做法:

  • 手續費抽成:以被動交易策略的觀點 (Perspective 3) 中,手續費抽成不應該被詮釋成手續費抽成,它調整的其實是報價曲線的偏移量,但這種偏移量並無法為流動性提供者產生直接的交易優勢。
  • 集中流動性:按照 Uniswap V3 的説法,將流動性集中在某段價格區間能夠為流動性提供者提高資金運用效率,首先已經過這幾年,得為這個說法打一個大大的問號(以後可以專文來討論)。但是集中流動性的缺點是顯而易見的,它限縮了交易策略所能反應的價格,如果想使交易策略隨時保持運作狀態,那需要強迫流動性提供者主動地調整價格區間。

雖然最近這一年 AMM 似乎沒有明顯進展,但是現存的 AMM 的機制仍然並不完美,除了改進報價公式之外,AMM 應該還有很多需要改進的地方,我試圖在最後提供幾個方向,期待未來有更多有趣的 AMM 出現。

  • 有必要直接將買價公式與賣價公式區分開來,讓交易員與流動性提供者都可以計算當前的 bid price 和 ask price。
  • 同時,也需要將做多與做空的部位區分在不同的池子中進行個別計算。
  • AMM 的報價除了根據池內代幣餘額自動調整之外,應該也需要將過往交易紀錄與當前盈虧納入到報價模型之中。
  • 更多自動調整倉位的方式和工具。
  • 如果大家有其他想法,歡迎一起討論。

三種衡量 AMM 收入表現的觀點 was originally published in Taipei Ethereum Meetup on Medium, where people are continuing the conversation by highlighting and responding to this story.

【免责声明】市场有风险,投资需谨慎。本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。

Taipei Ethereum Meetup
数据请求中
查看更多

推荐专栏

数据请求中
在 App 打开