見出し画像

流動性提供の手数料発生のしくみ Part 1

DeFi に触れ始めた時に、流動性提供が何をしているのか理解するのはややハードルがあると思います。

  • 価格がレンジの外に出たらどうなる?

  • 価格がレンジの外に出たら精算されてしまう?

  • 価格のレンジはどのように設定する?

  • 当初より一方のトークンが少なくなったのはなぜ?

  • 流動性提供は稼げるのか?

  • 思ったほど手数料が稼げていないのはなぜ?

  • インパーマネント・ロスで損しない?

  • そもそも流動性提供とは何をしている?

  • ステーキングと同じものか?

こういった疑問が投げかけられているのを数多く見てきました。

私が最初に流動性提供をしたのは 2022 年初頭だったと思います。

SHDW というトークンを IDO で少し購入した後、Orca で流動性提供をすると SHDW を報酬として貰えるという情報を目にしました。

Discord で説明されている通りに流動性提供をしました。何も理解しておらず、「みんなやってるし、少額だからやってみよう」という状態でした。ですから、流動性提供の謎さ加減についてはよく覚えています。

このポストでは、流動性提供における手数料発生のしくみを整理します。手数料発生の仕組みを理解すると、どのように流動性を提供したら有利そうか、作戦を考えられるようになると思います。

以下のポストで利用しているグラフをベースにし、集中流動性 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]}$$

L = 1000, [92, 108] の SOL/USDC プールの集中流動性を範囲で区切る

現在価格以上のレンジは以下の 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 へ続きます。


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