> ## Documentation Index
> Fetch the complete documentation index at: https://docs.raydium.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Comisiones de AMM v4

> La comisión de intercambio del 0,25%, su división entre LP y protocolo, generación de PnL a partir de ejecuciones de OpenBook, y cómo el administrador retira las comisiones de protocolo acumuladas.

<Info>
  **Esta página fue traducida automáticamente por IA. La versión en inglés es la fuente autorizada.**

  [Ver versión en inglés →](/products/amm-v4/fees)
</Info>

## El único nivel publicado

A diferencia de CPMM y CLMM, AMM v4 **no tiene una cuenta `AmmConfig`**. Las comisiones se almacenan directamente en la estructura `AmmInfo.fees` de cada pool y se fijan en la creación del pool. Los valores predeterminados que cubren esencialmente todos los pools de AMM v4 activos:

| Campo en cadena                                     | Predeterminado | Significado                                                                                                                                                           |
| --------------------------------------------------- | -------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `swap_fee_numerator / swap_fee_denominator`         | `25 / 10_000`  | **Comisión bruta de intercambio en swaps por ruta AMM: 0,25% del volumen de entrada.**                                                                                |
| `trade_fee_numerator / trade_fee_denominator`       | `25 / 10_000`  | Vestigial después de la eliminación de OpenBook (históricamente se usaba para fijación de precios de órdenes limitadas). El mismo `0,25%` que `swap_fee` por defecto. |
| `pnl_numerator / pnl_denominator`                   | `12 / 100`     | **Participación del protocolo en la comisión de intercambio: 12%** — es decir, `0,25% × 12% = 0,03%` del volumen. Se acumula en los contadores `need_take_pnl_*`.     |
| `min_separate_numerator / min_separate_denominator` | `5 / 10_000`   | Piso de precisión interna utilizado por la lógica de redondeo de división de comisiones.                                                                              |

Ten en cuenta que `pnl_numerator / pnl_denominator` es una fracción **de la comisión de intercambio**, no del volumen de operaciones — una lectura errónea común. La participación de LP es el complemento (`88%` de la comisión = `0,22%` del volumen) y es implícita; no hay un numerador separado de "participación de LP".

Un pequeño número de pools antiguos se crearon con numeradores diferentes; siempre lee `AmmInfo.fees` antes de citar.

**No hay comisión de fondo** ni **línea de comisión de creador**: estas son invenciones de CPMM/CLMM que no existían en el modelo de comisiones original de AMM v4.

## Cómo se calcula la división

En cada intercambio, el pool cobra la comisión bruta de intercambio del monto de entrada y luego distribuye:

```
gross_fee   = ceil(amount_in * swap_fee_numerator / swap_fee_denominator)        // 0.25% of amount_in
pnl_portion = gross_fee * pnl_numerator / pnl_denominator                        // 12% of gross_fee
lp_portion  = gross_fee − pnl_portion                                            // 88% of gross_fee
```

* `lp_portion` se deja en la bóveda y contribuye al siguiente `k`. Los LP la capturan canjeando tokens de LP más tarde.
* `pnl_portion` incrementa `AmmInfo.state_data.need_take_pnl_coin` o `need_take_pnl_pc` dependiendo de cuál sea el lado de entrada del intercambio.

El mismo truco de preservación de invariantes que CPMM: la cantidad de PnL se encuentra físicamente en la bóveda pero se resta de las reservas utilizadas en la curva, por lo que `TakePnl` mueve tokens sin cambiar el precio.

## PnL de OpenBook (histórico)

<Note>
  **Eliminado.** La integración de OpenBook ha sido eliminada del programa, por lo que el *segundo* flujo de PnL descrito en esta sección ya no se genera. Los contadores `total_pnl_{coin,pc}` ahora son campos deprecados — contienen valores históricos congelados y nunca se actualizan. La ruta de comisión de protocolo del 0,03% (arriba) no se ve afectada y sigue activa.
</Note>

Históricamente, AMM v4 tenía un *segundo* flujo de ingresos similar a una comisión: cuando sus órdenes limitadas en OpenBook se ejecutaban, el pool podía estar en el lado tomador de la ejecución y ganar o pagar el diferencial de creador/tomador del mercado. Estos eventos de PnL se liquidaban en las bóvedas del pool durante `MonitorStep` y el programa los acreditaba a `state_data.total_pnl_{coin,pc}` como contadores informativos.

* Cuando la cuadrícula publicada del pool estaba correctamente calibrada alrededor del precio de la curva, las ejecuciones de OpenBook tendían a ser **positivas en comisiones** para el pool — el AMM estaba efectivamente creando mercado en OpenBook y ganando reembolsos de creador.
* Cuando OpenBook se pausaba o la cola de eventos se llenaba, el pool podía quedarse con órdenes antiguas que se ejecutaban a precios desfavorables, produciendo PnL negativo. Este acoplamiento operativo fue una de las motivaciones para alejarse del diseño híbrido.

