※本記事はQiitaに掲載されていたものの転載記事です。
多くの DeFi プロトコルでは「流動性マイニング」と言って、通貨ペアの現物を提供しマーケットに流動性を提供する(提供された流動性を「流動性プール」といいます)ことで、それと引き換えに取引手数料の一部がもらえるという仕組みがあります。
例えば著名な DeFi プロトコルの一つである Uniswap では執筆時点 (2021年8月14日) で USDC/ETH (USDC は Circle 社と Coinbase 社が共同で発行する USD にペグされたステーブルコインのこと) に約 $120M (約130億円) の流動性が提供されており、直近24時間で約 $111k (約1,200万円) の取引手数料が発生しています。
この取引手数料は流動性の提供者に対して、流動性の提供量に比例して分配されます。
市場全体で提供されている流動性に対して一日あたり約0.1%の手数料が発生しておりますので、市場環境に変化がないと仮定すると (1 + 0.1\%)^{365} \simeq 1.44
より、年率 44% もの収益をあげることができます。
比較的ハイリスク・ハイリターンである株式投資ですら平均期待リターンはせいぜい年率 10% 程度ですので、そう考えると流動性マイニングはかなり割りのいい投資先であると言えるでしょう。
しかし一方で流動性マイニングには他の投資手法には存在しない「impermanent loss (「変動損失」と訳されることが多いですが、定訳ではないので以下では英語のままで表記します)」と呼ばれるリスクが存在します。
Impermanent loss とは、DeFi プロトコルに流動性を提供した場合と、流動性を提供せずに資産をホールドした場合を比較した際に発生する損失で、流動性を提供した通貨ペアに価格変動が発生すると必ず発生する損失です(資産が値上がりしても値下がりしても、どちらでも損失となります)。
価格の変動率に対する impermanent loss は以下のようになります。
- 1.25倍の価格変動 = 0.6%の損失
- 1.50倍の価格変動 = 2.0%の損失
- 1.75倍の価格変動 = 3.8%の損失
- 2倍の価格変動 = 5.7%の損失
- 3倍の価格変動 = 13.4%の損失
- 4倍の価格変動 = 20.0%の損失
- 5倍の価格変動 = 25.5%の損失
より具体的には impermanent loss は、価格変動率が r
のとき
\displaystyle \text{(impermanent loss)} = \frac{2 \sqrt{r}}{1 + r} - 1
で与えられます。
以下ではこの公式を導出してみたいと思います。
AMM (自動マーケットメーカー)
まず、DeFi プロトコルにおいてトレードがどのような仕組みで行われるのかをみてみます。
流動性プールに T
枚のトークンと S
枚のステーブルコインが供託されていた場合、トレーダーが注文を行うと価格 p = S / T
で注文は約定します (これは厳密ではなく、流動性が注文数量に対して十分に大きくない場合にはもう少し複雑な計算式が入りますが、本題からずれてしまいますのでここでは流動性は十分に大きいものとします)。
つまり、流動性プールに供託されているトークンとステーブルコインの比率がそのままトークン価格となります。
買い注文が入った場合には流動性プールからトークンが引き出されると同時に購入代金としてステーブルコインが積み増されます。
売り注文が入った場合にはその全く逆のことがおき、売却された枚数分だけトークンが積み増され、売却代金分のステーブルコインが流動性プールから引き出されます。
定数
トレーダーの売買によって流動性の枚数は変化していきますが、AMM において流動性プールに供託されているトークンの枚数とステーブルコインの枚数をかけた数 (T \times S
) は常に一定となります。
例えばトレーダーが t (\ll T)
枚のトークンを購入すると、流動性プール内のトークン枚数は T - t
、ステーブルコインの枚数は S + t * p
となりますので、トレードが実行された後の積は
\displaystyle (T - t) (S + t \times p) = TS - tS + tpT + O(t^2) = TS + O(t^2)
なので、売買枚数が流動性プールの枚数と比べて非常に少ない場合には高々 O(t^2)
の誤差を除いてこの積は変化しません。
(実際の DeFi プロトコルではこの O(t^2)
の項も残らないようにトークンとステーブルコインの受け渡し数量が調整されますので、トレード前後のこの積は厳密に等しくなります。)
流動性プールのこの積は一定ですので、各流動性提供者の提供したトークン枚数とステーブルコインの積は流動性プール内の所有率を与えます。
従って、流動性供給者が流動性プールから自らの提供した流動性を引き出す場合には、提供したトークンとステーブルコインとの積と同額になるようにトークンとステーブルコインがそれぞれ流動性プールから引き出されます。
設定
トークンの価格を p
とし、流動性供給者は s
枚のステーブルコインと t = s / p
枚のトークンを流動性として供給することを考えます。
このとき、流動性供給者の初期資産評価額は
v_\text{init} = t * p + s = 2s
となります。
流動性を供給した場合
流動性供給者が流動性を供給した後に市場が変化し、トークン価格が r
倍になったとします。
すなわちトークン価格が q = pr
になったと仮定します。
このとき流動性供給者が流動性プールからトークンおよびステーブルコインの全額を引き出そうとした際に実際に引き出されるトークンの枚数を t'
、ステーブルコインの枚数を s'
とおくと、これらの積が一定であることから
\displaystyle t \times s = t' \times s'
またトークン価格が q
ですので、
\displaystyle t' \times q = s'
が成り立ちます。
t \times p = s
であることにも注意すると
\displaystyle t' = \frac{t}{\sqrt{r}}
s' = \sqrt{r} \times s
と計算できます。
従って、流動性供給者の最終的な資産評価額は
v_\text{mining} = q \times t' + s' = 2 \sqrt{r} \times s
となります。
ホールドしていた場合
流動性供給者が、実際には流動性を供給せずに資産を単純にホールドしていた場合には、資産評価額は
v_\text{hold} = q \times t + s = (r + 1) \times s
となります。
Impermanent loss
以上より、資産を単純にホールドしていた場合と流動性マイニングを行った場合とで発生する最終評価資産額の差額は
v_\text{il} = v_\text{hold} - v_\text{mining} = (r + 1 - 2\sqrt{r}) s
となります。
Impermanent loss (ratio) をホールド時の総資産評価額に対するこの差額の比率で定義すると
\text{(impermanent loss)} = - \displaystyle \frac{v_\text{il}}{v_\text{hold}} = \frac{2\sqrt{r}}{1 + r} - 1
となります。■
おわりに
Impermanent loss はトークン価格の平方根に依存して決定しますので、先物取引などの伝統的な金融取引によって完全にヘッジすることはできませんので、流動性マイニングの参加者は常にトークン価格の変動による impermanent loss にさらされることになります。
従って流動性マイニングに参加する場合には対象となる通貨ペアの価格の将来的な変化率を加味した上で参加を検討することになるでしょう。
流動性マイニングによる報酬が impermanent loss を上回ると予想できれば流動性マイニングに参加するべきですし、逆に下回ると予想されるのであれば資産を単純にホールドしていた方が相対的に儲かることになります(トークン価格が下がれば損失はでますが、流動性マイニングに参加して追加の impermanent loss を被るよりはマシです)。
一方でトークン価格が変化しなければ (r = 1
) impermanent loss は発生しませんので、例えば USDT/USDC といったステーブルコイン同士の通貨ペアに対して流動性を提供すれば impermanent loss は完全に回避できます。
「流動性マイニングに参加してみたいが、損失は出したくない」という方はステーブルコイン同士の通貨ペアに対して流動性供給を行うのがよいでしょう(もっとも、リスクが低い分期待される収益は当然低くなりますが)。
それにしても価格変動率の「平方根」がでてくるというのは非常に興味深いですね。
従来の金融取引でそういう項が発生することは聞いたことがありませんので、ちょっと興奮しますね ^^ (著者が知らないだけかもしれません。もし平方根が現れるような金融取引をご存知の方がいらっしゃいましたら一報いただけますととても嬉しいです)