Kriteria Kelly untuk strategi: cara memilih saiz posisi dan mengagihkan modal
Strategi dengan jangkaan matematik positif boleh meranapkan deposit jika anda tersilap saiz pertaruhan. Kita kupas kriteria Kelly dari penurunan formula hingga ke portfolio strategi: mengapa full Kelly berbahaya, bagaimana Kelly pecahan memberi 75% pertumbuhan pada separuh volatiliti, dan resipi penentuan saiz mana yang benar-benar boleh dipakai dalam perdagangan algo. Di tengah artikel ada kalkulator interaktif yang menunjukkan bagaimana pecahan Kelly menggerakkan pulangan dan risiko.
Soalan yang wajib dijawab oleh mana-mana strategi
Anda mempunyai strategi dengan kelebihan positif (edge): pada jarak panjang ia menghasilkan keuntungan. Tinggal satu butiran sahaja — berapa peratus modal hendak dipertaruhkan dalam satu dagangan atau diperuntukkan kepada satu strategi.
Ini bukan soalan sampingan, tetapi soalan utama. Jangkaan matematik positif tidak menyelamatkan anda daripada kemusnahan: pertaruh terlalu banyak — dan rentetan kekalahan akan membawa deposit ke zon yang tiada pemulihan statistik daripadanya (lihat Asimetri kerugian dan keuntungan). Pertaruh terlalu sedikit — dan anda akan meninggalkan sebahagian besar potensi pertumbuhan di atas meja.
Kriteria Kelly memberi jawapan yang tepat: ia adalah pecahan modal yang memaksimumkan kelajuan pertumbuhan jangka panjang — geometri, bukan aritmetik. Pertumbuhan geometri inilah yang menentukan di mana akaun anda akan berada selepas seribu dagangan, kerana pulangan didarabkan, bukan dijumlahkan (lihat Sifat multiplikatif pulangan).
Dari mana formula itu datang: memaksimumkan logaritma modal
Idea utama Kelly (1956) dan kemudiannya Thorp: yang perlu dioptimumkan bukan keuntungan jangkaan satu dagangan, tetapi logaritma jangkaan modal akhir. Logaritma muncul bukan secara kebetulan — ia adalah satu-satunya fungsi yang apabila dimaksimumkan, modal tumbuh dengan kelajuan geometri maksimum.
Kes binari: pertaruhan dengan dua hasil
Andaikan dengan kebarangkalian pertaruhan menghasilkan bayaran bersih per unit (gandaan), dan dengan kebarangkalian kita kehilangan pertaruhan itu sendiri. Kita pertaruhkan pecahan daripada modal. Selepas satu dagangan, modal didarabkan dengan apabila menang dan dengan apabila kalah.
Logaritma pertumbuhan jangkaan:
Kita ambil terbitan terhadap dan samakan dengan sifar:
Penyelesaiannya adalah formula Kelly:
Dalam kata-kata: pecahan optimum sama dengan kelebihan anda, dibahagikan dengan gandaan. Tiada kelebihan () — tiada pertaruhan.
Contoh
Strategi menang dalam 55% dagangan dengan nisbah bayaran 1:1 ():
Kelly penuh menyuruh anda mempertaruhkan 10% modal dalam satu dagangan. Ingat nombor ini — di bawah kita akan lihat mengapa hampir tiada sesiapa patut mempertaruhkan sebanyak itu.
Kes selanjar: pulangan menggantikan pertaruhan
Dalam perdagangan, dagangan jarang kelihatan seperti pertaruhan dengan dua hasil — ada taburan pulangan. Untuk pulangan dengan min dan varians per tempoh, logaritma pertumbuhan jangkaan pada leveraj (pecahan) lebih kurang sama dengan:
Maksimum dicapai pada:
Inilah bentuk selanjar Kelly yang terkenal (juga dikenali sebagai pecahan Merton). Dan kelajuan pertumbuhan pada optimum dikaitkan dengan nisbah Sharpe dengan amat cantik:
Kesimpulan yang patut digantung di dinding: kelajuan pertumbuhan geometri maksimum portfolio sama dengan separuh kuasa dua Sharpe-nya. Gandakan dua Sharpe — gandakan empat kali kelajuan pertumbuhan modal.
Mengapa full Kelly itu terlalu banyak
Formula memberi optimum matematik untuk pertumbuhan. Tetapi optimum ini ada harganya, yang tidak disebut oleh formula: volatiliti laluan dan susutan yang dahsyat, yang meranapkan mana-mana akaun sebenar dan mana-mana manusia sebenar.
Geometri sisihan daripada optimum
Kita gantikan pecahan (di mana adalah pengganda Kelly: adalah full Kelly, adalah half Kelly) ke dalam formula pertumbuhan. Relatif kepada maksimum, kita peroleh:

