- UniswapV3の流動性提供の仕組み
- UniswapV3の変動損失の仕組み
- UniswapV3の変動損失金額のイメージ
UniswapV3は、2021年5月5日にスタートした分散型取引所Uniswap(ユニスワップ)のV2の次の仕組みです。
多くの分散型取引所で同じ仕組みが導入されており、例えば2023年4月4日にPancakeswapがUniswapV3をベースとしたPancakeswapV3がローンチしました。
V3の流動性を提供して利息を稼ぐ流動性マイニングでは、事前に価格帯を設定して流動性を提供する点が特徴的です。

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


本記事を最後まで読むと、UniswapV3のインパーマネントロス発生の仕組みと注意点が分かります。
本記事は以下のリサーチ記事とUniswapV3のホワイトペーパー&開発仕様書を参考に作成しています。
関連記事
★BitLendingの一番お得な始め方を知りたい人向け!
★BitLendingのリスクを知りたい人向け!
★Bitgetの入金トラブルについて知りたい人向け
★DMMビットコインの出金制限について知りたい人向け
★DMMビットコインの出金トラブルについて知りたい人向け
★bitFlyerの出金制限について知りたい人向け
Bybitの招待コードの入力方法を知りたい人向け!
UniswapV3の流動性提供の仕組みの概要


UniswapV3のインパーマネントロスの仕様を理解するためには、まずUniswapV3の流動性の提供(流動性マイニング)のV2との変更を押さえる必要があります。
UniswapV3の流動性マイニングは、従来のUniswapV2とは異なる5つの特徴があります。
- Uniswap V3では価格帯を決めて提供
- 価格帯に該当してると手数料が貰える
- スワップ手数料は流動性提供者が決定
- 価格帯毎に異なる流動性のカーブ
- 流動性を1:1の等価で提供する必要はない
※読みたい所にジャンプできます。



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




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


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



以下の流れで話を進めていきます。
- UniswapV2と比べてV3の変動損失は大きい
- UniswapV2のAMMの簡単なおさらい
- UniswapV3の流動性提供の式を解説
- V3のインパーマネントロスを計算してみる
UniswapV2と比べて変動損失は大きい
結論、UniswapV3のインパーマネントロスはUniswapV2と比べて大きくなっています。
提供する流動性の設定価格帯を狭くすればするほど、さらにインパーマネントロスは増えます。
インパーマネントロスの発生倍率は、V2と比べると下のようなイメージで大きくなります。


UniswapV3で価格帯を決めて流動性を提供する場合は、価格が変化しやすいペアであればあるほど提供する流動性の金額を小さくする必要があります。
しかし、狙った価格帯であなたの流動性が利用されれば、提供した流動性の金額が小さくてもスワップ手数料をしっかりインセンティブ報酬として受け取れます。



UniswapV3が重要視している「資産効率性(Capital Efficiency)」とはこういうことなので、その考え方に従えば良いという訳です。
ここから、UniswapV3でインパーマネントロス(変動損失)が従来と比べて大きくなる理由について深堀して解説していきます。
解説①:UniswapV2の簡単なおさらい
まず、簡単にUniswapV2の流動性の基本的な考え方をおさらいします。
UniswapV2では、次の式に従って流動性の枚数や仮想通貨の価格が変化していました。
\(xy=k\)


流動性が新規で提供されたり、削除されたりする時に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\)


ビットコインの価格が上限になったときに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)呼ばれます。


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


Δyはあなたが提供しようとしているUSDTの枚数なので、Real Curveで決定されます。
Lは平行移動する前の\(xy=L^2\)で定義したので、Virtual Curve上で決定されて固定です。
あなたは流動性を等価で提供する必要はないので、ΔPはReal Curve上で定義される値ではなく、Virtual Curve上で得られる値であることが分かります。(言い換えると、あなたが提供する流動性の枚数をVirutal 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\)であるという訳です。


