# CLMMの推定APR

## 概要

CLMMプールでは、手数料は各ティックにおけるレンジ内流動性に比例して分配されます。すべてのティックとLP全体で正確なAPRを計算するのは非常に複雑であり、従来の定積APR公式は適用できません。

**CLMMの予想リターンは、せいぜい推定値として考えるべきです。**

Raydiumでは3つのAPR推定方法を表示します：

1. **プール全体の推定APR** — プール全体の平均
2. **デルタ法** — あなたのポジションの流動性シェアに基づく
3. **マルチプライヤー法** — 過去の価格レンジの重なりに基づく

***

### プール全体の推定APR

取引手数料とエミッションが、レンジ外のポジションを含むプール内のすべての流動性に分配されると仮定します。

$$
APR = \sum(d\_{365}, h\_{24}, s\_{3600}, b\_{0.5}) \times \frac{(perBlockReward \times rewardPrice) + totalTradingFee}{totalLiquidityValue}
$$

***

### デルタ法

あなたのポジションの、プール流動性に対する暗黙の変化（デルタ）に基づいて推定APRを計算します。これは、あなたの価格レンジとサイズによって決まります。

**条件**

$$
i\_l \leq i\_c < i\_u
$$

次のとおり：

| 変数       | 説明            |
| -------- | ------------- |
| $$i\_l$$ | lowerTickId   |
| $$i\_c$$ | currentTickId |
| $$i\_u$$ | upperTickId   |

**ポジション内のトークン数量**

$$
\Delta Y = \Delta L \times (\sqrt{P} - \sqrt{P\_l})
$$

$$
\Delta X = \Delta L \times \left(\frac{1}{\sqrt{P}} - \frac{1}{\sqrt{P\_u}}\right)
$$

**ΔLの計算**

tokenA（$$\Delta X$$）と tokenB（$$\Delta Y$$）の推定には、以下を知る必要があります $$\Delta L$$:

$$
(\Delta Y \times pUSDY) + (\Delta X \times pUSDX) = targetAmount
$$

したがって、次を取ります：

$$
(\Delta L \times (\sqrt{P} - \sqrt{P\_l}) \times pUSDY) + (\Delta L \times \left(\frac{1}{\sqrt{P}} - \frac{1}{\sqrt{P\_u}}\right) \times pUSDX) = targetAmount
$$

次に：

$$
\Delta L = \frac{targetAmount}{(\sqrt{P} - \sqrt{P\_l}) \times pUSDY + \left(\frac{1}{\sqrt{P}} - \frac{1}{\sqrt{P\_u}}\right) \times pUSDX}
$$

を計算した後、 $$\Delta L$$を計算できます $$\Delta X$$ と $$\Delta Y$$ 次を使用して：

$$
\Delta Y = \Delta L \times (\sqrt{P} - \sqrt{P\_l})
$$

$$
\Delta X = \Delta L \times \left(\frac{1}{\sqrt{P}} - \frac{1}{\sqrt{P\_u}}\right)
$$

**推定日次手数料**

$$
Fee = feeTier \times volume24H \times \frac{\Delta L}{L + \Delta L}
$$

次のとおり：

| 変数            | 説明                                                   |
| ------------- | ---------------------------------------------------- |
| $$volume24H$$ | 24時間出来高の平均                                           |
| $$L$$         | 総流動性（すべてのティックからの liquidityNet の累積で、 $$i \leq i\_c$$) |
| $$\Delta L$$  | デルタ流動性                                               |

**流動性数量**

そして次の式から計算できます：

$$
liquidityAmount0 = amount0 \times \frac{\sqrt{P\_u} \times \sqrt{P\_l}}{\sqrt{P\_u} - \sqrt{P\_l}}
$$

$$
liquidityAmount1 = \frac{amount1}{\sqrt{P\_u} - \sqrt{P\_l}}
$$

| 条件                                          | $$\Delta L$$                                            |
| ------------------------------------------- | ------------------------------------------------------- |
| もし $$i\_c < i\_l$$                          | $$\Delta L = liquidityAmount0$$                         |
| もし $$i\_c > i\_u$$                          | $$\Delta L = liquidityAmount1$$                         |
| もし $$i\_c \geq i\_l$$ && $$i\_c \leq i\_u$$ | $$\Delta L = \min(liquidityAmount0, liquidityAmount1)$$ |

***

### マルチプライヤー法

あなたの価格レンジが過去の取引活動とどれだけ重なっているかに基づいて、推定APRを計算します。

**前提条件**

* 過去の価格データを使用して将来の価格データを外挿します（将来のパフォーマンスを示す最良の指標ではありませんが、妥当な推定値を提供します）
* 過去のレンジ内での価格変動は、上限と下限の価格境界に等しい振幅を持つ周期関数に似た形で、時間区間全体にわたり一定であると仮定します

**変数**

| 変数             | 説明                   |
| -------------- | -------------------- |
| $$u\_{lower}$$ | ユーザーの集中流動性の価格レンジの下限  |
| $$u\_{upper}$$ | ユーザーの集中流動性の価格レンジの上限  |
| $$h\_{lower}$$ | 特定の期間における過去の価格レンジの下限 |
| $$h\_{upper}$$ | 特定の期間における過去の価格レンジの上限 |

**遡及的なレンジの交差**

$$
r\_{lower} = \max(u\_{lower}, h\_{lower})
$$

$$
r\_{upper} = \min(u\_{upper}, h\_{upper})
$$

**レンジの定義**

$$
userRange = u\_{upper} - u\_{lower}
$$

$$
histRange = h\_{upper} - h\_{lower}
$$

$$
retroRange = r\_{upper} - r\_{lower}
$$

次のとおり $$retroRange$$ は、次の間の遡及的な交差です $$userRange$$ と $$histRange$$.

**マルチプライヤーの計算**

次を定義します $$m$$ = ユーザーが受け取る報酬または手数料のマルチプライヤー。

| 条件                         | マルチプライヤー                                                                  |
| -------------------------- | ------------------------------------------------------------------------- |
| $$retroRange \leq 0$$      | $$m = 0$$                                                                 |
| $$userRange = retroRange$$ | $$m = \frac{histRange}{retroRange}$$                                      |
| $$histRange = retroRange$$ | $$m = \frac{retroRange}{userRange}$$                                      |
| それ以外の場合                    | $$m = \frac{retroRange}{tradeRange} \times \frac{retroRange}{userRange}$$ |

***

### 重要な注意事項

* これらは **推定値**であり、保証されたリターンではありません
* 実際のリターンは、取引量、価格変動、および他のLPからの競争に依存します
* レンジが狭いほど、レンジ内にあるときの手数料は増えますが、レンジ外に出るリスクも高くなります
* レンジ外のポジションは手数料を一切獲得しません
