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

# Estimasi APR CLMM

> Cara Raydium menghitung angka APR yang ditampilkan di pool CLMM, cara mengestimasi APR Anda sendiri untuk range hipotetis sebelum membuka posisi, dan edge case yang membuat trailing APR menyesatkan.

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

  [Lihat versi bahasa Inggris →](/algorithms/clmm-apr)
</Info>

<Info>
  **APR yang ditampilkan di Raydium UI** untuk pool CLMM adalah APR fee yang terealisasi dari **likuiditas in-range** selama 24 jam terakhir, diproyeksikan ke setahun. Ini bukan APR yang *posisi Anda* akan hasilkan — itu bergantung pada range Anda, waktu Anda berada in-range, dan bagian Anda dari likuiditas yang aktif selama jendela trading.
</Info>

## Formula utama

Untuk pool CLMM, APR fee harian yang ditampilkan di Raydium dihitung sebagai:

```
apr_24h = (fees_24h / tvl_in_range_24h) · 365
```

Di mana:

* `fees_24h` adalah jumlah fee swap yang disisi LP yang terkumpul dalam 24 jam terakhir (dalam USD).
* `tvl_in_range_24h` adalah nilai rata-rata tertimbang waktu (time-weighted average) USD dari likuiditas yang berada **in-range** selama periode tersebut.

Penyebut inilah yang membedakan APR CLMM dari APR CPMM. CPMM menggunakan total TVL pool karena setiap dolar selalu berkontribusi. CLMM hanya menggunakan bagian in-range karena dolar out-of-range tidak menghasilkan apa pun.

## APR yang akan Anda dapatkan sebenarnya

APR headline adalah statistik pool, bukan statistik posisi Anda. APR Anda bergantung pada empat pengali:

```
your_APR = headline_APR
         · (your_in_range_fraction / pool_in_range_fraction)     # concentration bonus
         · time_in_range                                          # range discipline
         · (1 − transfer_fee_haircut)                             # token-2022 tax
         · compounding_factor                                     # jika Anda auto-restake
```

* **Concentration bonus.** Jika range Anda lebih ketat dari rata-rata pool, setiap tick aktif memiliki lebih banyak likuiditas Anda per dolar dibandingkan LP rata-rata. Lebih ketat = bonus lebih besar (dan amplifikasi IL yang proporsional lebih besar).
* **Time in range.** Jika Anda berada in-range hanya 40% dari waktu, kalikan dengan 0.40.
* **Transfer-fee haircut.** Untuk mint Token-2022 dengan fee transfer, setiap pengumpulan fee melalui transfer yang sendirinya mengurangi basis point.
* **Compounding.** Jika Anda `collectFee` dan redeploy ke range yang sama setiap minggu, APR efektif adalah sekitar `(1 + daily_APR)^365 − 1`. Tanpa compounding itu linear.

### Contoh perhitungan

Misalkan pool SOL/USDC CLMM memiliki:

* Volume 24h: \$120M
* Fee tier: 0.05% (LP mendapat bagian 88% dari fee setelah potongan protokol)
* Total TVL: \$40M
* In-range TVL: \$18M (45% dari pool saat ini in-range)

```
fees_24h = 120M · 0.0005 · 0.88 = $52,800
apr_24h  = (52,800 / 18,000,000) · 365 = 107%
```

Raydium UI menampilkan **107% APR** untuk pool. (Contoh ini menggunakan pool yang dalam dan bervolume tinggi untuk membuat angka tetap konkret; pool CLMM tipikal menampilkan APR di mana saja dari 10% hingga 50%, dengan pool bervolume rendah jauh di bawah 10%.)

Sekarang Anda sedang mempertimbangkan membuka posisi:

* Range Anda: cukup ketat sehingga Anda memiliki konsentrasi 2× rata-rata.
* Waktu in-range yang diharapkan: 70% (Anda akan memeriksa setiap minggu).
* Tidak ada fee Token-2022. Tidak ada auto-compounding.

```
your_APR ≈ 107% · 2 · 0.70 = 150%
```

Itu adalah perkiraan, bukan jaminan. Volume yang terealisasi dapat turun atau naik dua kali dalam seminggu.

## Mengapa trailing APR adalah sinyal tertinggal

APR CLMM bergerak **cepat** relatif terhadap APR CPMM karena penyebut in-range TVL bergerak cepat:

* Pergerakan harga besar mendorong sejumlah posisi keluar dari range, mengecilkan penyebut. Tiba-tiba TVL in-range yang tersisa Anda terlihat "APR lebih tinggi" — tetapi hanya karena kompetitor pergi, dan biasanya volume juga turun.
* Pool yang mencapai ATH baru dapat sementara menampilkan APR 500–1000% selama satu jam karena sebagian besar posisi dikalibrasi untuk harga lebih rendah dan hanya beberapa LP agresif yang tersisa in-range.
* Setelah pasar menetap, LP menyeimbangkan kembali dan APR mean-revert.

