> ## 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.

# Biaya AMM v4

> Biaya perdagangan 0,25%, pembagian LP/protokol, generasi PnL dari pengisian OpenBook, dan cara admin menghapus biaya protokol yang terkumpul.

<Info>
  **Halaman ini diterjemahkan secara otomatis oleh AI. Versi bahasa Inggris adalah acuan resmi.**

  [Lihat versi bahasa Inggris →](/products/amm-v4/fees)
</Info>

## Satu-satunya tingkatan yang dipublikasikan

Berbeda dengan CPMM dan CLMM, AMM v4 **tidak memiliki akun `AmmConfig`**. Biaya disimpan langsung pada struct `AmmInfo.fees` setiap pool dan ditetapkan saat pembuatan pool. Nilai default yang mencakup praktis semua pool AMM v4 yang aktif:

| Bidang on-chain                                     | Default       | Arti                                                                                                                                        |
| --------------------------------------------------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------- |
| `swap_fee_numerator / swap_fee_denominator`         | `25 / 10_000` | **Biaya perdagangan kotor pada swap jalur AMM: 0,25% dari volume input.**                                                                   |
| `trade_fee_numerator / trade_fee_denominator`       | `25 / 10_000` | Digunakan oleh integrasi OpenBook untuk menghitung harga limit-order inklusif biaya. Sama dengan `0,25%` seperti `swap_fee` secara default. |
| `pnl_numerator / pnl_denominator`                   | `12 / 100`    | **Bagian protokol dari biaya swap: 12%** — yaitu `0,25% × 12% = 0,03%` dari volume. Terakumulasi ke penghitung `need_take_pnl_*`.           |
| `min_separate_numerator / min_separate_denominator` | `5 / 10_000`  | Lantai presisi internal yang digunakan oleh logika pembulatan pembagian biaya.                                                              |

Perhatikan bahwa `pnl_numerator / pnl_denominator` adalah fraksi **dari biaya swap**, bukan dari volume perdagangan — kesalahan bacaan yang umum. Bagian LP adalah pelengkap (`88%` dari biaya = `0,22%` dari volume) dan bersifat implisit; tidak ada numerator "bagian LP" terpisah.

Sejumlah kecil pool awal dibuat dengan numerator yang berbeda; selalu baca `AmmInfo.fees` sebelum mengutip.

**Tidak ada biaya dana** dan **tidak ada baris biaya kreator**: ini adalah inovasi CPMM/CLMM yang tidak ada dalam model biaya asli AMM v4.

## Bagaimana pembagian dihitung

Pada setiap swap, pool mengenakan biaya perdagangan kotor dari jumlah input, kemudian membagi:

```
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` tetap berada di vault dan berkontribusi pada `k` berikutnya. LP menangkapnya dengan menebus token LP nanti.
* `pnl_portion` menambah `AmmInfo.state_data.need_take_pnl_coin` atau `need_take_pnl_pc` tergantung pada sisi mana yang merupakan input swap.

Trik penjaga invarian yang sama seperti CPMM: jumlah PnL secara fisik berada di vault tetapi dikurangi dari cadangan yang digunakan dalam kurva, jadi `TakePnl` memindahkan token keluar tanpa mengubah harga.

## PnL dari OpenBook (historis)

<Note>
  **Tidak lagi terkumpul.** Integrasi OpenBook dinonaktifkan, sehingga aliran PnL *kedua* yang dijelaskan di bagian ini tidak lagi dihasilkan. Penghitung `total_pnl_{coin,pc}` pada pool yang ada mungkin membawa nilai historis, tetapi tidak ada jumlah baru yang ditambahkan. Jalur biaya protokol 0,03% (di atas) tidak terpengaruh dan masih aktif.
</Note>

Secara historis, AMM v4 memiliki aliran pendapatan *kedua* mirip biaya: ketika limit order-nya di OpenBook terisi, pool bisa berada di sisi pengambil pengisian dan menghasilkan atau membayar spread pembuat/pengambil pasar. Acara PnL ini diselesaikan ke dalam vault pool selama `MonitorStep` dan program mengkreditnya ke `state_data.total_pnl_{coin,pc}` sebagai penghitung informasi.

* Ketika grid yang diposting pool dikalibrasi dengan benar di sekitar harga kurva, pengisian OpenBook cenderung **positif biaya** untuk pool — AMM secara efektif membuat pasar di OpenBook dan mendapatkan rabat pembuat.
* Ketika OpenBook berhenti atau antrean acara penuh, pool bisa duduk di atas pesanan basi yang terisi dengan harga yang merugikan, menghasilkan PnL negatif. Kopling operasional ini adalah salah satu motivasi untuk beralih dari desain hibrida.

