Nyetok Modal di Liquidity Pool DeFi Bisa Bikin Rugi Meski Harga Keduanya Naik. Ini Matematika Impermanent Loss
Baca 8 menit
Baca 8 menit
Kamu setor dua token ke liquidity pool DeFi. Enam bulan kemudian, harga dua-duanya naik, dihitung dalam dolar. Harusnya kamu untung. Tapi begitu kamu cek posisimu, nilainya malah lebih kecil dibanding kalau dari awal kamu cuma diam saja megang dua token itu di wallet.
Selisih itu ada namanya: impermanent loss. Ini bukan biaya tersembunyi, bukan juga hack atau penipuan. Ini efek samping yang bisa diprediksi dari cara kerja satu jenis pool DeFi tertentu, dan kamu bisa hitung persis berapa besarnya sebelum itu kejadian ke kamu.
Liquidity pool itu sepasang token yang dikunci di smart contract, fungsinya buat ngebiarin orang lain nuker satu token ke token lainnya tanpa harus ada penjual dan pembeli yang ketemu langsung. Kamu setor dua token itu, biasanya nilainya sama besar dalam dolar, terus trader lain nuker melawan saldo gabungan punyamu. Sebagai gantinya, kamu dapat sedikit fee dari setiap transaksi yang lewat pool itu.
Desain paling umum, dipakai Uniswap dan hampir semua penirunya, namanya pool constant product. Pool ini nyimpen saldo dua tokennya sedemikian rupa sampai kalau dikaliin, hasilnya selalu sama. Selama nggak ada yang setor atau tarik dana, angka hasil kali itu nggak bisa berubah, yang bisa berubah cuma perbandingan antara dua tokennya.
Satu aturan itu saja, dikaliin terus dijaga tetap, itulah penyebab utama impermanent loss.
Waktu ada trader beli Token A dari pool pakai Token B, saldo Token A di pool itu turun dan saldo Token B-nya naik, otomatis, ngikutin aturan constant-product tadi. Pool-nya nggak punya pendapat soal Token A lagi bagus dibeli sekarang atau nggak. Dia cuma jaga biar hasil kali dua saldonya tetap sama.
Dampaknya, begitu harga Token A naik dibanding Token B, pool otomatis jual sebagian Token A-mu ke pasar dan nahan lebih banyak Token B sebagai gantinya. Begitu harga Token A turun, pool beli lagi lebih banyak Token A. Pool-nya selalu jual token yang lagi naik dan beli token yang lagi turun, atas nama kamu, mau kamu setuju sama transaksi itu atau enggak.
Penyeimbangan otomatis itu yang bikin impermanent loss bisa kejadian meski semua token di pool naik harganya dalam dolar. Yang penting bukan apakah harganya naik. Yang penting apakah perbandingan antara dua harga token itu berubah, karena perbandingan itulah yang nentuin pool bakal megang berapa banyak dari masing-masing token.
Misalnya kamu setor 1 unit Token A dan 1 unit Token B ke pool, masing-masing senilai $10, jadi total $20. Beberapa bulan kemudian, Token A naik tiga kali lipat jadi $30, dan Token B naik 50% jadi $15. Dua-duanya naik. Nggak ada satu pun token yang rugi kalau dihitung sendiri-sendiri.
Kalau kamu dari awal cuma pegang dua token itu di wallet, sekarang nilainya $30 + $15 = $45.
Tapi karena kamu setor dua token itu ke pool constant-product, pool-nya otomatis jual sebagian Token A-mu ke pasar begitu harganya naik (biar hasil kalinya tetap seimbang) dan pakai hasil jualannya buat nahan lebih banyak Token B. Hasilnya, pakai rumus constant-product standar di bawah, posisimu cuma bernilai $42,43, kurang $2,57, sekitar 5,72% lebih kecil dari kalau kamu diam saja, padahal dua-duanya sama-sama naik dari harga awal.
| Diam saja (hold) | Di dalam liquidity pool | |
|---|---|---|
| Harga Token A | $10 → $30 | $10 → $30 |
| Harga Token B | $10 → $15 | $10 → $15 |
| Nilai posisi | $45,00 | $42,43 |
| Hasil dibanding hold | (patokan) | −5,72% (impermanent loss) |
Nggak ada yang dicuri, nggak ada yang di-hack. Pool-nya ngelakuin persis apa yang memang didesain buat dia lakuin: jual token yang lagi lebih untung dan beli lebih banyak token yang lagi ketinggalan, otomatis, selama kamu nyetor dana di situ.
Impermanent loss buat pool constant-product 50/50 standar ngikutin satu rumus, di mana r itu seberapa jauh perbandingan harga antara dua tokenmu berubah sejak kamu setor (harga Token A dibagi harga Token B sekarang, dibagi lagi sama perbandingan yang sama waktu kamu pertama setor):
Impermanent loss = 2 × √r ÷ (1 + r) − 1
Coba masukin angka dari contoh di atas: Token A naik tiga kali lipat sementara Token B naik 50%, jadi perbandingan harga antara keduanya naik dua kali lipat (r = 2). Rumus itu ngasih hasil 2 × √2 ÷ 3 − 1 ≈ −5,72%, persis sama dengan kekurangan dolar di atas. Rumusnya nggak peduli dua-duanya naik. Yang dia peduliin cuma perbandingan antara keduanya berubah dua kali lipat.
Sifat "cuma peduli perbandingan" ini juga yang bikin impermanent loss itu simetris: perbandingan harga satu token dibanding pasangannya naik dua kali lipat (r = 2) dan perbandingan yang sama turun jadi setengahnya (r = 0,5) sama-sama ngasih kerugian 5,72% yang identik. Arahnya nggak penting. Yang penting seberapa jauh dua harganya menjauh satu sama lain.
| Perbandingan harga berubah | Impermanent loss |
|---|---|
| 1,25× | −0,6% |
| 1,5× | −2,0% |
| 2× | −5,7% |
| 3× | −13,4% |
| 4× | −20,0% |
| 5× | −25,5% |
Kerugiannya nambah lebih cepat dibanding perbandingan harganya sendiri. Perbandingan yang bergeser 2× bikin rugi 5,7%, tapi perbandingan yang bergeser 5×, cuma dua setengah kali lebih jauh, bikin rugi lebih dari empat kali lipatnya. Makin jauh dua token di satu pool menjauh harganya, makin gede efek matematika ini kerasa, makanya pool yang isinya dua aset yang harganya mirip-mirip terus (dua stablecoin, atau satu token lawan versi wrapped-nya sendiri) jauh lebih kecil kena efek ini dibanding pool yang isinya dua token yang harganya bergerak sendiri-sendiri.
Disebut impermanent (nggak permanen) karena kerugiannya baru beneran kejadian dan terkunci begitu kamu tarik token-mu dari pool. Kalau perbandingan harga antara dua tokennya balik lagi ke posisi waktu kamu setor, kerugiannya ilang sendiri, tanpa kamu perlu ngapa-ngapain. Tapi kalau perbandingannya nggak pernah balik, atau kamu keburu tarik dana pas masih menjauh, kerugiannya jadi permanen buat kamu, sama kayak kerugian di atas kertas mana pun yang baru beneran kekunci begitu kamu jual.
Setiap transaksi yang lewat pool bayar fee ke siapa pun yang nyetok dana di situ, dan itu sebenarnya alasan orang mau nyetok dana meski ada risiko ini. Uniswap v3, desain yang paling banyak ditiru pesaingnya, punya empat tingkat fee: 0,01% dan 0,05% buat pasangan token yang diharapkan harganya deket-deket 1:1 terus (misalnya dua stablecoin), 0,3% jadi tingkat standar buat pasangan token yang pergerakan harganya wajar, dan 1% buat token yang baru rilis atau jarang ditransaksikan, menurut dokumentasi resmi Uniswap.
Apakah fee yang kekumpul bisa nutupin impermanent loss di satu pool tertentu, itu tergantung penuh sama seberapa besar volume trading di pool itu dibanding seberapa jauh harga dua tokennya menjauh, dan itu beda-beda tiap pool, nggak bisa diasumsikan ke arah mana pun. Pool dengan volume tinggi antara dua token yang harganya mirip-mirip bisa gampang nutupin impermanent loss yang kecil. Pool dengan volume rendah antara dua token yang harganya menjauh jauh biasanya nggak bisa. Cek dulu volume dan tingkat fee pool itu sebelum nganggep sisi fee-nya otomatis nutupin sisi kerugiannya.
Makin jauh dua token kemungkinan menjauh harganya, makin gede matematika ini kerasa. Sebelum nyetor dana ke pool mana pun, lihat dulu seberapa mandiri pergerakan dua token itu selama ini. Explore screener di NetWort bisa kamu pakai buat bandingin volatilitas antar aset sekaligus, cara yang lebih cepat buat ngukur seberapa jauh dua token bisa menjauh harganya, dibanding cuma nganggep mereka bakal gerak bareng karena sama-sama "kripto." ETH dan UNI, token di balik desain AMM yang dibahas di artikel ini, dua aset yang layak kamu cek dulu di situ sebelum dipasangin ke pool mana pun. Kalau kamu lagi mikir-mikir antara liquidity pool sama sumber yield DeFi yang lebih sederhana, risiko DeFi lending jalan dengan mekanisme yang sama sekali beda, pool pinjaman, bukan automated market maker, dan nggak kena risiko spesifik ini sama sekali.