【6/28まで】Bybit登録&$100入金で6000円が貰える!詳細はこちら!

Uniswap(ユニスワップ)V3のインパーマネントロスとは?仕組みを解説

この記事から分かること

  • UniswapV3の流動性提供の仕組み
  • UniswapV3の変動損失の仕組み
  • UniswapV3の変動損失金額のイメージ
この記事を書いた人
  • 米国公認会計士ワシントン州
  • Core30経理職
  • 2021年上期の仮想通貨バブル期にアルトコイン投資とBCGに夢中になりクリプトの世界へ
  • 現在は強気相場が予想される2024年の半減期に向けてビットコイン&アルトコインを仕込み中
  • 仮想通貨投資は500万円以上、NFTは50点以上保有、BCGは20作以上プレイ。一番やさしい丁寧なクリプト情報を発信しています
  • 詳しい運営者情報はこちら

UniswapV3は、2021年5月5日にスタートした分散型取引所Uniswap(ユニスワップ)のV2の次の仕組みです。

多くの分散型取引所で同じ仕組みが導入されており、例えば2023年4月4日にPancakeswapがUniswapV3をベースとしたPancakeswapV3がローンチしました。

V3の流動性を提供して利息を稼ぐ流動性マイニングでは、事前に価格帯を設定して流動性を提供する点が特徴的です。

uniswapv3の価格範囲設定画面

結論、インパーマネントロスの発生額は従来のV2と比べて大きくなっています。

流動性を提供する価格帯が狭ければ狭いほど大きく、V2と比べた時のインパーマネントロスの発生倍率は下のようなイメージです。(BTC&USDTの流動性提供の例)

uniswap V3のインパーマネントロスの大きさ
nについては記事後半で解説
さとう

本記事を最後まで読むと、UniswapV3のインパーマネントロス発生の仕組みと注意点が分かります。

本記事は以下のリサーチ記事とUniswapV3のホワイトペーパー&開発仕様書を参考に作成しています。

Uniswap V3 Development Book

Uniswap V3 Whitepaper

Impermanent Loss in Uniswap V3

関連記事
目次

UniswapV3の流動性提供の仕組みの概要

UniswapV3のインパーマネントロスの仕様を理解するためには、まずUniswapV3の流動性の提供(流動性マイニング)のV2との変更を押さえる必要があります。

UniswapV3の流動性マイニングは、従来のUniswapV2とは異なる5つの特徴があります。

  1. Uniswap V3では価格帯を決めて提供
  2. 価格帯に該当してると手数料が貰える
  3. スワップ手数料は流動性提供者が決定
  4. 価格帯毎に異なる流動性のカーブ
  5. 流動性を1:1の等価で提供する必要はない
さとう

詳しい内容は下のUniswapV3とV2の違い解説記事でご紹介しているので、気になる方は先にこちらをご覧下さい。

ユニスワップV3とV2のAPRの違い

UniswapV3のインパーマネントロスとは

早速UniswapV3のインパーマネントロスの仕組みについて見ていきましょう。

さとう

以下の流れで話を進めていきます。

  1. UniswapV2と比べてV3の変動損失は大きい
  2. UniswapV2のAMMの簡単なおさらい
  3. UniswapV3の流動性提供の式を解説
  4. V3のインパーマネントロスを計算してみる

UniswapV2と比べて変動損失は大きい

結論、UniswapV3のインパーマネントロスはUniswapV2と比べて大きくなっています。

提供する流動性の設定価格帯を狭くすればするほど、さらにインパーマネントロスは増えます。

インパーマネントロスの発生倍率は、V2と比べると下のようなイメージで大きくなります。

uniswap V3のインパーマネントロスの大きさ

UniswapV3で価格帯を決めて流動性を提供する場合は、価格が変化しやすいペアであればあるほど提供する流動性の金額を小さくする必要があります。

しかし、狙った価格帯であなたの流動性が利用されれば、提供した流動性の金額が小さくてもスワップ手数料をしっかりインセンティブ報酬として受け取れます。

さとう

UniswapV3が重要視している「資産効率性(Capital Efficiency)」とはこういうことなので、その考え方に従えば良いという訳です。