PnL OpenBook ini **bukan** sama dengan biaya protokol 0,03%. PnL OpenBook menggembungkan cadangan pool secara langsung (menguntungkan LP + protokol sebanding dengan pembagian biaya), sementara biaya protokol 0,03% ditandai khusus untuk sweeping admin. Dengan sisi OpenBook mati, satu-satunya akumulasi biaya hari ini adalah 0,25% pada swap AMM dan pembagian 22/3 nya.

## Pengumpulan

Admin (multisig Raydium) memanggil `WithdrawPnl` / `TakePnl` untuk menghapus `need_take_pnl_*` ke akun "pemilik PnL" tingkat pool yang dikonfigurasi pada `AmmConfig` program (konfigurasi berbeda, scoped program — bukan AmmConfig gaya per-pool CPMM). Penghapusan:

1. Menyelesaikan pengisian OpenBook yang tertunda terlebih dahulu. *(Operasi kosong sekarang OpenBook tidak aktif.)*
2. Mentransfer `need_take_pnl_coin` / `need_take_pnl_pc` dari vault pool ke tujuan PnL.
3. Mengosongkan penghitung.

Operasi tidak menggerakkan kurva. LP seharusnya tidak melihat perubahan harga di seluruh panggilan `TakePnl`.

## Penebusan biaya LP

Tidak ada instruksi khusus "kumpulkan biaya LP". Biaya LP terakumulasi dalam vault dan menggembungkan `k` seiring waktu; LP merealisasikannya dengan membakar token LP melalui `Withdraw`. Nilai token LP tumbuh secara monotonik saat `(coin_reserve_effective, pc_reserve_effective)` tumbuh.

## Visualisasi: di mana volume 1.000 USDC pergi

Pada swap yang berat USDC sebesar \$1.000 terhadap pool dengan parameter default:

```
Gross trade fee (0.25%):   $2.50
  LP share   (0.22%):       $2.20   → stays in pool, raises k
  PnL share  (0.03%):       $0.30   → need_take_pnl_pc, swept by TakePnl
Remainder sent to user:   $997.50   (minus curve-driven price impact)
```

Bandingkan dengan CPMM `AmmConfig[0]` (tingkatan 0,25%, tanpa biaya kreator): LP mendapat \$2,10, protokol \$0,30, dana \$0,10. CPMM memperkenalkan baris dana dengan mengukir dari apa yang akan menjadi bagian LP dalam tingkatan setara AMM v4.

## Tabel perbandingan

|                     | AMM v4                           | CPMM `index=0`                                   | CLMM `index=2`                   |
| ------------------- | -------------------------------- | ------------------------------------------------ | -------------------------------- |
| Biaya perdagangan   | 0,25%                            | 0,25%                                            | 0,25%                            |
| LP                  | 0,22%                            | 0,21%                                            | Bervariasi menurut emisi         |
| Protokol            | 0,03%                            | 0,03%                                            | Per tingkatan                    |
| Dana                | N/A                              | 0,01%                                            | Per tingkatan                    |
| Kreator (opsional)  | N/A                              | 0 secara default                                 | N/A                              |
| Di mana biaya duduk | Vault pool + need\_take\_pnl\_\* | Vault pool + protocol\_fees\_\* + fund\_fees\_\* | Global + per-tick + per-position |

Matriks lengkap di [`reference/fee-comparison`](/id/reference/fee-comparison).

## Catatan pengintegrasian

* **Kutipan.** Ambil `AmmInfo` melalui SDK atau `api-v3.raydium.io/pools/info/ids`. **Jangan** hitung kutipan Anda sendiri terhadap saldo vault mentah — jumlah yang disimpan OpenBook dan pengecualian PnL keduanya menarik cadangan efektif jauh dari apa yang ditunjukkan `getTokenAccountBalance`.
* **Parameter biaya basi.** Pada prinsipnya `SetParams` bisa mengubah `swap_fee_numerator`, tetapi dalam praktik multisig Raydium belum mengubah default untuk pool aktif mana pun. Tetap saja, selalu baca dari status on-chain daripada hardcoding.
* **Tanpa imbalan.** AMM v4 tidak mendukung emisi imbalan pada pool. Farm ekosistem legacy (Farm v3 / v5 / v6) adalah setara layer staking — lihat [`products/farm-staking`](/id/products/farm-staking).

## Ke mana selanjutnya

* [`products/amm-v4/math`](/id/products/amm-v4/math) — penurunan biaya perdagangan di dalam kurva.
* [`products/amm-v4/instructions`](/id/products/amm-v4/instructions) — daftar akun `WithdrawPnl` / `SetParams`.
* [`reference/fee-comparison`](/id/reference/fee-comparison) — matriks berdampingan.

Sumber:

* [Program AMM Raydium — `raydium-io/raydium-amm`](https://github.com/raydium-io/raydium-amm)
* Bidang numerator/denominator biaya AMM v4 on-chain (diverifikasi terhadap akun `AmmInfo` mainnet).
