草稿

この記事はSolana Advent Calendar 2023の6日目の記事(の没草稿)です

前書き

 Solanaの夏到来!ということで界隈は非常に盛り上がっており、アルトコインも軒並み高騰しています。その影響もあってCLMMプールのAPRも100%、200%と非常に魅力的に映る状況が続いています。
 
 しかしこのような数値には一種のバイアスが生じやすく、CLMMプールを理解している人とそうでない人との間で認識にズレが生じやすいのもまた事実です。

 プロトコルのサイト上で提示されているそのほとんどは、当然ながら”数学的に間違っていない”のでいかにももっともらしく見えますが、その一方で自分の都合の良いように解釈してしまいやすい危険性をも孕んでいます。特にCLMMプールはその性質上、このような齟齬が生じやすいのです。

 APRの表記に関しては「そんなのプロトコル側がちゃんと正しいAPRを表示してくれればいい話じゃん!」といった印象を受けるのも当然ではありますが、これも実はなかなか難しい事情があるので、その辺りを知っておいても損はないでしょう。
 ここではその”齟齬”とはいったい何か、なぜそのような"齟齬"が生まれるのか、といったことを解説してみたいと思います。

そもそもCLMMってなに?

 流動性プロバイダーにとっての関心事は収益に帰結しており、APRはその最たる指標となるものです。これを紐解いていく前に、まずはCLMMプールについて簡単に説明しておきましょう。

 最も単純で且つ直感的な例は、我々が普段CEXで一般的に利用している板取引を引き合いに出し、このイメージをCLMMの置換モデルとすることです。一見すると、両者はとてもかけ離れているような印象を受けますが、本質的には非常によく似た構造を持っています。

 その理解の手助けとするために、yugure氏が作成されたAccount microscopeを引用させていただきます。

 こちらはOrcaのWhirlpoolのアカウント情報を表示できるツールです。OrcaのUI上では視覚化されたデータ(グラフやヒストグラム等)が主ですが、こちらからはより数値的な詳細を覗き見ることができます。

 SOL/USDCのプール(0.05%Fee)にフォーカスして、現在提供されている流動性を確認してみましょう。表示されたページの下部へスクロールすると、このようなテーブルデータがあります。

SOL/USDC(0.05%Fee)の流動性

 なんだか見覚えがありませんか?
 そう、これこそがCLMMと板取引とが非常に似ていると言った所以です。BybitのOrderBookと並べてみましょう。

左がBybit|右がWhirlpool

 この記事を書いている2分の間に、1つ目の画像と2つ目の画像ですでにWhirlpoolの数値が更新されています。
 1枚目では"tick index"項の"-27792 ~ -27800"が現在の価格を示しており、2枚目ではこれが"-27784 ~ -27792"へと推移しています。

 板情報における売り板/買い板と見方は同じですね。つまりこの2分の間に、1枚目で赤字の一番下にあった75.18SOLの売り板が喰われて次のtickへと移行し、さらに1407.6USDC相当の買いが入ったということです。板取引との違いは、約定された数量分の売り板であったSOLがUSDCへとSwapされた事で、それがそのままUSDCによる買い板に移り変わったことでしょうか。

 つまりCLMMに流動性を提供するということは、板取引において、
①自身の定めた価格範囲に存在するすべての価格に対して、"Bid""Ask"両サイドに指値を置く
②どちらかが約定した瞬間、その数量分の反対売買となる指値を置く
 
このように行うことと何ら変わりありません。CLMMのMMとはMarketMakerを意味しており、このような執行はまさにそれそのものです。
 
 そして流動性プロバイダーは約定、つまりSwapの発生毎にMakerたるリベートとして手数料収入を受け取っている、とも言えます。さらに付け加えるなら、プール毎に設定されているこの手数料率こそが、スリッページであるとも言えます。CLMMにはBestAsk、BestBidなどといった概念自体はありませんが、手数料率を加味することでこれは表現できます。

このプールにおけるSOLの価格は62.323117USDC
Swapをする人は、売買の方向性に関わらず0.05%の手数料がかかるため、
SOLを売却する場合は62.323117×0.9995=62.292USDC、
購入したい場合は*62.323117/0.9995=62.354USDCの価格となり、
この二つの差が実質的な**スリッページとなる

