Strasmore Research
Deep Dives · Matt ConnorBy Matt Connor ·

kriteria Kelly saiz posisi ukuran

Kriteria Kelly tetapkan saiz pertaruhan dari kelebihan anda. Lihat apa sepuluh tahun pulangan saham harian katakan tentang Kelly penuh, pengeluaran, dan separuh Kelly dalam amalan.

Kriteria Kelly ialah formula untuk saiz pertaruhan. Masukkan kebarangkalian untuk menang, saiz kemenangan, dan saiz kerugian, dan ia akan mengembalikan pecahan modal yang memaksimumkan kadar pertumbuhan kekayaan dalam jangka masa panjang. John Kelly menerbitkannya di Bell Labs pada tahun 1956 sebagai hasil teori maklumat, dan kemudiannya ia diadaptasi oleh penjudi dan pedagang. Halaman ini menghuraikan formula daripada prinsip asas, kemudian mengukur apa yang ditetapkannya pada sepuluh tahun pulangan saham harian sebenar, di mana penetapan itu ternyata tidak boleh dihayati.

Apa yang sebenarnya dikatakan oleh kriteria Kelly

Ambil pertaruhan berulang yang memenangi pecahan g daripada jumlah yang dipertaruhkan dengan kebarangkalian p, dan kehilangan pecahan l daripada jumlah yang dipertaruhkan dengan kebarangkalian q, di mana q ialah satu tolak p. Pecahan modal yang optimum untuk pertumbuhan yang komited pada setiap ulangan ialah:

f* = p / l - q / g

Dalam kes wang genap klasik, di mana kemenangan membayar apa yang kerugian kos, g dan l kedua-duanya sama dengan 1 dan formula itu runtuh kepada f* = p - q. Perbezaan itu ialah kelebihan itu sendiri. Pertaruhan yang menang 60% daripada masa pada wang genap membawa kelebihan 20 mata, dan Kelly mempertaruhkan 20% daripada wang tunai padanya.

Terbitan adalah satu langkah kalkulus yang digunakan pada logaritma jangkaan kekayaan. Memaksimumkan purata log kekayaan setiap pertaruhan adalah bersamaan dengan memaksimumkan kadar pertumbuhan kompaun dalam jujukan yang panjang, dan pecahan yang mencapainya adalah yang di atas. Dua sifat terhasil daripadanya. Kelly tidak pernah mempertaruhkan keseluruhan wang tunai pada pertaruhan yang boleh kehilangan segala-galanya, kerana logaritma sifar ialah infiniti negatif. Dan mana-mana pecahan tetap selain f, diulang cukup lama, akan mengkompaun lebih perlahan daripada f.

Lambungan duit syiling yang boleh anda semak sendiri

Angka-angka dalam bahagian ini adalah hipotetikal, dipilih untuk menjadikan aritmetik kelihatan. Ambil duit syiling yang mendarat kepala 60% daripada masa dan membayar wang genap, dengan wang tunai permulaan sebanyak $1,000.

  • Pertaruhkan 20% daripada wang tunai pada setiap lambungan. Kemenangan membawa $1,000 kepada $1,200; kerugian membawanya kepada $800. Satu kemenangan dan satu kerugian, dalam mana-mana susunan, meninggalkan $960.
  • Pertaruhkan 40% daripada wang tunai pada setiap lambungan. Pasangan menang-kalah yang sama berjalan $1,000 kepada $1,400 kepada $840.
  • Pertaruhkan keseluruhan wang tunai pada setiap lambungan. Satu ekor menamatkan jujukan secara kekal, walau apa pun kelebihan itu.

Kos perjalanan pergi balik 4% pada pertaruhan 20% itu ialah harga untuk mengkompaun wang tunai yang tidak menentu, dan duit syiling 60/40 menampungnya berkali-kali dalam jujukan yang panjang. Pada pertaruhan 40% kos perjalanan pergi balik ialah 16%, dan duit syiling tidak lagi menampungnya: kadar pertumbuhan pada dua kali pecahan Kelly mendarat pada kira-kira sifar. Selepas titik itu, pertaruhan dengan kelebihan yang tulen dan disahkan tidak mengembangkan apa-apa langsung, yang merupakan fakta tunggal paling berguna yang dibawa oleh formula.

Apa yang formula minta pada pertaruhan saham harian

