如何追蹤 Uniswap V3 LP 策略的歷史表現?這裡有回測方法


任何 Uniswap LP 頭寸的成功都取決於兩個基本組成部分:

無常損失:由於我們存入資金的價格與我們平倉時的價格之間的差異而造成損失的風險

由池支援的交易產生的費用

DeFi 的目標是幫助使用者理解和模擬這兩個元件的影響,並幫助估計可能的結果。

無常損失可以用數學解釋清楚,這裡提供了幾種視覺化的方法來支援使用者模擬價格變化對投資的影響。


相反,產生的費用是高度不確定的;我們不能建立精確的模型來確定一個池在未來將產生的費用數額,但我們可以幫助我們的使用者支援基於 LP 頭寸的歷史資料的模擬,以支援他們的分析和決策。

DeFi 擴充套件了工具,讓使用者能夠基於一種新的方法來計算 Uniswap LP 策略的歷史表現。

Uniswap V3 池回測的新方法

Uniswap LP 策略是高度差異化的,每個投資者可以選擇自己的主動流動性範圍,每個人收取的費用也不同。

為了回測策略,我們需要收集資料並計算測試策略的具體條件。

提取特定 Uniswap V3 工具的歷史資料

為了支援我們的分析,我們需要收集關於 Uniswap V3 池的歷史資料。為此,我們使用 TheGraph PoolHourData 子圖來解決這個問題。

如 Uniswap V3 白皮書所述,對於每個池,Uniswap 合約跟蹤合約首次初始化時存入的 1 單位無界流動性所能獲得的費用總額 (fg)。無界流動性可以很容易地描述為一種為整個價格範圍 (MinLimit = 0, MaxLimit =∞) 提供流動性的策略。

延伸閱讀  2021 萬向區塊鏈黑客馬拉松收官,一覽獲獎的 14 個專案

我們可以計算 1 單位的無限流動性在一段時間內所賺取的費用如下 :

F_Unb = fg(t) – fg(t-1)

確定要測試的位置

為了確定 LP 頭寸的歷史費用,我們需要首先計算 LP 提供的流動性數量。流動性是策略 (最小限制和最大限制)和初始投資的函式。

流動性 = LiquidityFunction (MinLimit, MaxLimit, 投資)

在我們的計算中,我們還需要確定如果我們選擇一個無界策略,同樣的投資將產生的流動性。

LiquidityUnb = LiquidityFunction (0,∞,投資)

歷史費用計算

在每個時間段的開始,LP 可以 :

a) 為整個範圍提供流動性,在這種情況下,所賺取的費用很容易確定 :

MyFeeUnb = F_unb * LiquidityUnb

b) 在特定範圍內提供集中流動性。在這種情況下,費用是由價格花費在活躍流動性範圍內的時間和乘數決定的。

MyFee = MyFeeUnb * 乘數 * 在範圍內花費的時間

延伸閱讀  黑客鬆 DAO:從產業化黑客鬆到去中心化黑客運動

但乘數可以表示為 :

乘數 = 流動性 / LiquidityUnb

因此,可以將前式改寫為 :

MyFee = F_Unb * 流動性 * 在範圍內花費的時間

最後計算曆史費用作為 MyFee 在每個分析期間賺取的收入。

這聽起來不錯,但真的有效嗎 ?

這個理論很有趣 (有幾分),但它真的有效嗎 ?

我們在 Uniswap v3 中對超過 500 個當前開放的回測器進行了回測,結果如下


當位置處於活動狀態的時間大約為 100% 時,回測是非常精確的,當距離內的時間較低時,精度會降低。

這是由於我們在計算在範圍引數中花費的時間時需要應用近似值。使用 TheGraph 每小時的資料,我們不能精確地確定價格在這個範圍內花費的時間,而只能是一個近似值。

結論

這一新功能將允許直接在我們的模擬器中進行快速可靠的回測。

過去的業績不能保證未來的結果,但它們代表了分析的重要基礎,並支援我們的 LP 戰略定義。

Scroll to Top