Kriteria Kelly untuk strategi: cara memilih ukuran posisi dan mengalokasikan modal
Strategi dengan ekspektasi matematis positif bisa menghancurkan deposit jika ukuran taruhannya salah. Kita bahas kriteria Kelly dari penurunan rumus hingga portofolio strategi: mengapa full Kelly berbahaya, bagaimana Kelly fraksional memberi 75% pertumbuhan dengan separuh volatilitas, dan resep sizing apa yang benar-benar layak diterapkan dalam algotrading. Di tengah artikel ada kalkulator interaktif yang memperlihatkan bagaimana fraksi Kelly menggeser imbal hasil dan risiko.
Pertanyaan yang wajib dijawab oleh setiap strategi
Anda punya strategi dengan keunggulan positif (edge): pada jarak panjang ia menghasilkan keuntungan. Tinggal satu detail — berapa fraksi modal yang ditaruh dalam satu transaksi atau dialokasikan untuk satu strategi.
Ini bukan pertanyaan sekunder, melainkan yang utama. Ekspektasi matematis positif tidak menyelamatkan dari kebangkrutan: taruh terlalu banyak — dan serangkaian kegagalan akan membawa deposit ke zona yang tidak ada pemulihan statistiknya (lihat Asimetri kerugian dan keuntungan). Taruh terlalu sedikit — dan Anda meninggalkan sebagian besar potensi pertumbuhan di atas meja.
Kriteria Kelly memberi jawaban yang tepat: itulah fraksi modal yang memaksimalkan laju pertumbuhan jangka panjang — geometris, bukan aritmetis. Justru pertumbuhan geometris yang menentukan di mana akun Anda berada setelah seribu transaksi, karena imbal hasil dikalikan, bukan dijumlahkan (lihat Sifat multiplikatif imbal hasil).
Dari mana rumus berasal: memaksimalkan logaritma modal
Gagasan kunci Kelly (1956) dan kemudian Thorp: yang perlu dioptimalkan bukan ekspektasi keuntungan satu transaksi, melainkan ekspektasi logaritma modal akhir. Logaritma muncul bukan secara kebetulan — itulah satu-satunya fungsi yang, ketika dimaksimalkan, membuat modal tumbuh dengan laju geometris maksimal.
Kasus biner: taruhan dengan dua hasil
Misalkan dengan probabilitas taruhan menghasilkan pembayaran bersih per unit (koefisien), dan dengan probabilitas kita kehilangan taruhan itu sendiri. Kita taruh fraksi dari modal. Setelah satu transaksi, modal dikalikan dengan jika menang dan dengan jika kalah.
Ekspektasi logaritma pertumbuhan:
Kita ambil turunan terhadap dan samakan dengan nol:
Solusinya adalah rumus Kelly:
Dengan kata lain: fraksi optimal sama dengan keunggulan Anda dibagi koefisien. Tidak ada keunggulan () — tidak ada taruhan.
Contoh
Strategi menang pada 55% transaksi dengan rasio pembayaran 1:1 ():
Full Kelly menyuruh mempertaruhkan 10% modal per transaksi. Ingat angka ini — di bawah kita akan lihat mengapa hampir tidak ada yang seharusnya bertaruh tepat sebesar itu.
Kasus kontinu: imbal hasil alih-alih taruhan
Dalam trading, transaksi jarang berbentuk taruhan dengan dua hasil — yang ada adalah distribusi imbal hasil. Untuk imbal hasil dengan rata-rata dan varians per periode, ekspektasi pertumbuhan logaritmis pada leverage (fraksi) kira-kira sama dengan:
Maksimum dicapai pada:
Inilah bentuk kontinu Kelly yang terkenal (dikenal juga sebagai fraksi Merton). Dan laju pertumbuhan pada optimum terhubung dengan rasio Sharpe secara sangat indah:
Kesimpulan yang layak dipajang di dinding: laju pertumbuhan geometris maksimal sebuah portofolio sama dengan setengah kuadrat Sharpe-nya. Gandakan Sharpe — laju pertumbuhan modal jadi empat kali lipat.
Mengapa full Kelly itu terlalu banyak
Rumus memberi optimum matematis untuk pertumbuhan. Tetapi optimum ini punya harga yang dibungkam rumus: volatilitas jalur dan drawdown yang mengerikan, yang mematahkan setiap akun nyata dan setiap manusia nyata.
Geometri penyimpangan dari optimum
Kita substitusikan fraksi (di mana adalah pengali Kelly: adalah full Kelly, adalah half Kelly) ke dalam rumus pertumbuhan. Relatif terhadap maksimum kita memperoleh:

