方程式を解いてみましょう
前回の記事では、UniSwapに代表されるDEXへの流動性提供の簡単な仕組みと、それによって発生するインパーマネントロスの概要について説明しました。今回は、もうちょっと深く掘り下げていくことにします。
参考:DeFi (UniSwapへの流動性提供) の「インパーマネントロス」を数学的に評価する(その①)
小難しいことを書いていきますが、やっていることは中学生の数学レベルです。順に紐解いていきましょう。
前提の再確認と、方程式化
前回の記事の最後に、2つの重要なポイントを改めて振り返ってみましょう。
- 流動性提供しているTOKEN-1総量とTOKEN-2総量は等価である
- 流動性提供者が提供したTOKEN-1とTOKEN-2の積は、取引の前後でも変動しない
これです。これを使って、方程式を立てていくことにしましょう。
まずは、流動性を提供する通貨ペアです。これを「TOKEN-X」と「TOKEN-Y」として、それぞれ価格Px, Pyおよび流動性低提供時の枚数Nx, Nyを、それぞれ下記の通り定義します。
$$(TOKEN-Xの価格) = P_x$$
$$(TOKEN-Xの枚数)=N_x$$
$$(TOKEN-Yの価格) = P_y$$
$$ (TOKEN-Yの枚数)=N_y$$
流動性提供後、TOKEN-Yの価値が変動し、TOKEN-Xとの相対比でα倍に変動したとします。そうすると、それぞれ保有枚数が変動することになります。それぞれ、ダッシュを付けて変動後の状況を整理すると・・・
$$(TOKEN-Xの価格(変動後)) = P_x$$
$$(TOKEN-Xの枚数(変動後))=N_x’$$
$$(TOKEN-Yの価格(変動後)) = αP_y$$
$$(TOKEN-Yの枚数(変動後))=N_y’$$
xの価格は変わらない前提です。枚数だけ変動します。これを表でまとめると、以下のとおりです。
トークン | 流動性提供時 | 価格変動後 | ||||
価格 | 枚数 | 時価総額 | 価格 | 枚数 | 時価総額 | |
TOKEN-X | Px | Nx | Px・Nx | Px | Nx’ | Px・Nx’ |
TOKEN-Y | Py | Ny | Py・Ny | αPy | Ny’ | αPy・Ny’ |
ここまでは簡単ですね。ここで、前提条件を元に方程式を立ててみます。
<流動性提供しているTOKEN-1総量(時価総額)とTOKEN-2総量は等価である>
これを式にすると、以下の通りとなります。
$$P_xN_x = P_yN_y ・・・①$$
$$P_xN_x’ = \alpha P_yN_y’ ・・・②$$
<流動性提供者が提供したTOKEN-1とTOKEN-2の積は、取引の前後でも変動しない>
これを式にすると、以下の通りとなります。
$$N_x \times N_y = N_x’ \times \alpha N_y’ = M ・・・③$$
後で使うのと、この値は一切変動しないため、Mという定数で置き換えました。では、これを解いていきましょう。
$$N_x = {P_yN_y \above 1pt P_x} ・・・①より$$
$$= {P_y \times M \above 1pt {N_x \times P_x} } ・・・③より$$
移項して・・・
$$N_x^2 = M \cdot {P_y \above 1pt P_x}$$
ゆえに、以下が成立します。
$$ N_x = \sqrt{M \cdot {P_y \above 1pt P_x}} ・・・④$$
ここに③を適用すると、以下も導出されます。
$$ N_y = \sqrt{M \cdot {P_x \above 1pt P_y}} ・・・⑤$$
同じように、価格変動後の枚数も求めていきましょう。
$$N_x’ = {\alpha P_y \cdot N_y’ \above 1pt P_x} ・・・②より$$
$$= {\alpha P_y \cdot M \above 1pt {N_x’ \times P_x} } ・・・③より$$
移項して・・・
$$N_x’^2 = \alpha M \cdot {P_y \above 1pt P_x}$$
ゆえに、以下が成立します。
$$ N_x’ = \sqrt{\alpha M \cdot {P_y \above 1pt P_x}} ・・・⑥$$
ここに③を適用すると、以下も導出されます。
$$ N_y’ = \sqrt{\alpha M \cdot {P_x \above 1pt P_y}} ・・・⑦$$
時価総額の変動を求める
それでは、これらを使って、時価総額の変動を求めていきましょう。
時価総額は(価格)×(枚数)で定義できるため、以下の通りとなります。
$$(流動性提供時の時価総額)=P_xN_x + P_yN_y$$
$$=P_x \cdot \sqrt{M \cdot {P_y \above 1pt P_x}} + P_y \cdot \sqrt{M \cdot {P_x \above 1pt P_y}} ・・・④⑤より$$
$$=2 \sqrt{P_x P_y M}$$
同様に、価格変動後の時価総額を求めてみましょう。
$$(価格変動後の時価総額)=P_x’N_x’ + \alpha P_yN_y’$$
$$=P_x \cdot \sqrt{\alpha M \cdot {P_y \above 1pt P_x}} + P_y \cdot \sqrt{\alpha M \cdot {P_x \above 1pt P_y}} ・・・④⑤より$$
$$=2 \sqrt{\alpha P_x P_y M}$$
わかりやすくするため、以下の通り、定数Sで置き換えます。
$$S = (P_x P_y M)^2 = (P_x N_x P_y N_y)^2$$
すると、流動性提供時と価格変動後の時価総額は、以下の通り変動したことになりますね。
$$(価格変動前)= 2S, (価格変動後)=2\sqrt{\alpha}S$$
対して、TOKEN-XとTOKEN-Yをそのまま保有していた場合はどうなるでしょうか。これも計算で簡単に出せますね。
$$(価格変動前)= 2S, $$
$$(価格変動後)= P_x N_x + \alpha P_y N_y$$
$$\sqrt{M \cdot P_x P_y} + \alpha \cdot \sqrt{M \cdot P_x P_y}$$
$$=(1 + \alpha) S$$
ようやくここまで来ましたね。つまり、この違いがインパーマネントロスになるわけです。
$$流動性提供した場合: 2S → 2\sqrt{\alpha}S$$
$$流動性提供しない場合:2S → (1 + \alpha) S$$
ようやくここまで来ました・・・。またまた記事がくそ長くなってきたので、次の記事に渡したいと思います。
※次の記事:DeFi (UniSwapへの流動性提供) の「インパーマネントロス」を数学的に評価する(その③)
では。