*先にinput量から手数料を差っ引いて、残りでSOLを購入する
**DEXなどのSwapのUIにはスリッページを設定する項がありますが、これにはマーケットインパクトも含まれているため、厳密には区別が必要です

 誰かが1SOLをSellした直後に、誰かが1SOLをBuyしていった場合、この利鞘が流動性プロバイダーの利益となるわけです。
 このように考えれば、CLMMプールも単純になったのではないでしょうか?

 さて、以上を踏まえて抑えておくべき点は2点です。
①手数料の発生は、BestBid/BestAskとも言える価格(Tick)でのみ生じる
②手数料収入はそのBestTickに流動性を入れている人たちの間で、その比率に応じて分配する

 重要なのは、指定した範囲に対して流動性を提供したとしても、その範囲はTickによって分割されているということです。
 もう一歩踏み込んだ計算をしてみましょう。

画像1の再掲

 例:画像1に表示されている上から下までの価格(62.545473~61.602017)に流動性を提供したとする。
 Tick範囲は19個あるので、1900USDC相当のSOL+USDCで流動性提供をしたとしても、手数料の発生する有効なTickに入る資本は100USDC相当となる。
 現在有効Tickにおいては(4667+11816)USDC相当の流動性が既に存在しているため、この有効Tickで発生した取引高に対する自分の手数料収入の分配率は、100USDC / (4667+11816+100)USDC =0.006となり、0.6%である。
 単純に計算すると、誰かが10000USDCのSwapを行った場合、10000×0.0005=5USDCがプール全体の手数料として入り、そのうちの5×0.006=0.03USDCが自身の取り分となる

プロトコルフィーなども別途存在しますが、まぁここは無視してよいでしょう

 プールにどれだけの取引高があるか、手数料率はいくらなのか
 デポジットはどれだけの範囲で、いくら投入すべきか

 CLMMプールを利用する上では、これらの裁量がとても重要であることがご理解頂けたかと思います。

実際にAPRを算出してみよう

 基本原理がわかったところで、Orcaで表記されているAPRがほんとにちゃんとしているのか、実際に算出してみます。
 せっかくなので実際に使えそうな運用を紹介しつつ、その皮算用をしてみたいと思います。

戦略は以下です。
 ①CEXの先物でFundingRateがプラスのSOL/USDTでショートする
 ②ショートした同量SOLの現物を買う(ヘッジ)
 ③そのSOLをWhirlpoolのbSOL/SOLで流動性提供する
*オプション
 ④Kaminoなどのリバランスプールを使う(エアドロ期待)
 ⑤Kaminoに入れたLPトークンを担保にし、さらにSOLなど借りて追加の利回りを得る
(*オプションである理由はハック/清算管理などのリスク/手間が増えるためです)

概略:
 SOLの同量をヘッジしているので価格変動リスクを受けず、FR収入とファーム収入が得られる。bSOLはSOLのリキッドステークトークンなので、買ったSOLをbSOLにしているだけで、SOLに対して年間+6%程度の価格になる。
Pros:
 価格変動リスクがない
 ここからさらにバブルが来るかどうかはわからないが、バブルが来た場合CEXのFRはほぼ上がるので、上がってからやっても高FRは享受できる
 BLZEの追加報酬を受けられる
Cons:
 DEX/CEXハックリスク
 リバランスが手間(Kaminoを使えば関係ないが、放っておくとプールにデポジットしているアセットがどんどんSOLに偏る)
 ショートしたポジションの清算ライン管理

では皮算用してみます。
・資本1000USDCスタート
・200USDCで、800USDC分のSOLをCEXショート(レバ4倍)
・現在FRが大体20%/yearくらいあるので0.8を掛けて+16%
・残りのUSDCでSOLを買う
・半分をbSOLにする(放置で+6%/半分で+3%/の0.8掛けで+2.4%)
・OrcaのbSOL/SOLにデポジット(表記で8.6%/の0.8掛けで+6.88%)
・これに追加でbSOL/SOLプールはBLZEエアドロ対象となるのでBLZEトークンが不定期にもらえます。APRの計算には適していないので除外

 16+2.4+6.85 = 25.28%のAPYとなります。オマケのBLZEもあるし、バブルが来たらとんでもないFRが付くので、管理する手間はありますが変動リスクがない戦略としては上々なのではないでしょうか。
 しかし結論から言うと、この見積もりは少し甘いものだと思います。


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