Parabola ini menceritakan keseluruhan kisah pengurusan risiko dalam satu baris:
| Pengganda | Pecahan pertumbuhan | Volatiliti | Komentar |
|---|---|---|---|
| 0.25 (quarter) | 43.8% | 25% | hampir separuh pertumbuhan untuk suku risiko |
| 0.50 (half) | 75.0% | 50% | jalan tengah pengamal |
| 1.00 (full) | 100.0% | 100% | pertumbuhan maksimum, volatiliti liar |
| 1.50 | 75.0% | 150% | pertumbuhan sama seperti half, tetapi risiko tiga kali ganda |
| 2.00 (double) | 0.0% | 200% | tiada pertumbuhan, risiko maksimum |
| > 2.00 | negatif | — | kemusnahan walaupun edge positif |
Tiga kesimpulan:
- half Kelly mengambil 75% pertumbuhan pada separuh volatiliti. Dari segi nisbah risiko/pulangan ini jauh lebih baik daripada full Kelly.
- Parabola simetri terhadap . Pertaruhan pada Kelly memberi pertumbuhan yang sama dengan , tetapi tiga kali lebih volatil. Berlebihan dihukum lebih keras daripada berkurangan.
- Pada Kelly pertumbuhan menjadi sifar, dan seterusnya menjadi negatif. Penentuan saiz yang terlalu agresif membunuh modal walaupun bagi strategi yang menang.
Susutan full Kelly: formula yang menyedarkan

Untuk model selanjar, kebarangkalian bahawa modal akan pernah jatuh ke pecahan daripada permulaan, sama dengan:
Kita gantikan paras Kelly — dan kita peroleh jadual yang selepasnya full Kelly tidak lagi kelihatan menarik:
| Pengganda | 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, kebarangkalian untuk pernah melihat susutan 50% sama dengan 50%. Ini bukan senario ekor — ini lambungan duit syiling. half Kelly menurunkannya kepada 12.5%, quarter Kelly — kepada pecahan peratus. Dan ini dalam model Gaussian yang diidealkan; ekor gemuk sebenar membuat susutan sebenar lebih dalam lagi.
Kalkulator: ubah pecahan Kelly — perhatikan pulangan dan risiko
Gerakkan peluncur. Dua yang atas menetapkan kelebihan strategi (kebarangkalian menang dan gandaan bayaran), yang bawah — pengganda Kelly . Perhatikan bagaimana kelajuan pertumbuhan modal dan kebarangkalian susutan dalam berubah secara serentak. Perhatikan jalan cerita utama artikel ini: apabila bergerak dari half ke full Kelly, pertumbuhan meningkat sedikit, sementara risiko susutan — berganda-ganda.
Bermain-mainlah dengan peluncur pecahan Kelly di sekitar nilai 0.5 dan 1.0: pertumbuhan dari maksimum naik dari 75% kepada 100%, tetapi risiko susutan 50% melonjak dari 13% kepada 50%. Inilah sebabnya golongan profesional hidup di separuh kiri parabola.
Kelly pecahan sebagai standard industri
Pengurus serius hampir tidak pernah mempertaruhkan full Kelly. Julat tipikal — dari hingga Kelly. Selain susutan, ada empat sebab asas untuk memotong pecahan.
1. Ralat anggaran parameter. Formula mengandaikan anda mengetahui , , , yang sebenar. Pada hakikatnya anda menganggarkannya daripada sampel terhingga. Dan fungsi pertumbuhan adalah asimetri: penilaian berlebihan terhadap kelebihan menolak anda melepasi optimum, di mana pertumbuhan jatuh lebih cepat berbanding kenaikannya pada penilaian kurang yang sama. Jika Kelly sebenar sama dengan , dan anda menganggarkannya dengan ralat, lebih selamat untuk secara sistematik mempertaruhkan kurang. Peraturan kasar: pada ketidakpastian anggaran, separuhkan pecahan.
2. Ketidakpegunan (nonstationarity). Kelebihan strategi bukan pemalar — rejim pasaran berubah, edge mereput, pesaing meniru idea. Kelly yang dikira pada data semalam, esok mungkin terlalu tinggi. Pengganda pecahan adalah penampan terhadap pereputan edge.
3. Ekor gemuk. Formula Gaussian memandang rendah risiko pergerakan ekstrem. Pada taburan sebenar dengan ekor berat, ia secara sistematik bertaruh terlebih. Kelly pecahan mengimbanginya sebahagiannya.
4. Kos susutan dalam perniagaan. Bagi pembuat pasaran, susutan bukan sekadar psikologi. Ia adalah margin call, pengurangan paksa posisi pada saat paling buruk, aliran keluar modal pelabur, kenaikan kos pendanaan (lihat Bagaimana funding rates membunuh leveraj). Lengkung modal yang licin mempunyai nilai tersendiri yang tiada dalam formula Kelly.
Kelly untuk portfolio strategi