ここから、UniswapV3でインパーマネントロス(変動損失)が従来と比べて大きくなる理由について深堀して解説していきます。

解説①:UniswapV2の簡単なおさらい

まず、簡単にUniswapV2の流動性の基本的な考え方をおさらいします。

UniswapV2では、次の式に従って流動性の枚数や仮想通貨の価格が変化していました。

\(xy=k\)

Understanding StableSwap (Curve) » Miguel Mota | Software Developer

流動性が新規で提供されたり、削除されたりする時にk(定数)が再計算され、流動性提供プールのペアxとyの枚数はこれに従って変化していきます。

解説②:UniswapV3の流動性提供の式

UniswapV3の流動性では、次の式をベースに考えていきます。

\(xy=L^2\)

さとう

このままではUniswapV2と同じになってしまうので、UniswapV3の特徴を表現するために、このグラフを変形していきます。

UniswapV3の流動性は価格レンジを設定し、上限または下限に達すると片方の流動性しか提供する必要がないことが大きな特徴でした。(資産効率性)

この特徴を式に反映させます。

イメージしやすくするために、今回提供する流動性の枚数はBTC(x)&USDT(y)で考えます。ビットコインの流動性提供枚数がx、ステーブルコインUSDTの流動性提供枚数がyです。

ビットコインの価格をPとすると、Pは次のように表せます。

\(P=\frac{y}{x}\)

このとき、xとyはそれぞれLとPを使って次のように表せます。

①:\(xy=L^2\)

②:\(y=Px\)

上記の2式より、\(x=\frac{L}{\sqrt{P}}\)

①:\(xy=L^2\)

②:\(y=Px\)

上記の2式より、\(y=L\sqrt{P}\)

UniswapV3の流動性は価格レンジを設定し、上限または下限に達すると片方の流動性しか提供する必要がないことが特徴でしたが、これは次のようなグラフです。

  • \(xy=L^2\)のグラフを-x方向に\(\frac{L}{\sqrt{Pb}}\)だけ平行移動する
  • \(xy=L^2\)のグラフを-y方向に\(L\sqrt{Pa}\)だけ平行移動する

Pbは上限設定した価格、Paは下限設定した価格です。

平行移動させたグラフとその式が次の通りです。

さとう

平行移動のとき符号の向きは逆になります。

\((x+\frac{L}{\sqrt{Pb}})(y+L\sqrt{Pa})=L^2\)

uniswap V3の流動性グラフの詳細

ビットコインの価格が上限になったときにx(BTCの枚数)がゼロになるグラフというのは、\(xy=L^2\)を\(\frac{L}{\sqrt{Pb}}\)分だけ平行移動したグラフのことです。

そして、ビットコインの価格が下限になったときにy(USDTの枚数)がゼロになるグラフというのは、さらに\(xy=L^2\)を\(L\sqrt{Pa}\)分だけ平行移動したグラフのことです。

さとう

だからこのようなグラフになる訳ですね。

ここで別にもう一つ次の式が成り立つことの証明をしておきます。(後で使います)

\(\Delta y=L・\Delta\sqrt{P}\)

\(\Delta x=L・\Delta\frac{1}{\sqrt{P}}\)

証明方法
さとう

ここの証明過程でUniswapV3の特徴的な仕組みが分かります。

先程平行移動して作ったグラフは、あなたが流動性として提供しているxとyの枚数を決めるための専用のグラフです。

Uniswap V3では、このグラフはあなたにとってのリアルカーブ(Real Curve)と呼ばれます。

平行移動する前のグラフは、対照的にバーチャルカーブ(Virtual Curve)呼ばれます。

uniswap V3の流動性グラフの詳細

今回証明する式では、Real CurveとVirtual Curveで定義される値が混在していることになります。

uniswap V3の流動性グラフのリアルカーブとバーチャルカーブ

Δyはあなたが提供しようとしているUSDTの枚数なので、Real Curveで決定されます。

Lは平行移動する前の\(xy=L^2\)で定義したので、Virtual Curve上で決定されて固定です。

