🤑

流動性提供時のLPトークンの基礎トークンボリュームを都度計算したい

2024/10/12に公開

導入

流動性提供時に提供したLPトークンを構成する各基礎トークンのボリュームが、如何に決定できるのかを考察します。

前提

AMMおよびUniswapの最低限の知識を前提としています。

詳しくない方は以下を先に参考ください。

また、現時点では最低限自身の備忘録としてまとめていますので、将来的には諸々追記していく予定です。

準備

【3部作】これであなたもUniswapV2チョットデキル【中編】:君が主役だ!LPトークンスペシャル!!で記載しましたが、

流動性解除時、各基礎トークンは以下のようにamountのボリュームが引き出せます。
 

\text{amount}_0 = \text{balance}_0 \times \frac{\text{liquidity}}{\text{\_totalSupply}}

\text{amount}_1 = \text{balance}_1 \times \frac{\text{liquidity}}{\text{\_totalSupply}}

 

\text{balance0} \approx \text{\_reserve0} \text{balance1} \approx \text{\_reserve1}なので、

\text{amount0}_{\text{out}} = \text{\_reserve0} \times \frac{\text{liquidity}}{\text{\_totalSupply}}
\text{amount1}_{\text{out}} = \text{\_reserve1} \times \frac{\text{liquidity}}{\text{\_totalSupply}}

 
これを今回の仕様に合わせて整理して、以下とします。

Sx_t = x_t \times \frac{l_t}{\text{totalSupply}_t}
Sy_t = y_t \times \frac{l_t}{\text{totalSupply}_t}

本題

仮定

時間0において、UniswapV2の任意のペアに、

あなたが提供した(保有する)流動性l_0の内訳を(Sx_0, Sy_0)とします。
 

この時、UniswapV2のモデルは以下のように表すことにします。

x \times y = k_0

 

さらに、その後、多くのユーザーによる流動性の出し入れやスワップにより、

プールの状態は

x \times y = k_t

に変化したと仮定します。
 

このときのあなたが保有する

流動性l_0の時間tでの内訳を(Sx_t, Sy_t)とした場合の算出方法を考察します。

流動性提供時のボリュームの算出

では、最低限の準備が整いましたので、

流動性提供時に提供したLPトークンを構成する各基礎トークンのボリュームが、

どのように計算できるかを考察していきましょう。

既知情報

時間0においての以下のデータ

プールの各基礎トークンリザーブ:x_0y_0

プールのLPトークン供給総量:\text{totalSupply}_0

あなたのLPトークン保有量:l_0

あなたのLPトークンを構成する各基礎トークン量:Sx_0Sy_0
 

この条件より以下も既知

スポット価格:P_0

k値:k_0
 
 

時間tにおいての以下のデータ(あなたのLPトークン保有量は変化しないとします)

プールの各基礎トークンリザーブ:x_ty_t

LPトークン供給総量:\text{totalSupply}_t

あなたのLPトークン保有量:l_0
 

この条件より以下も既知

スポット価格:P_t

k値:k_t
 
 

算出

Uniswapのモデルでは、LPトークンの保有量はプール全体のリザーブに対するシェアを表します。

具体的には、あなたのプールにおけるシェアは以下で計算されます。

時間0におけるシェア

\text{シェア}_0 = \frac{l_0}{\text{totalSupply}_0}

 

時間tにおけるシェア

\text{シェア}_t = \frac{l_0}{\text{totalSupply}_t}

 

時間tにおいて、あなたのLPトークン保有量l_0は変化しませんが、

プールのLPトークン供給総量\text{totalSupply}_tやリザーブx_ty_tは変化しています。

そのため、あなたの新しいシェアを使って基礎トークン量を計算できます。
 

時間tにおけるあなたの基礎トークン量

Sx_t = x_t \times \text{シェア}_t = x_t \times \frac{l_0}{\text{totalSupply}_t}
Sy_t = y_t \times \text{シェア}_t = y_t \times \frac{l_0}{\text{totalSupply}_t}

 

時間tにおけるあなたの基礎トークン量差分

\Delta{Sx} = Sx_t - Sx_0
\Delta{Sx} = x_t \times \frac{l_0}{\text{totalSupply}_t} - x_0 \times \frac{l_0}{\text{totalSupply}_0}

 

\Delta{Sy} =Sy_t -Sy_0
\Delta{Sy} = y_t \times \frac{l_0}{\text{totalSupply}_t} - y_0 \times \frac{l_0}{\text{totalSupply}_0}

Discussion