任何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 =∞)提供流動性的策略。
我們可以計算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 * 乘數* 在範圍內花費的時間
但乘數可以表示為:
乘數= 流動性/ LiquidityUnb
因此,可以將前式改寫為:
MyFee = F_Unb * 流動性* 在範圍內花費的時間
最後計算歷史費用作為MyFee在每個分析期間賺取的收入。
這聽起來不錯,但真的有效嗎?
這個理論很有趣(有幾分),但它真的有效嗎?
我們在Uniswap v3中對超過500個當前開放的回測器進行了回測,結果如下
當位置處於活動狀態的時間大約為100%時,回測是非常精確的,當距離內的時間較低時,精度會降低。
這是由於我們在計算在範圍參數中花費的時間時需要應用近似值。使用TheGraph每小時的數據,我們不能精確地確定價格在這個範圍內花費的時間,而只能是一個近似值。
結論
這一新功能將允許直接在我們的模擬器中進行快速可靠的回測。
過去的業績不能保證未來的結果,但它們代表了分析的重要基礎,並支持我們的LP戰略定義。
Source:https://defi-lab.medium.com/historical-performances-of-uniswap-l3-pools-2de713f7c70f