あなたは流動性を等価で提供する必要はないので、ΔPはReal Curve上で定義される値ではなく、Virtual Curve上で得られる値であることが分かります。(言い換えると、あなたが提供する流動性の枚数をVirtual Curve上に戻すと現在価格を表す)

つまり、あなたが提供する流動性の変化Δyは、Virtual Curve上のPの変化ΔPで求まるということです。(Lは固定)

証明の過程も載せておきます。

\(\Delta Y=L・\Delta\sqrt{P}\)

\(\sqrt{xy}=\frac{y_{1}-y_{0}}{\sqrt{P_{1}}-\sqrt{P_{0}}}\)

\(\sqrt{xy}(\sqrt{P_{1}}-\sqrt{P_{0}})=y_{1}-y_{0}\)

\(\sqrt{xy}(\sqrt{\frac{y_{1}}{x_{1}}}-\sqrt{\frac{y_{0}}{x_{0}}})=y_{1}-y_{0}\)

Virtual Curve上では、\(\sqrt{x_{1}y_{1}}=\sqrt{x_{0}y_{0}}=\sqrt{xy}=L\)のため、

\(\sqrt{\frac{x_{1}y_{1}y_{1}}{x_{1}}}-\sqrt{\frac{x_{0}y_{0}y_{0}}{x_{0}}}=y_{1}-y_{0}\)

\(\sqrt{y_{1}^2}-\sqrt{y_{0}^2}=y_{1}-y_{0}\)

\(y_{1}-y_{0}=y_{1}-y_{0}\)

Δxについても同様です。

さとう

証明した式は後で使うので、少しの間忘れていても大丈夫です。

ここまでの式を使って、以下の条件で10,000USDTを流動性として提供したときのBTCの提供枚数を求めてみましょう。

  • 提供しようとしている流動性:BTC&USDT
  • 現在のBTCの価格:10,000USDT/BTC
  • 流動性の上限価格:14,400USDT/BTC
  • 流動性の下限価格:8,100USDT/BTC
  • 提供するUSDTの枚数:10,000USDT
  • 提供するBTCの枚数:?
ぱんだ

UniswapV2では現在価格と同じ1BTCを等価で提供するけど、V3では違うんだよね・・・!どうやって計算するんだろう?

Real Curveの式のyに10,000を入れれば良さそうですが、Lが分からないので計算できません。

\((x+\frac{L}{\sqrt{Pb}})(y+L\sqrt{Pa})=L^2\)

ここで忘れていた次の証明済みの式を思い出してみましょう。

\(\Delta y=L・\Delta\sqrt{P}\)

\(\Delta x=L・\Delta\frac{1}{\sqrt{P}}\)

ぱんだ

そっか!流動性の変化を表すReal Curve上のxとyの変化は、Virual Curve上のPの変化とLで表せることが証明できたんだよね!

例えば、yの式の方に着目すると、今回追加する流動性ΔyはLとΔPで示せるということです。

さとう

このΔyの式に当てはまるΔPは簡単に求めることができます。

今回追加する流動性Δy分は仮に全て買われると(ETHが売られる)、現在の流動性を表す地点がcだとすると、aまで移動してくることになります。

これは、Virual Curveのグラフで考えると、現在価格(Pc)から下限価格(Pa)まで移動していることにもなります。(資本効率性の観点から、価格Paまで行ったときにyは必要なくなるというUniswapV3の流動性の定義をしっかり表している)

つまり、Δyに対応するΔPは、\(Pc-Pa\)であるという訳です。

uniswap V3の流動性グラフの詳細

同じように考えると、Δxに対応するΔPは、\(\frac{1}{\sqrt{Pc}}-\frac{1}{\sqrt{Pb}}\)となります。

証明した式のΔPにそれぞれを当てはめると、次のようになります。

\(\Delta x=L(\frac{1}{\sqrt{Pc}}-\frac{1}{\sqrt{Pb}})\)

\(\Delta y=L(\sqrt{Pc}-\sqrt{Pa})\)

例題の値を当てはめると、次のようになります。

\(\Delta x=L(\frac{1}{\sqrt{10000}}-\frac{1}{\sqrt{14400}})\)

\(10000=L(\sqrt{10000}-\sqrt{8100})\)