Aturan praktis:

* **Abaikan APR sub-24h.** Terlalu banyak noise.
* **Lebih suka jendela 7d dan 30d.** Raydium mengekspos keduanya melalui [`GET /pools/info/ids`](/id/sdk-api/rest-api) — field `week.apr` dan `month.apr`.
* **Backtest range spesifik Anda** pada data volume dan harga historis sebelum berkomitmen dengan modal yang berarti.

## Cara matematika bekerja (single-tick step)

Dalam satu tick tunggal, CLMM berperilaku seperti CPMM pada jumlah likuiditas `L` yang aktif di tick tersebut. Fee terkumpul dalam `fee_growth_global_X` dan `fee_growth_global_Y` per unit likuiditas. Untuk posisi dengan likuiditas `Lₚ` yang mencakup range tick `[i_lo, i_hi]`:

```
fees_earned_X = Lₚ · (fee_growth_inside_X(i_lo, i_hi, now) − fee_growth_inside_X(i_lo, i_hi, t_open))
fees_earned_Y = Lₚ · (fee_growth_inside_Y(i_lo, i_hi, now) − fee_growth_inside_Y(i_lo, i_hi, t_open))
```

Di mana `fee_growth_inside` mengurangi fee growth di bawah `i_lo` dan di atas `i_hi` dari accumulator global. Detail di [`algorithms/clmm-math`](/id/algorithms/clmm-math).

Untuk menghitung fee *yang diharapkan* selama periode mendatang untuk range prospektif, estimasi:

```
expected_fees_per_day = Σ_ticks_in_range (volume_at_tick · fee_rate · your_share_at_tick)
```

SDK Raydium mengekspos `getEstimateAprFromPositionAndPool` yang melakukan estimasi ini menggunakan histogram volume-per-tick terkini.

## SDK helper

```ts theme={null}
import { Raydium, TxVersion } from "@raydium-io/raydium-sdk-v2";

const raydium = await Raydium.load({ owner, connection });
const pool = await raydium.clmm.getPoolInfoFromRpc({ poolId });

const apr = await raydium.clmm.estimatedApr({
  poolInfo: pool.poolInfo,
  poolKeys: pool.poolKeys,
  tickLower: -100,   // range yang Anda maksudkan
  tickUpper:  100,
  volumeUsd24h: pool.poolInfo.day.volume, // atau estimasi khusus
});

console.log(`Expected APR: ${apr.feeApr * 100}% (fee-only, excludes farm incentives)`);
```

Method ini juga secara terpisah mengembalikan APR farm apa pun jika pool memiliki farm yang terpasang. "LP APR" lengkap Anda adalah `feeApr + farmApr`.

## Di mana farm APR cocok

Pool CLMM Raydium dapat memiliki emisi Farm v6 yang berlapis. Reward farm dibayar dalam **reward mint** (sering RAY atau token partner) independen dari fee swap. Raydium UI biasanya menampilkan:

```
Total APR = Fee APR + Farm APR [dalam $X, Y, Z reward mint]
```

Farm APR dihitung serupa tetapi menggunakan jadwal emisi reward dan harga saat ini dari mint reward dalam USD. Tidak seperti fee APR, itu tidak bergantung pada volatilitas — itu adalah jadwal yang tetap.

Lihat [`products/farm-staking/overview`](/id/products/farm-staking/overview) untuk matematika emisi farm.

## Kesalahan umum

* **"APR dicompound secara otomatis."** Tidak. Fee harus diklaim via `collectFee`, kemudian redeploy secara manual. Raydium tidak auto-compound fee CLMM.
* **"APR saya = APR headline."** Hanya jika konsentrasi Anda rata-rata, waktu in-range Anda 100%, dan Anda compound dengan ritme yang sama. Ketiganya biasanya salah.
* **"Fee tier lebih tinggi = APR lebih tinggi."** Hanya jika volume bertahan pada fee yang lebih tinggi. Pada 1% sepasang mungkin menampilkan 50% APR tetapi melakukan 1/10 volume; net kurang dari 0.25% pada 120% × 0.1 = 12%.
* **"Posisi out-of-range memiliki risiko nol."** Mereka memiliki zero fee income tetapi full IL pada komposisi token yang ada — posisi sekarang "100% dari sisi mana pun".

## Pointer

* [`algorithms/clmm-math`](/id/algorithms/clmm-math) — derivasi penuh dari fee-growth accumulator.
* [`algorithms/impermanent-loss`](/id/algorithms/impermanent-loss) — sisi loss dari persamaan LP.
* [`user-flows/choosing-a-pool-type`](/id/user-flows/choosing-a-pool-type) — framework keputusan yang menggunakan estimasi APR ini.
* [`sdk-api/rest-api`](/id/sdk-api/rest-api) — endpoint live volume / APR.

Sumber:

* Implementasi Raydium SDK v2 `estimatedApr`.
* Raydium UI pool page (field APR live).
* Derivasi Uniswap V3 fee-growth.