Parabola ini menceritakan seluruh kisah manajemen risiko dalam satu baris:
| Pengali | Fraksi pertumbuhan | Volatilitas | Komentar |
|---|---|---|---|
| 0.25 (quarter) | 43.8% | 25% | hampir separuh pertumbuhan dengan seperempat risiko |
| 0.50 (half) | 75.0% | 50% | jalan tengah para praktisi |
| 1.00 (full) | 100.0% | 100% | pertumbuhan maksimal, volatilitas liar |
| 1.50 | 75.0% | 150% | pertumbuhan sama seperti half, tetapi risiko tiga kali lipat |
| 2.00 (double) | 0.0% | 200% | tidak ada pertumbuhan, risiko maksimal |
| > 2.00 | negatif | — | kebangkrutan meski edge positif |
Tiga kesimpulan:
- half Kelly mengambil 75% pertumbuhan dengan separuh volatilitas. Dari sisi rasio risiko/imbal hasil ini jauh lebih baik daripada full Kelly.
- Parabola simetris terhadap . Taruhan sebesar Kelly memberi pertumbuhan yang sama dengan , tetapi tiga kali lebih volatil. Berlebihan dihukum lebih keras daripada kurang.
- Pada Kelly pertumbuhan jadi nol, dan setelahnya menjadi negatif. Sizing yang terlalu agresif membunuh modal bahkan pada strategi yang menang.
Drawdown full Kelly: rumus yang menyadarkan

Untuk model kontinu, probabilitas bahwa modal pernah turun hingga fraksi dari awal sama dengan:
Kita substitusikan level-level Kelly — dan kita peroleh tabel yang setelahnya full Kelly berhenti terlihat menarik:
| Pengali | P(pernah −50%) | P(pernah −75%) |
|---|---|---|
| 1.00 (full) | 50% | 75% |
| 0.50 (half) | 12.5% | 1.6% |
| 0.25 (quarter) | 0.78% | 0.006% |
| 2.00 (double) | 100% | 100% |
Pada full Kelly, probabilitas suatu saat melihat drawdown 50% sama dengan 50%. Ini bukan skenario ekor — ini lemparan koin. half Kelly menurunkannya menjadi 12.5%, quarter Kelly — hingga sepersekian persen. Dan itu dalam model Gaussian yang diidealkan; ekor tebal nyata membuat drawdown aktual bahkan lebih dalam.
Kalkulator: ubah fraksi Kelly — amati imbal hasil dan risiko
Geser slider-nya. Dua slider atas mengatur keunggulan strategi (probabilitas menang dan koefisien pembayaran), yang bawah — pengali Kelly . Amati bagaimana laju pertumbuhan modal dan probabilitas drawdown dalam berubah secara bersamaan. Perhatikan alur utama artikel ini: saat bergerak dari half ke full Kelly, pertumbuhan naik sedikit, sementara risiko drawdown naik berlipat.
Bermainlah dengan slider fraksi Kelly di sekitar nilai 0.5 dan 1.0: pertumbuhan dari maksimum naik dari 75% menjadi 100%, sementara risiko drawdown 50% melonjak dari 13% menjadi 50%. Inilah alasan mengapa para profesional hidup di separuh kiri parabola.
Kelly fraksional sebagai standar industri
Manajer yang serius hampir tidak pernah bertaruh full Kelly. Rentang khasnya — dari hingga Kelly. Selain drawdown, ada empat alasan fundamental untuk memangkas fraksi.
1. Kesalahan estimasi parameter. Rumus mengasumsikan Anda mengetahui , , , yang sebenarnya. Pada kenyataannya Anda mengestimasinya dari sampel terhingga. Dan fungsi pertumbuhan bersifat asimetris: melebih-lebihkan keunggulan mendorong Anda melewati optimum, di mana pertumbuhan turun lebih cepat daripada naiknya pada tingkat estimasi yang terlalu rendah yang sama. Jika Kelly yang sebenarnya sama dengan , dan Anda mengestimasinya dengan kesalahan, lebih aman secara sistematis bertaruh lebih sedikit. Aturan kasarnya: dalam ketidakpastian estimasi, separuhkan fraksinya.
2. Nonstasioneritas. Keunggulan strategi bukan konstanta — rezim pasar berubah, edge meluruh, pesaing menyalin ide. Kelly yang dihitung dari data kemarin bisa jadi terlalu tinggi besok. Pengali fraksional adalah bantalan untuk peluruhan edge.
3. Ekor tebal. Rumus Gaussian meremehkan risiko pergerakan ekstrem. Pada distribusi nyata dengan ekor berat, ia secara sistematis bertaruh berlebih. Kelly fraksional sebagian mengompensasinya.
4. Biaya drawdown dalam bisnis. Bagi market maker, drawdown bukan sekadar psikologi. Itu adalah margin call, pengurangan posisi secara paksa pada momen terburuk, arus keluar modal investor, kenaikan biaya pendanaan (lihat Bagaimana funding rate membunuh leverage). Kurva modal yang mulus punya nilai tersendiri yang tidak ada dalam rumus Kelly.
Kelly untuk portofolio strategi

