見出し画像

Concentrated Liquidity の理解 Part 3

これまで確認してきたものを下地とし、集中流動性を理解していきます。

Part 1 と Part 2 はこちらです。

集中流動性

集中流動性とはなにか

Concentrated Liquidity AMM である Orca の Whirlpool のデポジット画面を確認します。Constant Product AMM の SOL / USDC プールのデポジット画面にはなかった範囲の設定が出てきます。

流動性を提供する範囲の選択
デポジットするトークン量の指定

上図の場合、SOL の価格が 34.2992 - 43.7421 USDC の範囲にある場合のみ、流動性を提供するという設定です。「集中」は全体ではなくこの範囲に限定して流動性を提供することを意味します。

ただ、これだけだと「集中」というより「限定」感が強いです。集中の意味はまた後で出てきます。

グラフで表現すると下図になります。
価格が $${\sqrt{P_{lower}}}$$ から $${\sqrt{P_{upper}}}$$ の間にある場合のみトークンの交換に応じます。

流動性の提供に価格の条件をつけたグラフ

移動する範囲は限定されましたが、範囲内ではこれまでと同様に、$${L}$$ で決まるグラフの線上を動きます。新しい動きは登場しません。

デポジット時のトークン量の決まり方

デポジットの設定画面で変わった点がもう一つあります。デポジットするトークンの比率です。

SOL の Current Price は 39.374697 USDC となっており、10 SOL と等価の USDC は 393.74697 USDC です。ところが、512.3901 USDC を一緒にデポジットすることが求められています。

このトークン量がグラフのどこに該当するのかを示します。

デポジット時に求められるトークン量のグラフ表現

まず、10 SOL は現在の価格 (39.374697 USDC) から上限の価格 (43.7421 USDC) まで動いた場合にスワップの出力としてプールから出ていく量になります。

同様に、512.4001 USDC (画面と0.01ズレましたが丸め誤差かと思います) は現在の価格から下限の価格 (34.2992 USDC) まで動いた場合にスワップの出力としてプールから出ていく量になります。

これが、指定した範囲で流動性を提供するために必要なトークンの量になります。入ってくる方向の量は気にする必要がありません。

例えば、SOL が売られて価格がグラフの左方向に動く場合、出ていくのは USDC であり、SOL は入ってくるものをそのまま受け取るだけです。

SOL が買われて価格がグラフの右方向に動く場合、出ていくのは SOL であり、USDC は入ってくるものをそのまま受け取るだけです。

つまり、デポジットする量は、指定した範囲で価格が動いたときに、出ていくトークンを用意できると保証する量になります。そのため、流動性を提供すると約束する範囲において必ずグラフの線上を移動できるようになっています。

価格が範囲外にあるときのデポジット

デポジット時のトークン量の決まり方は、流動性を提供する範囲だけでなく、デポジットする時点の価格にも影響を受けています。

これが極端な形で出てくるのが、現在価格を含まない範囲へ流動性提供する場合です。画面は下図のようになります。SOL と関係なく、USDC は 0 になっています。

現在価格が流動性提供する範囲を下回っている場合

このトークン量がグラフのどこに該当するのかを示します。

デポジット時に求められるトークン量のグラフ表現(範囲外)

現在価格が流動性を提供する範囲の左側にあります。SOL が買われて現在価格が下限の価格 (60.624277 USDC) 以上になると、流動性の提供が始まり、SOL が出ていきます。

この範囲で確実に流動性を提供するには、価格が上限の価格 (70.688843 USDC) になるまでに出ていく SOL を用意する必要があり、それが 10 SOL です。より正確に言えば、10 SOL で足りるように $${L}$$ を、グラフの形を決めます。

USDC はまったく用意する必要がありません。なぜなら、流動性を提供し始めてから入ってきた USDC 以上に出ていくことはないからです。

L の求め方

Orca の Whirlpool の画面のように、流動性を提供する範囲 $${\sqrt{P_l}}$$ と $${\sqrt{P_u}}$$、現在価格 $${\sqrt{P_c}}$$ が決まった状態で、$${L}$$ を求めてみます。

デポジット時に求められるトークン量のグラフ表現(般化)

$${L}$$ を決めるためにはデポジットするトークンのどちらかの量を決める必要があります。

$${A_{deposit}}$$ をデポジットしたい場合:

$$
\begin{array}{ccl}
A_{deposit} &=& A_c - A_u\\\\\\
&=& \frac{L}{\sqrt{P_c}} - \frac{L}{\sqrt{P_u}}\\\\
&=& L \cdot (\frac{1}{\sqrt{P_c}} - \frac{1}{\sqrt{P_u}})\\\\
&=& L \cdot \frac{\sqrt{P_u} - \sqrt{P_c}}{\sqrt{P_c} \cdot \sqrt{P_u}}\\\\\\
L &=& A_{deposit} \cdot \frac{\sqrt{P_c} \cdot \sqrt{P_u}}{\sqrt{P_u} - \sqrt{P_c}}
\end{array}
$$

$${B_{deposit}}$$ をデポジットしたい場合:

$$
\begin{array}{ccl}
B_{deposit} &=& B_c - B_l\\\\\\
&=& L \cdot \sqrt{P_c} - L \cdot \sqrt{P_l}\\\\\\
&=& L \cdot (\sqrt{P_c} - \sqrt{P_l})\\\\\\
L &=& \frac{B_{deposit}}{\sqrt{P_c} - \sqrt{P_l}}
\end{array}
$$

この結果から $${L}$$ について 2 つのことが言えます。

  1. 分母に $${\sqrt{P_u} - \sqrt{P_c}}$$ や $${\sqrt{P_c} - \sqrt{P_l}}$$ が含まれています。現在価格と上限や下限が近ければ近いほど、分母が小さくなり $${L}$$ は大きくなります。

  2. $${L}$$ は $${A_{deposit}}$$ や $${B_{deposit}}$$ に比例するため、デポジットするトークンが多ければ多いほど $${L}$$ は大きくなります。

レバレッジ

ここで、次の条件での集中流動性プールへのデポジットを考えてみます。

  • 流動性提供範囲: 81 USDC - 121 USDC

  • 現在価格: 1 SOL = 100 USDC

  • デポジットするSOL: 10 SOL

すでに得られている式から、$${L}$$ とデポジットする必要がある USDC の量を求めます。

$$
\begin{array}{ccl}
L &=& SOL_{deposit} \cdot \frac{\sqrt{P_c} \cdot \sqrt{P_u}}{\sqrt{P_u} - \sqrt{P_c}}
&=& 10 \cdot \frac{\sqrt{100} \cdot \sqrt{121}}{\sqrt{121} - \sqrt{100}}\\\\\\
&=& 10 \cdot \frac{10 \cdot 11}{11 - 10}\\\\\\
&=& 1100\\\\\\
\\\
USDC_{deposit} &=& L \cdot (\sqrt{P_c} - \sqrt{P_l})\\\\\\
&=& 1100 \cdot (\sqrt{100} - \sqrt{81})\\\\\\
&=& 1100 \cdot (10 - 9)\\\\\\
&=& 1100
\end{array}
$$

グラフに表します。

81 USDC - 121 USDC に限定した流動性提供は L = 1100

今まではデポジットするトークンの量に着目してきましたが、ここでは $${USDC_l, USDC_c}$$ と $${SOL_c, SOL_u}$$ に目を向けます。

そこに示されているトークンの量である $${9900, 11000}$$ と $${110, 100}$$ はかなり大きな数字です。10 SOL しかデポジットしないのに、110 SOL ないと実現できない $${L}$$ が再現されています。

つまり、流動性を提供する範囲を限定することと引き換えに、多くのトークンを持っていなければ従来実現できなかった大きな $${L}$$ を再現できているということです。これが「集中」です。

10 SOL しかないのに、110 SOL あるかのような行為ができている、これを「レバレッジがかかっている」と表現してもよいです。

レバレッジをかけたことによるトレードオフは、限定した範囲の下限か上限に達した時点で、担保となっていたトークンはもう一方のトークンにすべて交換しつくされてしまうということです。

ただし、ロスカットのように0になってしまうわけではないです。また価格が戻ってくれば、グラフの線に沿った交換が再開されます。

念の為、10 SOL で流動性を提供する範囲を限定せずにデポジットした場合を確認しておきます。

提供範囲を限定しない流動性提供は L = 100

従来は 10 SOL では $${L = 100}$$ だったことになります。実に 11 倍の $${L}$$ が実現されています。

そして、このグラフで示されるように、提供範囲を限定しないということは、下限を $${\sqrt{0}}$$ とし、上限を $${\sqrt{\infty}}$$ とすることです。

Concentrated Liquidity AMM と Constant Product AMM は何ら別物じゃなかった、ということがここからもわかります。

Part 4 では Part 2 のように、提供された流動性を束ねてスワップを処理できることを確認します。ただし、今度は集中流動性を束ねます。

この記事が気に入ったらサポートをしてみませんか?