同じように考えると、Δ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と出力されることが分かります。


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を使って次のように表せます。
解説②より、xは\(x=L(\frac{1}{\sqrt{P}}-\frac{1}{\sqrt{Pb}})\)、yは\(y=L(\sqrt{P}-\sqrt{Pa})\)なので、V0はさらに次のように表すことができます。
V0の式はL・P・Pa・Pbの4つで構成されている式であり、P以外の3つは流動性を提供するときに決まった値で固定です。
つまり、Pを将来価格に置き換えるだけでV0の式はV1の式になります。
将来価格を現在価格Pをk倍したPkとしたとき、V1は次の通りです。
VheldはPkを使って次のように表せます。
UniswapV3のインパーマネントロスの割合をILa,b(k)とすると、次のように表せます。
UniswapV2のインパーマネントロスの割合をIL(k)すると、IL(k)は\(\frac{2\sqrt{k}-1-k}{1+k}\)で表すことができるので、この値でILa,b(k)の計算結果を無理やり括ると次のようになります。
現在価格P、レンジ下限Pa、レンジ上限Pbを入れて将来価格が何倍になったかを表すkを入れると、UniswapV3のインパーマネントロスがUniswapV2のインパーマネントロスに対して何倍か分かる式が完成しました。



これだけではまだイメージしづらいので、もっとシチュエーションを限定して、UniswapV3のインパーマネントロスのイメージを掴みます。
本記事では価格レンジが上限と下限で比率で考えて等間隔になっている時のインパーマネントロスを想定してみます。(実際のUniswapV3の流動性提供の戦略としても妥当なもの)
まず、次の2つの式を満たすようなnを決めます。



等間隔(比率)で価格レンジが広くなると、nも大きくなるんだね!
例えば次のような価格レンジを想定した場合、n=1.23…(1/n=0.81)となり、提供する流動性は等価になります。


この2つの式をILa,b(k)の式に代入すると次の式が得られます。
この式より、等間隔(比率)で価格レンジを設定したとき、UniswapV3がUniswapV2のインパーマネントロスと比べて何倍大きいかはその価格レンジの広さを表すnによって示せることが分かりました。
\(f(n)=\frac{1}{1-\frac{1}{\sqrt{n}}}\)(n>1)のグラフとnの値毎の倍率のテーブルは次のようになります。


nの値 | ILの発生倍率(V2比) |
---|---|
n=1.2 | 11.5倍 |
n=1.5 | 5.4倍 |
n=2.0 | 3.4倍 |
n=4.0 | 2.0倍 |
UniswapV2のインパーマネントロスの早見表を下に載せておきます。



V3の発生倍率を掛け合わせることで大体のイメージできますね。
- 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のインパーマネントロス(変動損失)はUniswapV2と比べると大きくなります。
従来のUniswapV2の流動性提供では価格全体に流動性を置いていたのに対し、UniswapV3では事前に価格帯を決めてから流動性を提供するからです。



インパーマネントロスの発生が決めた価格帯で集中するイメージだね!
価格帯を狭くすればするほど、インパーマネントロスの発生は従来のV2と比べて大きくなります。
仮に価格帯を等間隔(比率)に設定して流動性を提供した場合、従来のインパーマネントロスと比べてV3で何倍のインパーマネントロスが発生するかは次の通りです。
レンジ間隔nとインパーマネントロスの倍率(UniswapV2比)の関係は次のグラフとテーブルのようになります。


nの値 | ILの発生倍率(V2比) |
---|---|
n=1.2 | 11.5倍 |
n=1.5 | 5.4倍 |
n=2.0 | 3.4倍 |
n=4.0 | 2.0倍 |
UniswapV3が重要視しているのは「資本効率性(Capital Efficiency)」で、提供する流動性を少なくして効率よくスワップ手数料を得ることが前提になっています。
インパーマネントロスが増えてしまっているように見えますが、提供する流動性をその分しっかり減らして、リスクを抑えるようにしましょう。



UniswapV3のインパーマネントロスシミュレーションはこちらのサイトが便利です。
https://www.poption.exchange/tools/il/


本記事は以下のリサーチ記事とUniswapV3のホワイトペーパー&開発仕様書を参考に作成しました。
分散型取引所のインパーマネントロスを知りたい人向け!
プライスインパクト・スリッページを知りたい人向け!
コメント