Sejauh ini kita berbicara tentang satu strategi. Tetapi pertanyaan yang sesungguhnya berbunyi sebagai pemilihan Kelly untuk strategi dalam bentuk jamak: Anda punya beberapa strategi, dan perlu mengalokasikan modal di antara mereka.
Pendekatan naif — menghitung Kelly untuk masing-masing secara terpisah lalu menjumlahkannya — keliru secara fatal, karena mengabaikan korelasi. Dua strategi yang sangat berkorelasi pada dasarnya adalah satu taruhan yang digandakan, dan total risikonya harus dihitung seperti satu strategi.
Bentuk matriks
Untuk vektor ekspektasi imbal hasil dan matriks kovarians , vektor optimal fraksi atas semua strategi sekaligus:
Laju pertumbuhan pada optimum digeneralisasi menjadi kuadrat Sharpe portofolio:
Perhatikan: adalah arah portofolio dengan Sharpe maksimal (portofolio tangen). Kelly dan optimasi mean-variance adalah dua sisi mata uang yang sama: Kelly hanya menetapkan tingkat leverage pada level yang memaksimalkan pertumbuhan geometris.
Apa yang dilakukan kovarians invers
- Strategi yang berkorelasi berbagi anggaran risiko. Jika dua strategi nyaris identik, matriks akan memangkas total fraksinya hingga setara satu strategi — secara otomatis, tanpa penyangga manual.
- Strategi yang tidak berkorelasi mendapat premi diversifikasi. Mereka bisa dipertahankan lebih dekat dengan ukuran individualnya, dan total Sharpe portofolio akan lebih tinggi daripada masing-masing secara terpisah.
- Strategi yang berkorelasi negatif bisa mendapat fraksi yang ditingkatkan — mereka saling mengasuransikan, dan matriks mendorong hal itu.
Peringatan tentang estimasi
Pembalikan matriks kovarians secara numerik tidak stabil: pada estimasi yang berisik, membesar-besarkan kesalahan kecil menjadi bobot yang liar. Wajib ada penyusutan (shrinkage) kovarians ke arah diagonal, pembatasan leverage, dan pengali fraksional yang sama. Tanpa itu, Kelly matriks menghasilkan fraksi yang indah di backtest dan mematikan di produksi.
Koreksi untuk algotrading dan market making
Rumus murni hidup di dunia steril. Dalam mesin nyata diperlukan koreksi.
- Komisi dan slippage mengurangi keunggulan efektif. Hitung Kelly dari imbal hasil setelah semua biaya, jika tidak Anda akan bertaruh berlebih secara sistematis.
- Diskretisasi taruhan dan ukuran lot tidak memungkinkan menaruh tepat — bulatkan ke bawah, bukan ke atas.
- Edge yang nonstasioner menuntut perhitungan ulang seiring waktu: estimasi dan pada jendela bergulir dengan periode paruh waktu, bukan pada seluruh riwayat.
- Pembatasan drawdown. Di atas Kelly, pasang plafon keras: drawdown maksimal, leverage maksimal, fraksi maksimal per satu strategi. Ada versi Kelly formal yang dibatasi drawdown (Bassety, Boyd), tetapi dalam praktik cukup dengan cap sederhana.
- Kejujuran estimasi edge. Kesalahan utama adalah memberi makan Kelly dengan keunggulan yang diukur in-sample. Ambil hanya estimasi out-of-sample, dari walk-forward, setelah komisi. Edge yang dilebih-lebihkan di input rumus berarti taruhan yang dilebih-lebihkan di output.
Resep: cara menerapkannya
- Nilai keunggulan dengan jujur. Out-of-sample, dari walk-forward, setelah komisi dan slippage. Ini langkah terpenting — sampah di input berubah menjadi kebangkrutan di output.
- Hitung full Kelly. Biner untuk hasil diskret atau kontinu untuk imbal hasil.
- Ambil fraksinya. Secara default – dari full Kelly. Semakin tidak stabil edge — semakin kecil pengalinya.
- Untuk portofolio, hitung secara matriks. dengan penyusutan kovarians, lalu pengali fraksional yang sama.
- Pasang cap yang keras. Maksimum per posisi, maksimum leverage, batas drawdown — di atas segalanya.
- Hitung ulang. Seiring estimasi diperbarui, pangkas fraksi saat ketidakpastian meningkat dan edge meluruh.
Kode
import numpy as np
def kelly_binary(p, b):
"""p — probabilitas menang, b — koefisien pembayaran bersih per 1 unit taruhan."""
q = 1 - p
return (b * p - q) / b # = p - q/b
def kelly_continuous(mu, sigma):
"""mu, sigma — rata-rata dan simpangan baku imbal hasil per periode (dalam satuan yang sama)."""
return mu / sigma ** 2
def kelly_portfolio(mu, cov, shrink=0.0):
"""Kelly matriks untuk portofolio strategi.
mu — vektor ekspektasi imbal hasil;
cov — matriks kovarians imbal hasil;
shrink — koefisien penyusutan ke arah diagonal (0..1) untuk kestabilan pembalikan."""
cov = np.asarray(cov, float)
if shrink:
cov = (1 - shrink) * cov + shrink * np.diag(np.diag(cov))
return np.linalg.solve(cov, np.asarray(mu, float))
def sized(f_star, kelly_fraction=0.25, cap=0.2):
"""Kelly fraksional dengan cap keras pada fraksi."""
return float(np.clip(f_star * kelly_fraction, -cap, cap))
f = kelly_binary(p=0.55, b=1.0) # 0.10 — full Kelly
print(sized(f)) # 0.025 — quarter Kelly, ukuran yang aman
Kesalahan yang sering terjadi
- Kelly pada edge in-sample. Kesalahan termahal. Keunggulan yang dilebih-lebihkan → taruhan berlebih → pertumbuhan negatif.
- Mengabaikan korelasi antar strategi. Jumlah Kelly individual bukanlah Kelly portofolio.
- Full Kelly di produksi. Maksimum matematis untuk pertumbuhan, tetapi 50% peluang drawdown separuh deposit. Hampir tidak cocok bagi siapa pun.
- Kelly pada edge yang tidak stabil. Jika keunggulan meluruh, rumus secara sistematis melebih-lebihkan taruhan.
- Mencampuradukkan tujuan. Kelly memaksimalkan pertumbuhan geometris modal — bukan Sharpe, bukan probabilitas tetap untung, dan bukan kenyamanan. Jika kemulusan kurva lebih penting bagi Anda, taruhlah Kelly fraksional secara sadar.
Kesimpulan
Kriteria Kelly menjawab pertanyaan utama setiap strategi — berapa yang ditaruh — dengan rumus yang memaksimalkan pertumbuhan geometris jangka panjang: untuk taruhan dan untuk imbal hasil, dan untuk portofolio — .
Tetapi full Kelly adalah optimum matematis untuk pertumbuhan, bukan untuk kelangsungan hidup. Kelly fraksional (–) mengambil sebagian besar pertumbuhan dengan volatilitas dan drawdown yang berlipat lebih kecil. Karena itu jawaban praktis atas pertanyaan tentang pemilihan Kelly untuk strategi berbunyi begini: hitung full Kelly dengan jujur — tetapi taruh fraksinya saja, di atas batas risiko yang keras.
Materi terkait:
Penulis
Trading-systems engineer
Trading-systems engineer building bots since 2017: cross-exchange arbitrage (connected up to 30 venues), cointegration-based pairs arbitrage across spot and futures, scalping, news and sentiment-driven strategies, trend algorithms, and portfolio management and balancing algorithms. Also builds sub-millisecond order execution, big-data warehouses, backtesting engines, AI agents, and trading interfaces (incl. open-source profitmaker.cc). Stack: JS/TS, Python, Rust/Zig/Go, DevOps, backend, frontend, architecture.