# APR estimado para CLMM

## Descripción general

En un pool CLMM, las comisiones se distribuyen proporcionalmente a la liquidez dentro del rango en cada tick. Calcular un APR preciso en todos los ticks y LPs es extremadamente complejo: las fórmulas tradicionales de APR de producto constante no se aplican.

**Los rendimientos proyectados para los CLMM deben considerarse, en el mejor de los casos, como estimaciones.**

Raydium muestra tres métodos de estimación de APR:

1. **APR estimado general del pool** — promedio de todo el pool
2. **Método Delta** — basado en la proporción de liquidez de tu posición
3. **Método multiplicador** — basado en el solapamiento histórico del rango de precios

***

### APR estimado general del pool

Asume que las comisiones de trading y las emisiones se distribuyen entre toda la liquidez del pool, incluidas las posiciones fuera de rango.

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

***

### Método Delta

Calcula el APR estimado en función del cambio implícito (delta) de tu posición en la liquidez del pool, determinado por tu rango de precios y tamaño.

**Condición**

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

Donde:

| Variable | Descripción   |
| -------- | ------------- |
| $$i\_l$$ | lowerTickId   |
| $$i\_c$$ | currentTickId |
| $$i\_u$$ | upperTickId   |

**Cantidades de tokens en una posición**

$$
\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)
$$

**Cálculo de ΔL**

Para la estimación de tokenA ($$\Delta X$$) y tokenB ($$\Delta Y$$) necesitamos saber $$\Delta L$$:

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

Así que tomamos:

$$
(\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
$$

Luego:

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

Después de calcular para $$\Delta L$$, podemos calcular $$\Delta X$$ y $$\Delta Y$$ usando:

$$
\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)
$$

**Comisión diaria estimada**

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

Donde:

| Variable      | Descripción                                                                       |
| ------------- | --------------------------------------------------------------------------------- |
| $$volume24H$$ | Promedio del volumen de 24h                                                       |
| $$L$$         | Liquidez total (acumulado de liquidityNet de todos los ticks que $$i \leq i\_c$$) |
| $$\Delta L$$  | Liquidez delta                                                                    |

**Cantidades de liquidez**

Y puede calcularse a partir de:

$$
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}}
$$

| Condición                                   | $$\Delta L$$                                            |
| ------------------------------------------- | ------------------------------------------------------- |
| Si $$i\_c < i\_l$$                          | $$\Delta L = liquidityAmount0$$                         |
| Si $$i\_c > i\_u$$                          | $$\Delta L = liquidityAmount1$$                         |
| Si $$i\_c \geq i\_l$$ && $$i\_c \leq i\_u$$ | $$\Delta L = \min(liquidityAmount0, liquidityAmount1)$$ |

***

### Método multiplicador

Calcula el APR estimado en función de cuánto se superpone tu rango de precios con la actividad histórica de trading.

**Suposiciones**

* Los datos históricos de precios se usan para extrapolar datos futuros de precios (no es el mejor indicador del rendimiento futuro, pero ofrece una estimación aceptable)
* Se asume que la fluctuación de precios dentro del rango histórico es consistente a lo largo del intervalo de tiempo, asemejándose a una función periódica con amplitud igual a los límites superior e inferior del precio

**Variables**

| Variable       | Descripción                                                                       |
| -------------- | --------------------------------------------------------------------------------- |
| $$u\_{lower}$$ | Límite inferior del rango de precios de liquidez concentrada del usuario          |
| $$u\_{upper}$$ | Límite superior del rango de precios de liquidez concentrada del usuario          |
| $$h\_{lower}$$ | Límite inferior del rango histórico de precios en un período de tiempo específico |
| $$h\_{upper}$$ | Límite superior del rango histórico de precios en un período de tiempo específico |

**Intersección retroactiva del rango**

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

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

**Definiciones de rango**

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

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

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

Donde $$retroRange$$ es la intersección retroactiva entre $$userRange$$ y $$histRange$$.

**Cálculo del multiplicador**

Sea $$m$$ = multiplicador de las recompensas o comisiones que recibirá el usuario.

| Condición                  | Multiplicador                                                             |
| -------------------------- | ------------------------------------------------------------------------- |
| $$retroRange \leq 0$$      | $$m = 0$$                                                                 |
| $$userRange = retroRange$$ | $$m = \frac{histRange}{retroRange}$$                                      |
| $$histRange = retroRange$$ | $$m = \frac{retroRange}{userRange}$$                                      |
| De lo contrario            | $$m = \frac{retroRange}{tradeRange} \times \frac{retroRange}{userRange}$$ |

***

### Notas importantes

* Estas son **estimaciones**, no rendimientos garantizados
* Los rendimientos reales dependen del volumen de trading, los movimientos de precio y la competencia de otros LPs
* Los rangos más estrechos ganan más comisiones cuando están dentro del rango, pero corren un mayor riesgo de salir del rango con más frecuencia
* Las posiciones fuera de rango no generan comisiones