Sekarang halakan formula yang sama ke arah pasaran. Anggap satu hari dagangan dalam satu saham sebagai satu ulangan pertaruhan: kebarangkalian menang ialah bahagian hari yang ditutup naik, saiz kemenangan ialah purata pergerakan hari naik, dan saiz kerugian ialah purata pergerakan hari turun. Sepuluh tahun kalendar penuh penutupan harian, 2016 hingga 2025, merentasi enam nama biasa:

PertanyaanInput Kelly daripada penutup harian, 2016 hingga 2025: kadar kemenangan, purata keuntungan, purata kerugian, dan pecahan yang dikembalikan oleh formula
SQL tepat di sebalik setiap nombor
WITH daily AS (
    SELECT ticker,
           toDate(toTimeZone(window_start, 'America/New_York')) AS dt,
           argMax(toFloat64(close), window_start) AS c
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('SPY', 'KO', 'JNJ', 'MSFT', 'NVDA', 'TSLA')
      AND window_start >= '2016-01-01 00:00:00'
      AND window_start <  '2026-01-01 00:00:00'
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
           + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
    GROUP BY ticker, dt
),
steps AS (
    SELECT ticker, dt, c,
           lagInFrame(c) OVER (PARTITION BY ticker ORDER BY dt
                               ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS prev
    FROM daily
),
rets AS (
    SELECT ticker, c / prev - 1 AS ret
    FROM steps
    WHERE prev > 0 AND c != prev
)
SELECT ticker,
       round(100 * countIf(ret > 0) / count(), 1) AS win_rate_pct,
       round(100 * avgIf(ret, ret > 0), 2) AS avg_gain_pct,
       round(100 * abs(avgIf(ret, ret < 0)), 2) AS avg_loss_pct,
       round(countIf(ret > 0) / count() / abs(avgIf(ret, ret < 0))
             - countIf(ret < 0) / count() / avgIf(ret, ret > 0), 1) AS full_kelly_x
FROM rets
GROUP BY ticker
HAVING countIf(ret > 0) > 0 AND countIf(ret < 0) > 0
ORDER BY full_kelly_x DESC
Run this yourself

Baca tiga lajur pertama dan kelebihan kelihatan kecil. Kadar kemenangan berkumpul berhampiran lambungan duit syiling, dan purata hari naik dan purata hari turun adalah hampir sama saiznya untuk setiap nama dalam panel. SPY ditutup lebih tinggi pada 55.3% sesinya, memperoleh 0.71% pada purata hari naik berbanding 0.76% pada purata hari turun.

Lajur terakhir adalah di mana masalah bermula. Input-input kecil dan hampir seimbang itu duduk dalam penyebut formula, dan penyebut kecil menghasilkan jawapan yang besar. Pecahan yang dikembalikan oleh formula untuk SPY ialah 10.1 kali modal, dan yang terendah daripada 6 nama masih mendarat pada 2 kali. Kelly penuh pada pertaruhan ekuiti harian bukanlah peratusan akaun. Ia adalah permintaan untuk leveraj yang tiada broker berikan dan tiada akaun boleh bertahan.

Bentuk pertukaran

Itulah teorinya. Panel seterusnya ialah eksperimen. Ambil pulangan harian sebenar penjejak S&P 500 dalam tempoh sepuluh tahun yang sama, skala setiap pulangan hari dengan saiz pertaruhan tetap, dan kompaunkan hasilnya. Saiz pertaruhan 1.0x ialah indeks tanpa leveraj. Saiz pertaruhan 3.0x komited tiga dolar untuk setiap dolar modal, setiap hari, diimbangi semula setiap hari. Setiap baris ialah satu laluan sepuluh tahun penuh, dengan kekayaan akhirnya dan kejatuhan paling dalam dari puncak ke palung yang dilaluinya sepanjang perjalanan.

PertanyaanSatu dekad pulangan harian S&P 500 dikompaun pada lapan saiz pertaruhan tetap: kekayaan akhir dan penguncupan terburuk
SQL tepat di sebalik setiap nombor
WITH daily AS (
    SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS dt,
           argMax(toFloat64(close), window_start) AS c
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'SPY'
      AND window_start >= '2016-01-01 00:00:00'
      AND window_start <  '2026-01-01 00:00:00'
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
           + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
    GROUP BY dt
),
steps AS (
    SELECT dt, c,
           lagInFrame(c) OVER (ORDER BY dt ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS prev
    FROM daily
),
rets AS (
    SELECT dt, c / prev - 1 AS ret
    FROM steps
    WHERE prev > 0
),
sizes AS (
    SELECT arrayJoin([0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 4.0, 5.0]) AS bet
),
paths AS (
    SELECT bet, dt,
           exp(sum(log(greatest(1 + bet * ret, 0.0001)))
               OVER (PARTITION BY bet ORDER BY dt
                     ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)) AS equity
    FROM rets CROSS JOIN sizes
),
peaks AS (
    SELECT bet, dt, equity,
           max(equity) OVER (PARTITION BY bet ORDER BY dt
                             ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS peak
    FROM paths
)
SELECT concat(toString(bet), 'x') AS bet_size,
       round(argMax(equity, dt), 2) AS ending_multiple,
       round(100 * max(1 - equity / peak), 1) AS max_drawdown_pct
FROM peaks
GROUP BY bet
ORDER BY bet
Run this yourself

Pada 0.5x laluan berakhir pada 1.92 kali modal permulaannya, dengan kejatuhan terburuk 18.2% daripada paras tertinggi sebelumnya. Pada 5x, pulangan harian yang sama dan dekad yang sama, laluan berakhir pada 14.35 kali, dengan kejatuhan terburuk 94.5%.

Kedua-dua lajur bergerak secara berbeza, dan itulah keseluruhan pengajaran Kelly pecahan. Kekayaan akhir meningkat dengan saiz pertaruhan untuk seketika, mendatar, dan kemudian menurun apabila seretan daripada mengkompaun turun naik mengatasi pendedahan tambahan. Lajur pengeluaran tidak mempunyai titik perubahan sedemikian. Ia meningkat pada setiap langkah merentasi 8 baris, dan ia meningkat lebih cepat daripada lajur kekayaan pernah lakukan. Separuh daripada pertumbuhan pertaruhan optimum tersedia pada separuh saiz pertaruhan optimum, pada sebahagian kecil daripada kesakitan. Asimetri itu ialah hujah untuk mempertaruhkan kurang daripada f*, dan ia adalah sebab konvensyen separuh Kelly wujud sama sekali.

Anggaran adalah bahagian yang lemah, bukan formulanya

Formula adalah tepat untuk pertaruhan yang kemungkinannya diketahui. Di kasino kemungkinan dicetak. Di pasaran ia dianggarkan daripada sejarah, dan anggaran itu goyah. Berikut adalah pengiraan yang sama seperti panel pertama, dijalankan secara berasingan pada setiap satu daripada sepuluh tahun kalendar untuk satu penjejak indeks.

PertanyaanPengiraan Kelly yang sama pada penjejak S&P 500, tahun demi tahun, 2016 hingga 2025
SQL tepat di sebalik setiap nombor
WITH daily AS (
    SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS dt,
           argMax(toFloat64(close), window_start) AS c
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'SPY'
      AND window_start >= '2016-01-01 00:00:00'
      AND window_start <  '2026-01-01 00:00:00'
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
           + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
    GROUP BY dt
),
steps AS (
    SELECT dt, c,
           lagInFrame(c) OVER (ORDER BY dt ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS prev
    FROM daily
),
rets AS (
    SELECT dt, c / prev - 1 AS ret
    FROM steps
    WHERE prev > 0 AND c != prev
)
SELECT toString(toYear(dt)) AS year,
       round(100 * countIf(ret > 0) / count(), 1) AS win_rate_pct,
       round(100 * avgIf(ret, ret > 0), 2) AS avg_gain_pct,
       round(100 * abs(avgIf(ret, ret < 0)), 2) AS avg_loss_pct,
       round(countIf(ret > 0) / count() / abs(avgIf(ret, ret < 0))
             - countIf(ret < 0) / count() / avgIf(ret, ret > 0), 1) AS full_kelly_x
FROM rets
GROUP BY year
HAVING countIf(ret > 0) > 0 AND countIf(ret < 0) > 0
ORDER BY year
Run this yourself

Setiap baris adalah anggaran kuantiti tidak diketahui yang sama, dibina daripada kira-kira 250 pemerhatian. Tahun 2016 mengembalikan 13.7, pada kadar kemenangan 53.8%. Tahun 2025 mengembalikan 12.3, pada kadar kemenangan 57.8%. Carta menunjukkan betapa jauhnya 10 bacaan satu nombor boleh mendarat apabila setiap satu diambil daripada satu tahun.

Serakan itu lebih penting daripada sebarang penghalusan formula. Terlebih anggar kelebihan anda dengan faktor dua dan formula mengembalikan kira-kira dua kali saiz pertaruhan, yang meletakkan anda pada atau melepasi titik di mana pertumbuhan menjadi negatif. Kurang anggarnya dan anda melepaskan pertumbuhan yang anda boleh kompaun, tanpa risiko kebinasaan. Kedua-dua kesilapan itu tidak simetri, dan bahagian murah asimetri itu ialah bahagian kecil. Pengamal yang menggunakan Kelly sama sekali cenderung untuk mempertaruhkan separuh daripadanya, atau suku, dan menganggap formula sebagai siling dan bukannya sasaran.

Di mana model berhenti menggambarkan pasaran

Kelly menganggap pertaruhan yang boleh anda ulang dengan kemungkinan tetap dan diketahui, dan hasil yang bebas daripada satu ulangan ke ulangan seterusnya. Pasaran memecahkan semua itu. Kemungkinan dianggarkan dan berubah mengikut masa. Pulangan harian berkelompok: tempoh tenang mengikuti tempoh tenang, dan hari ganas tiba dalam kumpulan, yang meregangkan pengeluaran melebihi apa yang diramalkan oleh andaian kebebasan. Kedudukan tidak diselesaikan pada akhir setiap hari, jurang melangkaui harga di mana pertaruhan akan ditutup, dan panggilan margin tiba pada jadual broker dan bukannya jadual model.

Formula masih berfungsi sebagai sempadan. Ia menyatakan, dalam satu baris, bahawa terdapat saiz pertaruhan yang melebihi keyakinan yang lebih menghasilkan kurang kekayaan, dan ia mencari sempadan itu daripada kuantiti yang sekurang-kurangnya boleh cuba diukur oleh pedagang. Itu juga sebab logik yang sama menunjuk ke arah kepelbagaian: beberapa pertaruhan yang sebahagiannya bebas berkongsi jumlah belanjawan risiko yang sama dengan lebih cekap daripada satu pertaruhan, yang merupakan aritmetik di bawah risiko penumpuan. Dan untuk pelabur yang menambah wang mengikut jadual dan bukannya menentukan saiz pertaruhan diskret, soalan saiz kedudukan dijawab oleh jadual itu sendiri, yang merupakan kes untuk purata kos dolar.

FAQ

Apakah formula kriteria Kelly?

Untuk pertaruhan yang memenangi pecahan g daripada taruhan dengan kebarangkalian p dan kehilangan pecahan l dengan kebarangkalian q, pecahan modal optimum untuk pertumbuhan ialah f = p / l - q / g. Dalam kes wang genap ia dipermudahkan kepada f = p - q, kelebihan itu sendiri.

Mengapa pedagang menggunakan separuh Kelly dan bukannya Kelly penuh?

Pertumbuhan hampir rata berhampiran optimum manakala risiko terus meningkat melepasinya, jadi memotong pertaruhan separuh menyerahkan sejumlah kecil pertumbuhan jangka panjang dan mengeluarkan sebahagian besar pengeluaran. Ralat anggaran menggandakan hujah: pertaruhan berganda daripada kelebihan yang terlebih anggar duduk berhampiran titik di mana pertumbuhan berhenti.

Adakah kriteria Kelly berfungsi untuk saham?

Ia terpakai sebagai aritmetik, dan andaiannya tentang kemungkinan tetap yang diketahui dan hasil bebas tidak berlaku dalam pasaran. Digunakan secara naif pada pulangan ekuiti harian ia meminta leveraj jauh melebihi apa yang boleh ditanggung oleh mana-mana akaun, seperti yang ditunjukkan oleh panel pertama di atas.

Apa yang berlaku jika anda bertaruh lebih daripada pecahan Kelly?

Kadar pertumbuhan jangka panjang jatuh. Pada kira-kira dua kali pecahan Kelly ia mencapai kira-kira sifar, dan melebihi itu pertaruhan dengan kelebihan sebenar mengecutkan modal dari semasa ke semasa sementara pengeluarannya terus mendalam.

Adakah kriteria Kelly sama dengan mengambil risiko 1% atau 2% setiap dagangan?

Tidak. Peraturan peratusan tetap mengabaikan kemungkinan sepenuhnya dan menggunakan nombor yang sama pada setiap persediaan. Kelly menskalakan taruhan dengan kelebihan yang diukur, yang menjadikannya lebih responsif apabila kelebihan diketahui dan lebih rapuh apabila kelebihan diagak.


Setiap angka di atas datang daripada pertanyaan tersimpan yang boleh anda buka, edit, dan jalankan semula. Tukar ticker, tetingkap, atau grid saiz pertaruhan dan ukur pertukaran itu sendiri pada terminal Strasmore.