Este PnL de OpenBook **no era** lo mismo que la comisión de protocolo del 0,03%. El PnL de OpenBook inflaba las reservas del pool directamente (beneficiando a los LP + protocolo proporcionalmente a la división de comisiones), mientras que la comisión de protocolo del 0,03% estaba etiquetada específicamente para retiro administrativo. Con el lado de OpenBook desactivado, el único acúmulo de comisiones hoy es el 0,25% en swaps de AMM y su división 22/3.

## Recopilación

El administrador (multisig de Raydium) llama a `WithdrawPnl` para retirar `need_take_pnl_*` a las cuentas "propietario de PnL" a nivel de pool configuradas en el `AmmConfig` del programa (una configuración diferente, con alcance de programa — no el `AmmConfig` de estilo CPMM por pool). El retiro:

1. Transfiere `need_take_pnl_coin` / `need_take_pnl_pc` desde las bóvedas del pool al destino de PnL.
2. Pone a cero los contadores.

Ya no hay un paso de liquidación de OpenBook. Si el saldo de la bóveda es insuficiente para cubrir el PnL acumulado, la instrucción ahora devuelve `TakePnlError` directamente. La operación no mueve la curva — los LP no deberían ver ningún cambio de precio en una llamada a `WithdrawPnl`. Ten en cuenta que el diseño de cuenta de `WithdrawPnl` cambió en la actualización de 2026-07 (ver [instrucciones](/es/products/amm-v4/instructions#withdrawpnl-takepnl)).

## Redención de comisiones de LP

No hay una instrucción dedicada para "recopilar comisiones de LP". Las comisiones de LP se acumulan en las bóvedas e inflan `k` con el tiempo; los LP las realizan quemando tokens de LP a través de `Withdraw`. El valor de un token de LP crece monótonamente a medida que `(coin_reserve_effective, pc_reserve_effective)` crecen.

## Visualización: dónde va 1.000 USDC de volumen

En un intercambio pesado en USDC de \$1.000 contra un pool con parámetros predeterminados:

```
Comisión bruta de intercambio (0,25%):   $2,50
  Participación de LP   (0,22%):       $2,20   → permanece en el pool, aumenta k
  Participación de PnL  (0,03%):       $0,30   → need_take_pnl_pc, retirado por TakePnl
Resto enviado al usuario:   $997,50   (menos impacto de precio impulsado por la curva)
```

Compara con CPMM `AmmConfig[0]` (nivel 0,25%, sin comisión de creador): LP obtiene \$2,10, protocolo \$0,30, fondo \$0,10. CPMM introduce la línea de fondo tallándola de lo que habría sido la participación de LP en el nivel equivalente de AMM v4.

## Tabla de comparación

|                                 | AMM v4                                | CPMM `index=0`                                        | CLMM `index=2`                   |
| ------------------------------- | ------------------------------------- | ----------------------------------------------------- | -------------------------------- |
| Comisión de intercambio         | 0,25%                                 | 0,25%                                                 | 0,25%                            |
| LP                              | 0,22%                                 | 0,21%                                                 | Varía según emisiones            |
| Protocolo                       | 0,03%                                 | 0,03%                                                 | Por nivel                        |
| Fondo                           | N/A                                   | 0,01%                                                 | Por nivel                        |
| Creador (opcional)              | N/A                                   | 0 por defecto                                         | N/A                              |
| Dónde se sientan las comisiones | Bóveda del pool + need\_take\_pnl\_\* | Bóveda del pool + protocol\_fees\_\* + fund\_fees\_\* | Global + por tick + por posición |

Matriz completa en [`reference/fee-comparison`](/es/reference/fee-comparison).

## Notas para integradores

* **Cotización.** Obtén `AmmInfo` a través del SDK o `api-v3.raydium.io/pools/info/ids`. Las reservas ahora son solo de bóveda, por lo que puedes cotizar directamente contra los saldos de la bóveda — solo recuerda restar `need_take_pnl_*` (el PnL acumulado se mantiene en la bóveda pero se excluye de la curva).
* **Parámetros de comisión obsoletos.** En principio `SetParams` podría cambiar `swap_fee_numerator`, pero en la práctica el multisig de Raydium no ha cambiado los valores predeterminados para ningún pool activo. Aún así, siempre lee del estado en cadena en lugar de codificar valores.
* **Sin recompensas.** AMM v4 no admite emisiones de recompensas en el pool. Las granjas del ecosistema heredado (Farm v3 / v5 / v6) son el equivalente de la capa de apuesta — ver [`products/farm-staking`](/es/products/farm-staking).

## Dónde ir a continuación

* [`products/amm-v4/math`](/es/products/amm-v4/math) — la derivación de la comisión de intercambio dentro de la curva.
* [`products/amm-v4/instructions`](/es/products/amm-v4/instructions) — listas de cuentas de `WithdrawPnl` / `SetParams`.
* [`reference/fee-comparison`](/es/reference/fee-comparison) — matriz lado a lado.

Fuentes:

* [Programa Raydium AMM — `raydium-io/raydium-amm`](https://github.com/raydium-io/raydium-amm)
* Campos de numerador/denominador de comisión de AMM v4 en cadena (verificados contra cuentas `AmmInfo` en mainnet).
