你所有的 Uniswap v3 流動性農業計算都是錯誤的! 這就是為什麼

2 x = 2 5

你知道這是錯誤的,但當你第一次看到它時,你會懷疑自己並認為:“也許我的計算有問題”。 正確的?

好吧,當我發現 Uniswap V3 用戶界面上顯示的流動性和 TVL(鎖定總價值)數據完全錯誤時,我的感受正是如此。

Uniswap 是最大的去中心化金融(DEFI) 項目 以太幣 和整個 blockchain 行業。 成千上萬的流動性提供者每天都使用這些數據來製定他們的投資策略。 那麼這些數字怎麼可能不准確呢?

我花了幾個小時試圖找出計算中的錯誤,你猜怎麼著? 我沒有犯任何錯誤。 這種情況甚至比 TVL 不准確更糟糕。

但是,讓我們一步一步地從問題開始。

問題

首先,什麼是 TVL,它是如何使用的? 簡而言之,TVL 被定義為當前由用戶委託給區塊鍊或協議的所有加密資產的美元價值。 例如,這些資產可能是去中心化交易所、橋接或借貸協議的總流動性,或 PoS 區塊鏈的總質押資產。

加密市場投資者和其他參與者在多種情況下使用 TVL:

  1. 評估協議的健康狀況。 這就是為什麼流行的協議在主頁上吹噓他們的 TVL。 更大的 TVL = 更多的用戶信任 = 更低的風險 = 穩定的利潤。
  2. 協議之間的比較。 如果我是加密交易者,我更喜歡使用具有更高 TVL 的 DeFi 工具,例如去中心化交易所或橋接器。
  3. 協議增長的測量。 看到協議或項目的 TVL 快速增長的投資者認為這是看好協議代幣價格的信號。

看來知道很重要 準確 TVL 號碼,對吧?

但是,如果我說有關 Uniswap v3 TVL 的最可用數據具有誤導性怎麼辦? 不過,對我來說最大的驚喜是官方 Uniswap 圖表應用程序 也是個問題! 我是這樣發現的。

我正在做一個流動性分析項目,將 Uniswap v3 的官方數據與我使用原始區塊鏈數據的計算進行比較。 此步驟對於遵守最高數據質量標準至關重要。 為了開始驗證,我選擇了一個流行的流動性池 USDC-WETH(0,3% 的費用水平)。

圖像202
MEV Bot 為 Ether 增加流動性

看看 Uniswap v3 上的 pool 3——它擁有令人印象深刻的 333 億美元的 TVL(基於撰寫本文時的 Uniswap 官方圖表)和 61 萬美元的健康日交易量。

我立刻遇到了一個問題:我計算出的 TVL 價值是 176 億美元,而不是 Uniswap 網站上報告的 333 億美元。 好的,所以錯誤發生了。 但在開始調試之前,我決定在最流行的以太坊區塊鏈瀏覽器上驗證 TVL, Etherscan. 從技術上講,每個 Uniswap v3 礦池都是一個智能合約。 因此,區塊鏈瀏覽器可以顯示池中擁有的代幣餘額,這就是 TVL。

圖像203
標準掉期交易。

我預計池的代幣餘額會比 Uniswap 報告的 TVL 大一點。 這是因為該池擁有流動性以及已累積但尚未領取的費用。 但這個餘額幾乎是 Uniswap 報告金額的一半,而且令人驚訝的是,這與我的計算結果相同!

逐個資產比較流動性也顯示出巨大差異。 此時,我意識到這個錯誤與我的數學技能無關。

圖像205
這就是我們所說的“流動性狙擊”。

但這怎麼會發生呢? 經過研究,我發現Uniswap依賴於去中心化的區塊鏈索引服務 . 通過這項服務,任何開發人員都可以為特定的區塊鏈數據用例添加個人分析代碼(稱為子圖),並通過 API 提供分析。

Uniswap Labs 為 Uniswap 協議分析創建了自己的子圖,並通過 圖形託管服務. 好在它的代碼是 公開的. 然而,壞事是它的 TVL 計算錯誤。

對代碼的簡要分析表明,它考慮了所有掉期和流動性事件,但不考慮費用。 Uniswap 礦池對每次交換收取 0.01% 到 1% 的費用。 該費用從交易資產中扣除,併計入流動性提供者。 反過來,流動性提供者可以隨時收取應計費用。

但是,當前的 Uniswap v3 子圖顯示的數字好像從未累積和收取任何費用。 因此,Uniswap v3 TVL 數據在每次交換時都偏離了現實。

你可能想知道:“在寫這篇文章之前,你有沒有在 GitHub 上提交過問題單?” 是的,這是我發現錯誤後的第一個意圖。 你知道嗎? 那個問題是 已登錄,由核心開發者於 2021 年 XNUMX 月創建!

那麼為什麼這個問題沒有解決呢? 我不知道。 在發現此錯誤時,該錯誤可能可以忽略不計。 但是,這是一個累積誤差,會隨著每次交換而增長。 因此,隨著池中費用和交易量的增長,由此產生的 TVL 與錯誤的差異將導致與現實的更大差異。 我們可以看到,在像 USDC-ETH 這樣的大池中,費用更高,為 0.3%——它已經失控了! 目前幾乎是真實數字的兩倍。

