ForesightNews文章 2024年11月10日
三種衡量 AMM 收入表現的觀點
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文探讨了自动化做市商(AMM)池子中流动性提供者 (LP) 如何衡量投资回报率的问题。通过一个假设的 UNI-USDC 池子交易示例,文章分析了三种不同的视角:交易费用视角、流动性增长视角和池子总价值视角。这三种视角分别从交易费用、池子流动性变化和池子总价值变化来计算 ROI,并揭示了不同视角下计算结果的差异。文章进一步深入探讨了 AMM 的收入来源,指出交易费用可能并非真实存在,而是通过调整报价公式来实现的。最后,文章总结了三种视角下的 ROI 计算方式,并探讨了 AMM 未来可能的发展方向。

🤔 **Perspective 0: No fee**:作为对比组,AMM 池子不收取任何费用,K 值始终保持不变,没有收入产生,也无法吸引流动性提供者。

💰 **Perspective 1: Trading fee**:Uniswap v2 等 DEX 通过收取交易费用作为收入,但文章分析发现,费用收入的计算方式存在争议,其本质可能是通过调整报价公式来实现的,而非真实的手续费。

📈 **Perspective 2: Liquidity growth**:将池子流动性定义为衡量指标,认为流动性的增加代表着投资回报,但这种视角过于抽象,没有明确说明收入来源。

📊 **Perspective 3: Pool total value**:通过观察池子内代币余额与市场价格的变化计算 ROI,发现 ROI 的结果受计价单位的影响很大,并揭示了 AMM 池子的收入来源并非交易费用,而是通过买卖代币操作获得的盈利。

💡 **Pricing formula transformation**:文章分析了交易费用参数对报价公式的影响,指出该参数导致 AMM 以不同的买价和卖价公式进行报价,并探讨了其对流动性提供者和交易员的影响。

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

而兌換代幣的公式會是

我們將交易抽成設為 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.

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

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

AMM DeFi 流动性提供者 投资回报率 报价公式
相关文章