流動性提供の手数料発生のしくみ Part 1
DeFi に触れ始めた時に、流動性提供が何をしているのか理解するのはややハードルがあると思います。
価格がレンジの外に出たらどうなる?
価格がレンジの外に出たら精算されてしまう?
価格のレンジはどのように設定する?
当初より一方のトークンが少なくなったのはなぜ?
流動性提供は稼げるのか?
思ったほど手数料が稼げていないのはなぜ?
インパーマネント・ロスで損しない?
そもそも流動性提供とは何をしている?
ステーキングと同じものか?
こういった疑問が投げかけられているのを数多く見てきました。
このポストでは、流動性提供における手数料発生のしくみを整理します。手数料発生の仕組みを理解すると、どのように流動性を提供したら有利そうか、作戦を考えられるようになると思います。
以下のポストで利用しているグラフをベースにし、集中流動性 AMM を板取引に似た表現に変換したうえで確認していきます。
ふりかえり
トークン A とトークン B の保有量を流動性 $${L}$$ と価格 $${P}$$ を用いて表します。
$$
\begin{array}{ccl}
A_{amount} &=& \frac{L}{\sqrt{P}}\\\ \\\
B_{amount} &=& L \cdot \sqrt{P}\\\
\end{array}
$$
流動性を提供する範囲を $${[P_{lower}, P_{upper}]}$$ とすると、黄色にハイライトされた範囲でトークンの保有量はグラフの線に沿って変化しました。
価格が現在価格 $${P_{now}}$$ から $${P_{up}}$$ に上昇した場合、トークン A 保有量は減少し、トークン B 保有量は増加します。
$$
\begin{array}{ccl}
A_{delta} &=& \frac{L}{\sqrt{P_{up}}} - \frac{L}{\sqrt{P_{now}}}\\\ \\\
B_{delta} &=& L \cdot \sqrt{P_{up}} - L \cdot \sqrt{P_{now}}\\\
\end{array}
$$
価格が現在価格 $${P_{now}}$$ から $${P_{down}}$$ に下落した場合、トークン A 保有量は増加し、トークン B 保有量は減少します。
$$
\begin{array}{ccl}
A_{delta} &=& \frac{L}{\sqrt{P_{down}}} - \frac{L}{\sqrt{P_{now}}}\\\ \\\
B_{delta} &=& L \cdot \sqrt{P_{down}} - L \cdot \sqrt{P_{now}}\\\
\end{array}
$$
集中流動性 AMM の板取引表現
板取引における点と範囲
下図は株取引アプリから取ってきたスクリーンショットです。
いわゆる板取引・オーダーブックでは注文はある 1 点に対して行われます。
この図では、1株を 11,000 円ちょうどで売りたいという注文が 3,200 株分存在します。また、1株を 10,970 円ちょうどで買いたいという注文が 5,800 株分存在します。
「ちょうど」という表現通り、約定した場合の価格は 1 つであるため、注文は「点」に対して行われています。
ここで、「範囲」を点の集合として考えてみます。
この図では、1株を 11,000 円から 11,010 円の間で売りたいという注文が 11,300 (3,200 + 6,500 + 1,600) 株分存在すると言えます。
同様に、1株を 11,000 円から 10,960 円の間で買いたいという注文は 23,300 (5,800 + 3,200 + 14,300) 株分存在すると言えます。
集中流動性を範囲に区切り板取引のように表す
集中流動性 AMM を板取引表現に変換するために、流動性を提供している範囲を細切れにします。
細切れに区切ると、ふりかえりで確認した通り、それぞれの範囲内に存在するトークンの量が $${A_{delta}}$$ と $${B_{delta}}$$ として計算可能になります。
具体的な数値に置き換えます。
プール: SOL/USDC
手数料率: 1 %
流動性($${L}$$): 1000
現在価格: 100 USDC / SOL
レンジ: $${[92, 108]}$$
現在価格以上のレンジは以下の 8 つの範囲に区切られました。
$${[100, 101]}$$
$${[101, 102]}$$
$${[102, 103]}$$
$${[103, 104]}$$
$${[104, 105]}$$
$${[105, 106]}$$
$${[106, 107]}$$
$${[107, 108]}$$
現在価格以下のレンジも同様に 8 つの範囲に区切られました。
$${[99, 100]}$$
$${[98, 99]}$$
$${[97, 98]}$$
$${[96, 97]}$$
$${[95, 96]}$$
$${[94, 95]}$$
$${[93, 94]}$$
$${[92, 93]}$$
それぞれの範囲におけるトークン保有量の変化 $${SOL_{delta}}$$ と $${USDC_{delta}}$$ を求めます。
例として $${[100, 101]}$$ の範囲を計算します。絶対値は変わりませんが、現在価格より上の範囲なので、$${100 \rightarrow 101}$$ の値上がりとして扱います。
$$
\begin{array}{lclcl}
SOL_{delta} &=& \frac{1000}{\sqrt{101}} - \frac{1000}{\sqrt{100}} &=& -0.49628\\\ \\\
USDC_{delta} &=& 1000 \cdot \sqrt{101} - 1000 \cdot \sqrt{100} &=& 49.876\\\
\end{array}
$$
同様に、$${[99, 100]}$$ の範囲を計算します。こちらも絶対値には影響しませんが、現在価格より下の範囲なので、$${100 \rightarrow 99}$$ の値下がりとして扱います。
$$
\begin{array}{lclcl}
SOL_{delta} &=& \frac{1000}{\sqrt{99}} - \frac{1000}{\sqrt{100}} &=& 0.50378\\\ \\\
USDC_{delta} &=& 1000 \cdot \sqrt{99} - 1000 \cdot \sqrt{100} &=& -50.126\\\
\end{array}
$$
残りの範囲も同様に計算した結果が以下です。
この表現から、価格が 100 から 101 へ上昇した場合、提供している流動性から 0.49628 SOL を払い出し、49.876 USDC を受け取ることが直感的に理解できるようになります。
この段階でほぼ板取引表現は完成しましたが、マイナスの数字が並んでいるのは表現として避けたいです。また、流動性として実際に持っているトークンがマイナスで表現されていることに違和感があります。
価格が 100 から 101 へ上昇した場合に 0.49628 SOL を払い出せるのは、実際に 0.49628 SOL を保有しているからです。一方で、49.876 USDC は受け取る量であり、実際に持っている量ではありません。
よって、実際に持っている量のマイナス表示をやめ、かつ、実際にもっていない量はグレーで表記します。
これが集中流動性の板取引表現です。
株の板取引では「点」が自然であり、「範囲」に考えを拡張しました。(集中流動性) AMM では「範囲」が自然な状態です。あえて「点」を考えるならば、無数の点に注文がばらまかれており、それらの合計がこの「範囲」の数値になると言えます。
Part 2 へ続きます。
この記事が気に入ったらサポートをしてみませんか?