讓我們驗證總 TVL

好的,我們現在知道各個池中的 TVL 數字是失真的。 我們將在下文探討這將如何影響投資決策。 但在我們開始之前,讓我們看看這些錯誤如何影響 Uniswap v3 協議的總 TVL。 在撰寫本文時,據報導此 TVL 的價格接近 $12b。

您不必成為數據科學家就能發現這裡有問題。

圖像207

我們可以在上面看到,據報導 TVL 在 500 年 4.5 月 6 日從 2022 億美元緩慢但穩定地增長到 254b 美元。然後發生了一些瘋狂的事情,TVL 在 7 年 2022 月 2,5 日被報導為 10b 美元。這比 20 倍多整個以太坊網絡有史以來最高的 TVL——一天之內! 顯然,這是數據中的錯誤。 在接下來的幾週內,據報導 TVL 為 $XNUMX-XNUMXb。

在這一點上,我對 ​​Uniswap 分析數據失去了所有信任。 但是我們怎麼知道真正的 TVL 呢? 我有兩個選擇。

選項 1 — 分叉並修復 Uniswap v3 子圖。 這個選項的壞處是子圖重新索引需要幾天時間。 而且我不喜歡 The Graph 使用的 GraphQL 語言。

幸運的是,我有選擇 2—— 數據薄荷的所有 Uniswap v3 和 Ethereum 數據的高性能分析數據庫,可隨時用於復雜的在線查詢。

經過一些實驗,我創建了以下算法來進行準確的 TVL 計算。 檢查下面的分步過程。

  1. 使用這兩個步驟計算所有現有 Uniswap v3 池的 TVL。
    1. 將所有 ERC-20 代幣轉賬添加到礦池合約(這包括所有無人認領的費用)並匹配上的代幣餘額 Etherscan
    2. 添加所有流動性事件,傳入和傳出,然後將所有交換事件添加到 費用帳戶
  2. 比較兩種方法並確保不存在無法解釋的差異
  3. 刪除掉期少於 50 次或 0.00000000000001 代幣數量的廢棄和空池(檢測到 7,863 個池(包括 2,083 對帶馬厩),我的算法將 112 個池刪除為空/廢棄)
  4. 為每個代幣找到穩定幣的路徑,將池 TVL 轉換為美元價值
  5. 移除美元價值受損的低流動性資金池,因為某些資金池在完全移除流動性後可能顯示價值不足(以下圖為例)
圖像208
  1. 將所有剩餘貨幣對的 TVL 轉換為美元價值並添加它們

經過多次交叉檢查,我想出了一個 TVL 計算。 我開始它,想在計算執行時喝咖啡,但在我站起來之前它就完成了。 這是使用高性能分析數據庫的唯一缺點。

你準備好看到結果了嗎?

圖像210

差不多 少4倍 比報告的 $11,8b… 由你來得出結論。

免責聲明: 我的計算可能有錯誤。 在面向企業客戶的數據項目中,我們使用記錄方法、自動測試和許多其他工具來實現最高的數據質量。 對於像這樣的個人研究項目,這些工具將是矯枉過正。 這項研究突出了可用數據中的明顯問題,而不是提供最終解決方案。

好的,我們將修復 TVL 計算——它會有幫助嗎?

問題不在於錯誤的數字,而是我們根據這些數字做出的決定。 例如,流動性提供者的大多數利潤計算器都使用這些數字進行預測。

但是,修復 TVL 計算並不難。 Uniswap Labs 要么在他們的子圖代碼中修復它,要么計算器開發人員開始使用其他數據源。 核心問題是我們是否可以確信計算器的預測是正確的。

我做了一些計算,簡短的回答是——差遠了.

一個大膽的主張,我知道。 許多流動性提供者使用現有的計算器並影響花費數千萬美元的決策。 但是,讓我們完成計算步驟,以便您做出自己的判斷。

首先,讓我們回顧一下 Uniswap v3 協議的一些核心概念。

它的主要創新之一是集中流動性。 本質上,使用 Uniswap v3,您可以選擇您希望資金用作流動性提供者的價格範圍。 這是一個了不起的概念,可以為協議用戶帶來巨大的價值。 流動性提供者限制了他們對無常損失的敞口,交易者可以在波動性較低時享受較小的價格滑點。 但所有這些 潛力 好處是有代價的 - 複雜性.

圖像211

因此,我們想了解 Uniswap v3 流動性提供者的收益是如何計算的。

在 Uniswap v3 中,流動性提供者選擇提供流動性的價格範圍。 一旦價格在此範圍內,他將獲得掉期費用的分成。 乍一看,流動性提供者希望其流動性頭寸的價格範圍盡可能寬。 但是,流動性在此範圍內按比例分配。 因此,範圍越廣,每筆交易的掉期費用就越低。

圖像211