最初にLが1000であることが分かり、ビットコインの提供枚数(Δx)=1.6666…であることが分かります。

今回の例では、設定した価格帯の中で現在価格は下限価格に寄っているため、ビットコインの価格が上がったときに利用されやすい流動性の提供方法ということです。

ビットコインの価格が上がった時というのは、ビットコインの枚数が流動性から少なくなったときであり、UniswapV3の資本効率性の観点から考えると、よりビットコインを必要としている状況ということです。

従って、提供するビットコインの枚数はUniswapV2の時に計算される1BTCより多くなります。

UniswapV3のシミュレーションツールを使うと、同じようにBTCの提供枚数は1.666666と出力されることが分かります。

uniswap V3のインパーマネントロスの計算ツール

UniswapV3インパーマネントロスシミュレーションサイト

さとう

気になる方は是非突合してみて下さい。

もうちょっとだけ深堀り

ちなみに平行移動させたグラフ上のxとyからLを直接求めることはできません。

今回例に挙げたx=1.6666….とy=10,000からLは計算できないということです。

これは、Lは平行移動する前のグラフ(Virual Curve)で定義したときの値だからです。

x=1.6666….とy=10,000をそれぞれ\(\frac{L}{\sqrt{Pb}}\)、\(L\sqrt{Pa}\)分戻したXとYからLは計算され、流動性を提供したときに裏で計算されているので、本記事でLの具体的な値を意識する必要はありません。

解説③:インパーマネントロスの計算

UniswapV3の流動性提供の基本的な考え方が分かった所で、早速インパーマネントロスを計算していきましょう。

さとう

まずは先程の例題を元に、インパーマネントロスがどれくらい発生するか具体的に計算してみます。

流動性を提供した後の価格変化による自分の流動性プールの変化は、解説②で紹介した式に変化後の価格を入れるだけで簡単に計算されます。

例えば1BTCの価格が10,000USDTから12,000USDTになったときは次のように計算できます。(1.2倍)

\(\Delta x=L(\frac{1}{\sqrt{Pf}}-\frac{1}{\sqrt{Pb}})\)

\(\Delta y=L(\sqrt{Pf}-\sqrt{Pa})\)

Pf:将来価格(価格変化後)

\(\Delta x=1000(\frac{1}{\sqrt{12000}}-\frac{1}{\sqrt{14400}})\)

\(\Delta y=1000(\sqrt{12000}-\sqrt{8100})\)

x=0.79537…

y=19,544…

さとう

流動性を提供した時にLが1000であることが分かっているので、今回は簡単に計算できましたね。

合計金額は0.79537×12000+19544=29,088ドルとなりました。

流動性を提供していなかった場合は、1.66666×12000+10000=30,000ドルでした。

従ってインパーマネントロスの割合は912/30000=約3%ということになります。

価格が1.2倍になったときに発生するインパーマネントロスはUniswapV2では約0.4%だったので、7.5倍のインパーマネントロスが発生していることになります。

UniswapV3は価格レンジを設定する分、流動性の変化が従来の流動性と比べてずっと激しくなります。

設定した価格レンジが狭ければ狭いほどインパーマネントロスは大きくなり、広くすれば従来のV2のインパーマネントロスの発生の仕方に近づく訳です。

ぱんだ

じゃあどれくらいの価格レンジにすればいいのかな?なんとなくの目安が欲しいかも・・・?

さとう

ではV3のインパーマネントロスの発生傾向を一般化してみましょう。

発生するインパーマネントロスの割合は次の式で計算できます。

\(インパーマネントロス=\frac{価格変化後の流動性金額-ガチホ時の金額}{ガチホ時の金額}\)

流動性を提供した時点の流動性金額の合計をV0、価格変化後の提供した流動性の金額をV1、流動性を提供していなかった場合の金額をVheldとします。

このときV0は現在価格Pを使って次のように表せます。

\begin{eqnarray} V_{ 0 }&=&y+xP\\ \end{eqnarray}

解説②より、xは\(x=L(\frac{1}{\sqrt{P}}-\frac{1}{\sqrt{Pb}})\)、yは\(y=L(\sqrt{P}-\sqrt{Pa})\)なので、V0はさらに次のように表すことができます。