Setakat ini kita bercakap tentang satu strategi. Tetapi soalan sebenar berbunyi seperti pemilihan Kelly untuk strategi dalam bentuk jamak: anda mempunyai beberapa strategi, dan perlu mengagihkan modal antara mereka.
Pendekatan naif — mengira Kelly bagi setiap satu secara berasingan dan menjumlahkannya — secara bencana adalah salah, kerana ia mengabaikan korelasi. Dua strategi yang berkorelasi kuat — pada dasarnya adalah satu pertaruhan berganda, dan jumlah risiko perlu dikira seperti bagi satu.
Bentuk matriks
Untuk vektor pulangan jangkaan dan matriks kovarians , vektor optimum pecahan bagi semua strategi sekaligus:
Kelajuan pertumbuhan pada optimum diperumumkan kepada kuasa dua Sharpe portfolio:
Perhatikan: — ini adalah arah portfolio dengan Sharpe maksimum (portfolio tangen). Kelly dan pengoptimuman mean-variance adalah dua sisi syiling yang sama: Kelly hanya menetapkan paras leveraj pada paras yang memaksimumkan pertumbuhan geometri.
Apa yang dilakukan oleh songsangan kovarians
- Strategi yang berkorelasi berkongsi bajet risiko. Jika dua strategi hampir sama, matriks akan memotong jumlah pecahan mereka ke paras satu — secara automatik, tanpa penampal manual.
- Strategi tak berkorelasi mendapat premium kepelbagaian. Mereka boleh dikekalkan lebih hampir kepada saiz individu, dan jumlah Sharpe portfolio akan lebih tinggi daripada setiap satunya secara berasingan.
- Strategi yang berkorelasi negatif boleh mendapat pecahan yang ditingkatkan — mereka menginsuranskan antara satu sama lain, dan matriks menggalakkannya.
Amaran tentang anggaran
Songsangan matriks kovarians tidak stabil secara berangka: pada anggaran berbunyi, membesarkan ralat kecil menjadi berat yang liar. Pengecutan (shrinkage) kovarians ke arah pepenjuru, had leveraj, dan pengganda pecahan yang sama adalah wajib. Tanpa itu, Kelly matriks menghasilkan pecahan yang cantik pada backtest tetapi membunuh dalam pengeluaran.
Pelarasan untuk perdagangan algo dan pembuatan pasaran
Formula tulen hidup dalam dunia steril. Dalam enjin sebenar diperlukan pelarasan.
- Komisen dan gelinciran mengurangkan kelebihan berkesan. Kira Kelly mengikut pulangan selepas semua kos, jika tidak anda akan secara sistematik bertaruh terlebih.
- Kediskretan pertaruhan dan saiz lot tidak membenarkan anda mempertaruhkan tepat — bundarkan ke bawah, bukan ke atas.
- Edge tak pegun memerlukan pengiraan semula dari masa ke masa: anggaran dan pada tetingkap gelongsor dengan tempoh separuh hayat, bukan pada keseluruhan sejarah.
- Had susutan. Di atas Kelly, letakkan siling yang tegas: susutan maksimum, leveraj maksimum, pecahan maksimum bagi satu strategi. Wujud versi Kelly berkekangan susutan (drawdown-constrained) yang formal (Bassett, Boyd), tetapi pada praktiknya cap yang ringkas sudah memadai.
- Kejujuran anggaran edge. Kesilapan utama — memberi Kelly kelebihan yang diukur in-sample. Ambil hanya anggaran out-of-sample, secara walk-forward, selepas komisen. Edge yang dilebih-lebihkan pada input formula bermakna pertaruhan yang dilebih-lebihkan pada output.
Resipi: cara menggunakannya
- Nilai kelebihan dengan jujur. Out-of-sample, secara walk-forward, selepas komisen dan gelinciran. Inilah langkah paling penting — sampah pada input bertukar menjadi kemusnahan pada output.
- Kira Kelly penuh. Binari untuk hasil diskret atau selanjar untuk pulangan.
- Ambil pecahan. Secara lalai – daripada Kelly penuh. Semakin tidak mantap edge — semakin kecil pengganda.
- Untuk portfolio kira secara matriks. dengan pengecutan kovarians, kemudian pengganda pecahan yang sama.
- Letakkan cap yang tegas. Maksimum per posisi, maksimum leveraj, had susutan — di atas segalanya.
- Kira semula. Apabila anggaran dikemas kini, potong pecahan apabila ketidakpastian meningkat dan edge mereput.
Kod
import numpy as np
def kelly_binary(p, b):
"""p — kebarangkalian menang, b — gandaan bayaran bersih bagi 1 unit pertaruhan."""
q = 1 - p
return (b * p - q) / b # = p - q/b
def kelly_continuous(mu, sigma):
"""mu, sigma — min dan SP pulangan per tempoh (dalam unit yang sama)."""
return mu / sigma ** 2
def kelly_portfolio(mu, cov, shrink=0.0):
"""Kelly matriks untuk portfolio strategi.
mu — vektor pulangan jangkaan;
cov — matriks kovarians pulangan;
shrink — pekali pengecutan ke arah pepenjuru (0..1) untuk kestabilan songsangan."""
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 pecahan dengan cap tegas pada pecahan."""
return float(np.clip(f_star * kelly_fraction, -cap, cap))
f = kelly_binary(p=0.55, b=1.0) # 0.10 — Kelly penuh
print(sized(f)) # 0.025 — quarter Kelly, saiz selamat
Kesilapan lazim
- Kelly pada in-sample edge. Kesilapan paling mahal. Kelebihan dilebih-lebihkan → bertaruh terlebih → pertumbuhan negatif.
- Mengabaikan korelasi antara strategi. Jumlah Kelly individu bukanlah Kelly portfolio.
- Full Kelly dalam pengeluaran. Maksimum matematik untuk pertumbuhan, tetapi 50% peluang susutan separuh deposit. Hampir tidak sesuai untuk sesiapa pun.
- Kelly pada edge tak mantap. Jika kelebihan mereput, formula secara sistematik melebih-lebihkan pertaruhan.
- Mencampuradukkan matlamat. Kelly memaksimumkan pertumbuhan geometri modal — bukan Sharpe, bukan kebarangkalian kekal dalam untung dan bukan keselesaan. Jika kelicinan lengkung lebih penting bagi anda, pertaruhkan Kelly pecahan secara sedar.
Kesimpulan
Kriteria Kelly menjawab soalan utama mana-mana strategi — berapa hendak dipertaruhkan — dengan formula yang memaksimumkan pertumbuhan geometri jangka panjang: untuk pertaruhan dan untuk pulangan, dan untuk portfolio — .
Tetapi Kelly penuh adalah optimum matematik untuk pertumbuhan, bukan untuk kelangsungan hidup. Kelly pecahan (–) mengambil sebahagian besar pertumbuhan pada volatiliti dan susutan yang berganda-ganda lebih kecil. Oleh itu jawapan praktikal kepada soalan tentang pemilihan Kelly untuk strategi berbunyi begini: kira Kelly penuh dengan jujur — tetapi pertaruhkan bahagian pecahannya, di atas had risiko yang tegas.
Bahan berkaitan:
Pengarang
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.