$$
\begin{aligned}V_{v3}(P_0) &=y_0+x_0 \cdot P_0 \&=L\left(\sqrt{P_0}-\sqrt{p_a}\right)+L\left(\sqrt{P_0}-\frac{P_0}{\sqrt{p_b}}\right) \&=2 L \sqrt{P_0}-L\left(\sqrt{p_a}+\frac{P_0}{\sqrt{p_b}}\right)\end{aligned}
$$
同样,则在价格 $P_1$时流动池中的资产价值为(令 $r=P_1/P_0$):
$$
\begin{aligned}V_{v3,pos}(P_1) &=2 L \sqrt{P_1}-L\left(\sqrt{p_a}+\frac{P_1}{\sqrt{p_b}}\right) \ &=2 L \sqrt{rP_0}-L\left(\sqrt{p_a}+\frac{rP_0}{\sqrt{p_b}}\right)\end{aligned}
$$
Uniswap v3 无常损失分析
目标
Uniswap 概览
基于恒定乘积的自动化做市商(AMM),去中心化交易所。
v1 版本:
v2 版本:
x*y=k
的情况下,做市的价格区间在 (0, +∞) 的分布,当用户交易时,交易的量相比我们的流动性来说是很小的x⋅y=k
,可以算出池内的 k 值:k=4500×3=13500
。假设 x 表示 DAI,y 表示 ETH,即初始阶段 x1=4500,y1=3,当价格下降到 1300 DAI/ETH 时:x2⋅y2=13500, x2/y2=1300
,得出x2=4192.54, y2=3.22
,资金利用率为:Δx/x1=6.84%
。同样的计算方式,当价格变为 2200 DAI/ETH 时,资金利用率约为21.45%
。也就是说,在大部分的时间内池子中的资金利用与低于 25%,这个问题对于稳定币池来说更加严重。v3版本:
无常损失分析
Uniswap v2
例子:
假设 ETH/DAI 交易对的实时价格为 1500 DAI/ETH,交易对的流动性池中共有资金:4500 DAI 和 3 ETH,根据
x⋅y=k
,可以算出池内的 k 值:k=4500×3=13500
。假设 x 表示 DAI,y 表示 ETH,即初始阶段 x1=4500,y1=3。当价格下降到 1300 DAI/ETH 时:
x2⋅y2=13500, x2/y2=1300
,得出x2=4192.54, y2=3.22
。如果用户选择HODL,则
x2'=4500,y2'=3
,我们分别计算两种情况下的资产价值(DAI):LP: 4192.54 + 3.22 * 1300 = 8378.54
HODL: 4500 + 3 * 1300 = 8400
资产减少:8400 - 8378.54 = 21.46 → 无常损失
无常损失率:21.46 / 8400 = 0.26%
当价格变为 2200 DAI/ETH时,x2=5449.77, y2=2.48,资产减少 194.23,损失率为 1.75%。
模型分析:
根据恒定乘积公式 $xy=k$,令 $k=L^2$,其中 L 表示流动性,则有 $xy=L^2$,再根据价格 $S=x/y$,可以得到 $x=L/\sqrt{S}$,$y=L\sqrt{S}$。
考虑 LP 在流动性池 X-Y 中添加流动性 $L$,池的初始价格为 $S_0$,所以 LP 需要向流动性池中提供 $x_0=L/\sqrt{S_0}$的 X 代币和 $y_0=L\sqrt{S_0}$ 的 Y 代币。
当池的价格变为 $S_1$时,LP 的资产价值为
$$ V_{v2,pos}(L, S_1)=S_1 \cdot x_1+y_1=\frac{L}{\sqrt{S_1}}S_1+L\sqrt{S_1}=2L\sqrt{S_1} $$
其中 $x_1$和 $y_1$是LP在池中的资产。
LP 初始时的资产如果一直拿手里,则价值为
$$ V_{v2,hold}(L,S_0,S_1)=S_1 \cdot x_0 + y_0=\frac{L}{\sqrt{S_0}}S_1+L\sqrt{S_0} $$
所以,无常损失为:
$$ \begin{aligned} \mathrm{IL}_{\mathrm{v} 2}\left(S_0, S1\right) &=\frac{V{\mathrm{v} 2, \text { pos }}-V{\mathrm{v} 2, \text { hold }}}{V{\mathrm{v} 2, \text { hold }}} \ &=\frac{2 L \sqrt{S_1}-\left(\frac{L}{\sqrt{S_0}} S_1+L \sqrt{S_0}\right)}{\frac{L}{\sqrt{S_0}} S_1+L \sqrt{S_0}} \ &=\left(\frac{2 \cdot \sqrt{\frac{S_1}{S_0}}}{1+\frac{S_1}{S_0}}-1\right) \end{aligned} $$
令 $r=S_1/S_0$,则有:
$$ \mathrm{IL}_{v2} = \frac{2 \cdot \sqrt{r}}{1+r}-1 $$
用之前的例子计算,r=1300/1500=0.87时,IL=0.0026=0.26%,r=2200/1500=1.47时,IL=0.018=1.8%,与上述计算相符合。
图像:
https://www.desmos.com/calculator/aza5py3g95
可以看到,当 $S_0=S_1$时无常损失为0,其他时候无常损失都为负数。列一个表:
Uniswap v3
用同样的过程,我们分析 Uniswap v3的无常损失。假设 LP 向价格区间 $[P_a,P_b]$提供流动性 $L$,初始价格为 $P_0(\in[P_a,P_b])$,之后价格变为 $P_1(\in[P_a,P_b])$。
首先我们从Uniswap v3 的白皮书中可以知道,集中流动性的资产储备曲线(橙色)的公式为:
$$ \left(x+\frac{L}{\sqrt{p_b}}\right)\left(y+L \sqrt{p_a}\right)=L^2 $$
(推导:曲线相当于v2的曲线向左向下平移动)
对于虚拟曲线: $x{virtual} \cdot y{virtual} = L^2$,可以得到:
$$ \begin{aligned}&y=y_{\text {virtual }}-L \sqrt{p_a}=L\left(\sqrt{P}-\sqrt{pa}\right) \&x=x{\text {virtual }}-\frac{L}{\sqrt{p_b}}=L\left(\frac{1}{\sqrt{P}}-\frac{1}{\sqrt{p_b}}\right)\end{aligned} $$
初始时资产价值为:
$$ \begin{aligned}V_{v3}(P_0) &=y_0+x_0 \cdot P_0 \&=L\left(\sqrt{P_0}-\sqrt{p_a}\right)+L\left(\sqrt{P_0}-\frac{P_0}{\sqrt{p_b}}\right) \&=2 L \sqrt{P_0}-L\left(\sqrt{p_a}+\frac{P_0}{\sqrt{p_b}}\right)\end{aligned} $$
同样,则在价格 $P_1$时流动池中的资产价值为(令 $r=P_1/P_0$):
$$ \begin{aligned}V_{v3,pos}(P_1) &=2 L \sqrt{P_1}-L\left(\sqrt{p_a}+\frac{P_1}{\sqrt{p_b}}\right) \ &=2 L \sqrt{rP_0}-L\left(\sqrt{p_a}+\frac{rP_0}{\sqrt{p_b}}\right)\end{aligned} $$
在价格为 $P_1$ 时的,选择 HODL 的资产价值为:
$$ \begin{aligned} V_{\text {v3,hold}}(P_1) &=y_0+x_0 P_1 \ &=L\left(\sqrt{P_0}-\sqrt{p_a}\right)+P_1 \cdot L\left(\frac{1}{\sqrt{P_0}}-\frac{1}{\sqrt{p_b}}\right) \&=L\left(\sqrt{P_0}-\sqrt{p_a}\right)+L \cdot rP _0\left(\frac{1}{\sqrt{P_0}}-\frac{1}{\sqrt{p_b}}\right) \ &=L \sqrt{P_0}(1+r)-L\left(\sqrt{p_a}+\frac{rP_0 }{\sqrt{p_b}}\right) \end{aligned} $$
所以无常损失为(不失一般性,取 $P_0$为 $P$):
$$ \begin{aligned}\mathrm{IL}{a, b}(r) &=\frac{V{pos}-V{\text {hold }}}{V{\text {hold }}} \&=\frac{2 L \sqrt{rP}-L \sqrt{P}(1+r)}{L \sqrt{P}(1+r)-L\left(\sqrt{p_a}+\frac{rP}{\sqrt{p_b}}\right)} \&=\frac{2 \sqrt{r}-1-r}{1+r-\sqrt{\frac{p_a}{P}}-r \sqrt{\frac{P}{p_b}}} \&=\operatorname{IL}(r) \cdot\left(\frac{1}{1-\frac{\sqrt{\frac{p_a}{P}}+r \sqrt{\frac{P}{p_b}}}{1+r}}\right)\end{aligned} $$
( $P_1$ 在价格区间 $[0,P_b]$,$[P_a,+\infty]$时的无常损失也同样可以计算。)
我们可以通过价格区间 $[P_a, P_b]$ 的变化看到:
$$ p_a=0, pb \rightarrow \infty, \mathrm{IL}{v3}=\frac{2 \cdot \sqrt{r} -1-r}{1+r}=\mathrm{IL}_{v2} $$
趋近于 $\mathrm{IL}_{v2}$。
画图
https://www.desmos.com/calculator/ha322rtufc
同样我们可以看到:当价格区间越小时,无常损失越大:
(这是一个动图)
数值比较
我们比较在不同的价格区间下 Uniswap v3的无常损失:
具体数据():
提问:既然无常损失总是为负,为什么还是会有人愿意做 LP?
我们的计算忽略了两个问题:
集中流动性增加了池的深度:
例如:ETH-USDC-0.3%池的流动性
一些流行的 token 对的深度比中心化交易所(Binance, Coinbase)更高。link
large-cap: ETH/dollar
mid-cap - cross-chain pairs
稳定币与稳定币对: USDC/USDT
从资产价值的角度
比较以下五种资产持有策略
比较这五种策略的资产价值。(使用 https://defi-lab.xyz/uniswapv3simulator)
无手续费时:
包含手续费时:
Uniswap V3 既是投资者收益的放大器,也是风险的放大器。在享受更高投资收益的同时,也必然要承担当价格脱离安全范围时更多的无常损失。
如何通过策略降低损失,或者说增加收益?
策略0:在不主动调整的情况下选择比v2表现更好的池子
在不主动调整情况下,全范围(full range)的 Uniswap v3 头寸和价格限定的稳定币头寸的手续费回报平均比 Uniswap v2 好约 54%。其中
通常建议 LPers 选择 v3。link
选择哪个池?
v3 表现更好的是 100 基点费率或 1 基点费率的稳定币对。
100 bps 的 token 对通常流动性较差,部署时间较晚且波动性较大。 对于 1-bp 费用等级,代币对价格波动较小,但 Uniswap v3 的交易量远高于 v2。 1-bp 池上的集中流动性实现了超过 v2 的高回报。
策略一:主动的被动策略
如果初始投入是 50%ETH 和50%USDC,当价格变化时,池中剩余的资产比例可能变成 80%ETH 和 20%USDC,这时你需要手动调整库存来防止出现一种资产在一侧耗尽,可以持续提供两边的库存。
根据价格变动周期性地再平衡(rebalance)两种资产之间的比例。
利用范围订单(range order)被动执行的,在现在价格的预测方向放置一个窄的订单,这样就避免了swap费用和价格影响。如果主动使用 swap 达到 50/50,会有 0.3%的费用。
如何操作:
对于 Uniswap 上为某个矿池,例如 ETH/USDC,它有两个主要参数:
该策略始终保持两个有效的范围订单:
每24小时,进行再平衡,根据价格和token数量提交订单。如果策略表现优秀,则时间区间可以被减少。再平衡并不能保证完全50/50。
举例:
比如,ETH目前价格 150USDC,B=50,R=20,策略拥有资金 1ETH 和160USDC。则在 [100, 200] 放置一个基础订单,使用 1ETH 和 150 USDC。剩余的 10 USDC 用来在 [130,150] 放置一个在平衡订单,用来购买ETH以达到50/50。
如果价格提升到 180, 再平衡之后,基础订单为 [130, 230],若此时策略有 1.2 ETH 和 90USDC,则策略会使用 0.5EHT 和 90USDC 放入基础订单中,剩余 0.7ETH 会用于在 [180, 200] 之间的再平衡订单。
实际操作:
https://dune.com/queries/78325/155734?Number of days=200
效果
蓝色曲线
实际效果:
https://dune.com/mxwtnb/Alpha-Vaults-Performance?Number+of+days=200&Number+of+days_t4072e=500
策略二:预期价格范围策略(expected price range strategies)
从历史数据中预测未来10分钟的价格走势,得到一个价格范围区间,在这个价格范围区间中提供流动性。直到当前价格超出价格范围,重复上述过程,重新预测价格范围并添加流动性。这个价格范围称为“预期价格范围”。同时我们可以在当前价格没有完全超出预期价格范围时调整价格区间,称这个价格范围为“移动策略范围(move strategy ranges)”,这个范围指示了什么时候需要移动。
如何设置
2018年3月~2020年4月的十分钟数据得出价格移动分布在 [-3%, 3%] 之间。可以设置百分比作为价格波动区间。
进一步策略:在预期价格范围内不采用一致的流动性,而是采用多个连续的流动性多头,每个多头存入不同数量的资产。
三种策略:
比例策略:
蓝线为概率分布,使用小的价格区间实现
结论:
比例策略对于风险偏向 LP 提供者是最优的( $\alpha$大 ),而均匀分配对于风险规避LP提供者是最优的( $\alpha$ 小)。
这意味着,在 Uniswap v3 中被动管理的头寸可能不足以以资本效率和平衡风险赚取费用,积极的流动性提供策略既是机遇也是挑战。
其他主动的流动性管理
其他主动策略 dapp
参考