\begin{eqnarray} V_{ 0 }&=&y+xP\\ &=&L(\sqrt{P}-\sqrt{Pa})+LP(\frac{1}{\sqrt{P}}-\frac{1}{\sqrt{Pb}})\\ &=&L(\sqrt{P}-\sqrt{Pa})+LP(\frac{1}{\sqrt{P}}-\frac{1}{\sqrt{Pb}})\\ &=&L(\sqrt{P}-\sqrt{Pa})+L(\sqrt{P}-\frac{P}{\sqrt{Pb}})\\ &=&2L\sqrt{P}-L(\sqrt{Pa}-\frac{P}{\sqrt{Pb}}) \end{eqnarray}

V0の式はL・P・Pa・Pbの4つで構成されている式であり、P以外の3つは流動性を提供するときに決まった値で固定です。

つまり、Pを将来価格に置き換えるだけでV0の式はV1の式になります。

将来価格を現在価格Pをk倍したPkとしたとき、V1は次の通りです。

\begin{eqnarray} V_{ 1 }=2L\sqrt{Pk}-L(\sqrt{Pa}-\frac{Pk}{\sqrt{Pb}}) \end{eqnarray}

VheldはPkを使って次のように表せます。

\begin{eqnarray} V_{ held }&=&y+xPk\\ &=&L(\sqrt{P}-\sqrt{Pa})+LPk(\frac{1}{\sqrt{Pk}}-\frac{1}{\sqrt{Pb}})\\ &=&L\sqrt{P}(1+k)-L(\sqrt{Pa}+\frac{Pk}{\sqrt{Pb}})\\ \end{eqnarray}

UniswapV3のインパーマネントロスの割合をILa,b(k)とすると、次のように表せます。

\begin{eqnarray} IL_{ a,b }(k)&=&\frac{V_{ 1 }-V_{ held }}{V_{ held }}\\ &=&\frac{2L\sqrt{Pk}-L\sqrt{P}(1+k)}{L\sqrt{P}(1+k)-L(\sqrt{Pa}+\frac{Pk}{\sqrt{Pb}})}\\ &=&\frac{2\sqrt{k}-1-k}{1+k-\sqrt{\frac{Pa}{P}}-k\sqrt{\frac{P}{Pb}}} \end{eqnarray}

UniswapV2のインパーマネントロスの割合をIL(k)すると、IL(k)は\(\frac{2\sqrt{k}-1-k}{1+k}\)で表すことができるので、この値でILa,b(k)の計算結果を無理やり括ると次のようになります。

\begin{eqnarray} IL_{ a,b }(k)&=&IL(k)・\Bigg(\frac{1}{1-\frac{\sqrt{\frac{Pa}{P}}+k\sqrt{\frac{P}{Pb}}}{1+k}}\Bigg) \end{eqnarray}

現在価格P、レンジ下限Pa、レンジ上限Pbを入れて将来価格が何倍になったかを表すkを入れると、UniswapV3のインパーマネントロスがUniswapV2のインパーマネントロスに対して何倍か分かる式が完成しました。

さとう

これだけではまだイメージしづらいので、もっとシチュエーションを限定して、UniswapV3のインパーマネントロスのイメージを掴みます。

本記事では価格レンジが上限と下限で比率で考えて等間隔になっている時のインパーマネントロスを想定してみます。(実際のUniswapV3の流動性提供の戦略としても妥当なもの)

まず、次の2つの式を満たすようなnを決めます。

\begin{eqnarray} \frac{Pa}{P}=\frac{1}{n}、 \frac{P}{Pb}=\frac{1}{n} \end{eqnarray}
ぱんだ

等間隔(比率)で価格レンジが広くなると、nも大きくなるんだね!

例えば次のような価格レンジを想定した場合、n=1.23…(1/n=0.81)となり、提供する流動性は等価になります。

この2つの式をILa,b(k)の式に代入すると次の式が得られます。

