任何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