在此示例中,選項 A 顯示流動性提供者選擇了較寬的價格範圍,而選項 2 顯示了相同金額的較窄價格範圍。 假設在這兩種情況下,價格都在所選價格範圍內,流動性提供者在選項 B 中獲得 3 倍以上的費用。但是,如果價格波動更大,流動性提供者最終可能在選項 A 中獲得更高的利潤。

因此,實際上,選擇正確的價格範圍依賴於在錯過價格的風險和每筆交易獲得較低迴報之間找到最佳平衡。

還有一個參數會影響流動性提供者的利潤,並且經常被忽視。 我不知道任何考慮它的 LP 利潤計算器,這個參數可以改變一切。 你現在想知道這是什麼。 這是LP的分佈。 考慮以下示例:

圖像212

在此示例中,兩個流動性提供者(LP1 和 LP2)擁有頭寸。 LP1 的頭寸窄幅為 3 美元。 LP2 擁有 5 美元的寬頭寸。 在這種情況下,如果價格沒有超出 LP1 的持倉範圍,他將獲得比 LP3 多 2 倍的費用。 那是因為 LP2 在這個範圍內只有 1 美元。 而這 1 美元正在與 LP3 的 1 美元競爭。

如果您查看任何 Uniswap v3 礦池的流動性分佈,您會發現它並不統一。

圖像213

門檻越高,競爭越高。 流動性提供者需要在選擇有競爭力的範圍和價格下跌概率較低的範圍之間找到平衡。 這就是為什麼這種分佈在 LP 利潤預測和戰略制定中發揮重要作用的原因。 唯一的問題是……我不確定這個分佈是否正確計算。

好像這還不夠——流動性狙擊手

成為流動性提供者就是猜測價格、競爭狀態和交易量。 如果 LP 有一個願望,那就是事先了解交易的未來以調整流動性頭寸。

但是如果我告訴你這是可能的呢?

在研究過程中,一些不尋常的流動性提供者引起了我的注意。 他們每天多次添加和刪除大量流動性頭寸(超過 10 萬美元)。 更令人驚訝的是,他們總是在同一個區塊中添加和移除流動性。

讓我們看一個例子:

圖像214

我們有三筆交易,都在區塊 15413416,位置 3-5,以自下而上的順序執行。 第一個使用 Execute 方法的交易是一個名為“MEV Bot”的合約,為 USDC-WETH 池增加了 22 萬美元的流動性。

圖像215

第二筆交易是通過 WETH 從 USDC 到 DogeChain 的交換。 這是一筆價值約 16,500 美元的普通掉期交易。

圖像216

第三筆交易又是“MEV Bot”,從 USDC-WETH 池中移除了 22 萬美元的流動性。

圖像217

該示例中發生的事情稱為“流動性狙擊”。 讓我解釋一下這是如何工作的:

  1. 有人發送了一筆交易,將 USDC 交換到 DogeChain
  2. MEV Bot 在內存池中檢測到此交易,並使用 Flashbots 技術或類似技術激活了與礦池的私有鏈接
  3. MEV Bot 向礦工支付了一筆掉期交易和兩筆按特定順序進行的交易,以允許提取價值
  4. MEV Bot 在一個非常窄的價格範圍內增加瞭如此多的流動性(22 萬美元),因此有效地,從特定的 USDC-DogeChain 交易中獲得的所有費用利潤都計入了他
  5. 然後 MEV Bot 移除流動性並賺取費用(約 35 美元)

因此,他扣除汽油費後的毛利潤約為 30 美元。 不是很多? 是的,但他每分鐘多次執行此策略,所有這些都加起來。 你可以 自己檢查一下.

作為流動性提供者,這對您意味著什麼? 這意味著流動性狙擊手可能會大幅削減您的費用利潤。

結論

讓我總結一下我的研究結果:

  1. Uniswap v3 圖表中的 TVL 數據非常不准確。 所有依賴官方 Uniswap v3 子圖的分析工具都存在相同的錯誤。
  2. Uniswap v3 TVL 總額為 3,14b 美元,而官方網站報告的為 11,8b 美元(在撰寫本文時)。
  3. Uniswap v3 流動性提供者的計算器對現實生活中的策略幾乎沒有價值,因為它們沒有考慮競爭和流動性狙擊手。
圖像218

幸運的是,您現在可以更好地了解 Uniswap v3 流動性池在現實生活中的運作方式,並可以相應地調整您的研究。

我無法提供財務建議,但我認為只有 2 個選項可以建立一個突出的流動性提供策略:

  1. 簡單. 使用歷史性能數據。 嘗試一些小額流動性頭寸,看看哪些選項更有效。 顯然,這僅在市場穩定的假設下有效。
  2. 高級. 進行研究並相應地優化 LP 策略。 如上所述,這需要深入了解 Uniswap v3 協議、數學和博弈論能力,以及實時處理大量數據的強大數據分析工具。

這兩種選擇有一個共同點——您的決策基於數據,而不是直覺或隨機工具。 有時處理數據很困難,但它有回報。

在 Datamint,我們隨時為您提供自定義數據項目的幫助。

願數據與您同在!

資料來源:https://www.cryptopolitan.com/uniswap-v3-liquidity-farming-calculations/