\begin{eqnarray} IL_{ a,b }(k)&=&IL(k)・\Bigg(\frac{1}{1-\frac{\sqrt{\frac{Pa}{P}}+k\sqrt{\frac{P}{Pb}}}{1+k}}\Bigg)\\ &=&IL(k)・\Bigg(\frac{1}{1-\frac{\sqrt{\frac{1}{n}}+k\sqrt{\frac{1}{n}}}{1+k}}\Bigg)\\ &=&IL(k)・\Bigg(\frac{1}{1-\frac{(1+k)\sqrt\frac{1}{n}}{1+k}}\Bigg)\\ &=&IL(k)・\frac{1}{1-\frac{1}{\sqrt{n}}} \end{eqnarray}

この式より、等間隔(比率)で価格レンジを設定したとき、UniswapV3がUniswapV2のインパーマネントロスと比べて何倍大きいかはその価格レンジの広さを表すnによって示せることが分かりました。

\(f(n)=\frac{1}{1-\frac{1}{\sqrt{n}}}\)(n>1)のグラフとnの値毎の倍率のテーブルは次のようになります。

uniswap V3インパーマネントロスの派生倍率グラフ
nの値ILの発生倍率(V2比)
n=1.211.5倍
n=1.55.4倍
n=2.03.4倍
n=4.02.0倍

UniswapV2のインパーマネントロスの早見表を下に載せておきます。

さとう

V3の発生倍率を掛け合わせることで大体のイメージできますね。

UniswapV2 インパーマネントロス早見表
  • 1.25倍の価格変動 = 0.6%の損失
  • 1.50倍の価格変動 = 2.0%の損失
  • 1.75倍の価格変動 = 3.8%の損失
  • 2倍の価格変動 = 5.7%の損失
  • 3倍の価格変動 = 13.4%の損失
  • 4倍の価格変動 = 20.0%の損失
  • 5倍の価格変動 = 25.5%の損失
さとう

nが2以上になるような価格レンジを取れば、インパーマネントロスはUniswapV2の3倍程度で収まりますね。価格変化が1.5倍なら6%インパーマネントロスが発生するということです。

あとはAPRと見比べて、リスクに見合う流動性提供になるか検討しましょう。

目安となる価格レンジの幅とインパーマネントロスがUniswapV2の何倍になるかの図も載せておきます。

uniswapv3-impermanent-loss-image

まとめ:リスクを理解して利用しよう

結論、UniswapV3のインパーマネントロス(変動損失)はUniswapV2と比べると大きくなります。

従来のUniswapV2の流動性提供では価格全体に流動性を置いていたのに対し、UniswapV3では事前に価格帯を決めてから流動性を提供するからです。

ぱんだ

インパーマネントロスの発生が決めた価格帯で集中するイメージだね!

価格帯を狭くすればするほど、インパーマネントロスの発生は従来のV2と比べて大きくなります。

仮に価格帯を等間隔(比率)に設定して流動性を提供した場合、従来のインパーマネントロスと比べてV3で何倍のインパーマネントロスが発生するかは次の通りです。

レンジ間隔nとインパーマネントロスの倍率(UniswapV2比)の関係は次のグラフとテーブルのようになります。

nの値ILの発生倍率(V2比)
n=1.211.5倍
n=1.55.4倍
n=2.03.4倍
n=4.02.0倍

UniswapV3が重要視しているのは「資本効率性(Capital Efficiency)」で、提供する流動性を少なくして効率よくスワップ手数料を得ることが前提になっています。

インパーマネントロスが増えてしまっているように見えますが、提供する流動性をその分しっかり減らして、リスクを抑えるようにしましょう。

さとう

UniswapV3のインパーマネントロスシミュレーションはこちらのサイトが便利です。

https://www.poption.exchange/tools/il/

本記事は以下のリサーチ記事とUniswapV3のホワイトペーパー&開発仕様書を参考に作成しました。

Uniswap V3 Development Book

Uniswap V3 Whitepaper

Impermanent Loss in Uniswap V3

ユニスワップV3とV2の違いを知りたい人向け

>>ユニスワップV3とユニスワップV2の違いを解説!

プライスインパクト・スリッページを知りたい人向け

>>V3版インパーマネントロスとは?仕組みを徹底解説!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次