Strasmore Research
Deep Dives · Matt ConnorBy Matt Connor ·

Kelly kriteri pozisyon büyüklüğü ölçümü

Kelly kriteri, kenarınıza göre bahis büyüklüğü belirler. On yıllık günlük hisse senedi getirilerinin tam Kelly, düşüş ve yarım Kelly hakkında ne söylediğini görün.

Kelly kriteri, bahis büyüklüğü için bir formüldür. Formüle kazanma olasılığı, kazanç büyüklüğü ve kayıp büyüklüğü girilir; karşılığında servetin uzun vadeli büyüme oranını maksimize eden sermaye oranını verir. John Kelly bunu 1956'da Bell Laboratuvarları'nda bir bilgi teorisi sonucu olarak yayımladı, ardından kumarbazlar ve yatırımcılar benimsedi. Bu sayfa formülü temel ilkelerden başlayarak anlatır, ardından on yıllık gerçek günlük hisse senedi getirileri üzerinde önerdiğini ölçer; bu önerinin yaşanması imkânsız olduğu ortaya çıkar.

Kelly kriteri aslında ne diyor

Yatırılan miktarın g kesri kadar kazandıran bir bahsi p olasılığıyla, l kesri kadar kaybettiren bir bahsi ise q olasılığıyla tekrarladığınızı varsayalım; burada q, 1 eksi p'dir. Her tekrarda taahhüt edilecek büyüme-optimal sermaye oranı şudur:

f* = p / l - q / g

Kazancın kayıpla eşit olduğu klasik durumda, g ve l'nin ikisi de 1'e eşittir ve formül f* = p - q'ya sadeleşir. Bu fark, avantajın ta kendisidir. Eşit ödemeli bir bahsi %60 kazanan bir kupon %20 puanlık bir avantaj taşır ve Kelly sermayenin %20'sini bu bahse yatırır.

Türetme, beklenen servet logaritmasına uygulanan tek adımlık bir kalkülüstür. Bahis başına ortalama servet logaritmasını maksimize etmek, uzun bir dizi boyunca bileşik büyüme oranını maksimize etmeye eşdeğerdir ve bunu başaran oran yukarıdaki gibidir. Bundan iki özellik çıkar. Kelly, her şeyi kaybedebilecek bir bahiste asla tüm sermayeyi riske atmaz, çünkü sıfırın logaritması eksi sonsuzdur. Ve f dışındaki herhangi bir sabit oran, yeterince uzun süre tekrarlandığında, f'den daha yavaş bileşik büyür.

Elle kontrol edebileceğiniz bir yazı tura

Bu bölümdeki rakamlar varsayımsaldır ve aritmetiği görünür kılmak için seçilmiştir. %60 ihtimalle tura gelen ve eşit ödeme yapan bir bozuk para düşünün; başlangıç sermayeniz 1.000$ olsun.

  • Her atışta sermayenin %20'sini yatırın. Bir kazanç 1.000$'ı 1.200$'a çıkarır; bir kayıp 800$'a düşürür. Sırası fark etmeksizin bir kazanç ve bir kayıp, 960$ bırakır.
  • Her atışta sermayenin %40'ını yatırın. Aynı kazanç-sonra-kayıp çifti 1.000$'ı 1.400$'a, ardından 840$'a götürür.
  • Her atışta tüm sermayeyi yatırın. Tek bir yazı, avantaj ne olursa olsun, diziyi kalıcı olarak sonlandırır.

%20 yatırımda bu %4'lük gidiş-dönüş maliyeti, oynak bir sermayeyi bileşiklendirmenin bedelidir ve %60/%40'lık bir bozuk para, uzun bir dizi boyunca bunu defalarca karşılar. %40 yatırımda gidiş-dönüş maliyeti %16'dır ve bozuk para artık bunu karşılayamaz: Kelly oranının iki katındaki büyüme oranı kabaca sıfıra iner. Bu noktanın ötesinde, gerçek, kanıtlanmış bir avantaja sahip bir bahis hiçbir şey büyütmez; bu, formülün taşıdığı en kullanışlı tek bilgidir.

Formülün günlük bir hisse senedi bahsinde istediği

Şimdi aynı formülü bir piyasaya yöneltin. Bir hisse senedindeki bir işlem gününü, bahsin bir tekrarı olarak ele alın: kazanma olasılığı günü yükselişle kapatan günlerin oranıdır, kazanç büyüklüğü ortalama yükseliş günü hareketidir ve kayıp büyüklüğü ortalama düşüş günü hareketidir. 2016'dan 2025'e kadar on tam takvim yılı, altı tanıdık isim için günlük kapanışlar:

Sorgula2016-2025 günlük kapanışlardan Kelly girdileri: kazanma oranı, ortalama kazanç, ortalama kayıp ve formülün döndürdüğü kesir
Her verinin arkasındaki tam SQL
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

İlk üç sütunu ve avantajı okuyunca çok küçük görünüyor. Kazanma oranları yazı tura atışına yakın seyrediyor ve ortalama yükseliş günü ile ortalama düşüş günü, paneldeki her isim için boyut olarak birbirine yakın. SPY, seanslarının 55.3%'inde daha yüksek kapandı ve ortalama bir yükseliş gününde 0.71% kazanırken, ortalama bir düşüş gününde 0.76% kaybetti.

Sorunun başladığı yer son sütundur. Bu küçük, neredeyse dengeli girdiler formülün paydalarında yer alır ve küçük paydalar büyük cevaplar üretir. Formülün SPY için döndürdüğü oran, sermayenin 10.1 katıdır ve 6 ismin en düşüğü hala 2 katta kalır. Günlük bir hisse senedi bahsinde tam Kelly, hesabın bir yüzdesi değildir. Hiçbir komisyoncunun sunmadığı ve hiçbir hesabın kaldıramayacağı bir kaldıraç talebidir.

Ödünleşimin şekli

Bu teori. Bir sonraki panel ise deney. Aynı on yıl boyunca S&P 500 takipçisinin gerçek günlük getirilerini alın, her günün getirisini sabit bir bahis büyüklüğüyle ölçeklendirin ve sonucu bileşiklendirin. 1,0x bahis büyüklüğü kaldıraçsız endekstir. 3,0x bahis büyüklüğü, her gün, günlük yeniden dengelenerek, sermayenin her doları için üç dolar taahhüt eder. Her satır, yol boyunca yaşanan en derin tepe-dip düşüşü ve bitiş servetiyle birlikte, on yıllık tam bir yoldur.

SorgulaS&P 500 günlük getirilerinin sekiz sabit bahis büyüklüğünde bileşik getirisi, bir on yıl: nihai servet ve en kötü düşüş
Her verinin arkasındaki tam SQL
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

0.5x'de yol, önceki bir zirveden 18.2%'luk en kötü düşüşle, başlangıç sermayesinin 1.92 katında sona erdi. 5x'de, aynı günlük getiriler ve aynı on yıl, yol 94.5%'lük en kötü düşüşle 14.35 katta sona erdi.

İki sütun farklı hareket eder ve kesirli Kelly'nin tüm dersi budur. Bitiş serveti, bir süre bahis büyüklüğüyle yükselir, düzleşir ve ardından oynaklığı bileşiklendirmenin sürüklemesi ek maruziyeti geçtikçe düşüşe geçer. Düşüş sütununun böyle bir dönüm noktası yoktur. 8 satır boyunca her adımda yükselir ve servet sütununun asla yapamadığından daha hızlı yükselir. Optimal bahsin büyümesinin yarısı, acının küçük bir kısmı karşılığında, optimal bahis büyüklüğünün yarısında elde edilebilir. Bu asimetri, f*'den daha az yatırım yapmanın gerekçesidir ve yarım-Kelly geleneğinin var olmasının nedenidir.

Tahmin zayıf kısımdır, formül değil

Formül, oranları bilinen bir bahis için kesindir. Bir kumarhanede oranlar basılıdır. Bir piyasada geçmişten tahmin edilirler ve tahmin dalgalanır. İşte ilk paneldekiyle aynı hesaplama, tek bir endeks takipçisi için on takvim yılının her birinde ayrı ayrı çalıştırılmıştır.

SorgulaS&P 500 izleyicisinde aynı Kelly hesaplaması, yıldan yıla, 2016-2025
Her verinin arkasındaki tam SQL
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

Her satır, kabaca 250 gözlemden oluşturulmuş, aynı bilinmeyen miktarın bir tahminidir. 2016 yılı, 53.8%'lik bir kazanma oranıyla 13.7 döndürdü. 2025 yılı, 57.8%'lik bir kazanma oranıyla 12.3 döndürdü. Grafik, her biri tek bir yıldan alındığında, bir sayının 10 okumasının ne kadar uzaklaşabileceğini gösteriyor.

Bu dağılım, formülün herhangi bir iyileştirmesinden daha önemlidir. Avantajınızı iki kat fazla tahmin edin, formül kabaca iki kat bahis büyüklüğü verir ve bu sizi büyümenin negatife döndüğü noktaya veya ötesine yerleştirir. Düşük tahmin edin, bileşiklendirebileceğiniz büyümeden, hiçbir batma riski olmadan vazgeçersiniz. İki hata simetrik değildir ve asimetrinin ucuz tarafı küçük taraftır. Kelly'yi kullanan uygulayıcılar, genellikle yarısını veya dörtte birini yatırır ve formülü bir hedef değil, bir tavan olarak ele alır.

Modelin bir piyasayı tanımlamayı bıraktığı yer

Kelly, sabit, bilinen oranlarla ve bir tekrardan diğerine bağımsız sonuçlarla tekrarlayabileceğiniz bir bahis varsayar. Bir piyasa bunların hepsini bozar. Oranlar tahmin edilir ve zamanla değişir. Günlük getiriler kümelenir: sakin dönemler sakin dönemleri takip eder ve şiddetli günler gruplar halinde gelir; bu da düşüşleri bağımsızlık varsayımının öngördüğünün ötesine taşır. Pozisyonlar her günün sonunda kapatılmaz, fiyat boşlukları bir bahsin kapatılacağı fiyatı atlar ve teminat tamamlama çağrıları modelin takvimi yerine komisyoncunun takvimine göre gelir.

Formül yine de bir sınır olarak değerini korur. Tek bir satırda, daha fazla inancın daha az servet ürettiği bir bahis büyüklüğü olduğunu belirtir ve bu sınırı, bir yatırımcının en azından ölçmeye çalışabileceği niceliklerden bulur. Aynı mantığın çeşitlendirmeye işaret etmesinin nedeni de budur: birkaç kısmen bağımsız bahis, aynı toplam risk bütçesini tek bir bahisten daha verimli paylaşır; bu, yoğunlaşma riskinin altında yatan aritmetiktir. Ve ayrık bahisler boyutlandırmak yerine bir programa göre para ekleyen bir yatırımcı için, pozisyon boyutlandırma sorusu programın kendisi tarafından yanıtlanır; bu da dolar-maliyeti ortalamasının gerekçesidir.

SSS

Kelly kriteri formülü nedir?

Bahsin p olasılığıyla yatırılan miktarın g kesri kadar kazandırdığı ve q olasılığıyla l kesri kadar kaybettirdiği bir durumda, büyüme-optimal sermaye oranı f = p / l - q / g'dir. Eşit ödeme durumunda f = p - q'ya, yani avantajın kendisine sadeleşir.

Yatırımcılar neden tam Kelly yerine yarım Kelly kullanır?

Büyüme optimuma yakınken neredeyse düzdür, risk ise onun ötesinde yükselmeye devam eder; bu nedenle bahsi yarıya indirmek, uzun vadeli büyümeden mütevazı bir miktar feragat eder ve düşüşün büyük bir kısmını ortadan kaldırır. Tahmin hatası bu argümanı güçlendirir: abartılmış bir avantajdan gelen iki kat bahis, büyümenin durduğu noktaya yakın bir yerde bulunur.

Kelly kriteri hisse senetleri için işe yarar mı?

Aritmetik olarak uygulanır, ancak sabit bilinen oranlar ve bağımsız sonuçlar varsayımları piyasalarda geçerli değildir. Yukarıdaki ilk panelin gösterdiği gibi, günlük hisse senedi getirilerine safça uygulandığında, herhangi bir hesabın kaldırabileceğinin çok ötesinde kaldıraç talep eder.

Kelly oranından daha fazla bahis yaparsanız ne olur?

Uzun vadeli büyüme oranı düşer. Kabaca Kelly oranının iki katında sıfıra ulaşır ve bunun ötesinde, gerçek bir avantaja sahip bir bahis, düşüşleri derinleşmeye devam ederken zamanla sermayeyi küçültür.

Kelly kriteri, işlem başına %1 veya %2 riske atmakla aynı şey midir?

Hayır. Sabit yüzde kuralı, oranları tamamen görmezden gelir ve her kuruluma aynı sayıyı uygular. Kelly, bahsi ölçülen avantajla ölçeklendirir; bu da avantaj bilindiğinde onu daha duyarlı, avantaj tahmin edildiğinde ise daha kırılgan kılar.


Yukarıdaki her rakam, açabileceğiniz, düzenleyebileceğiniz ve yeniden çalıştırabileceğiniz kayıtlı bir sorgudan gelir. Ticker'ları, pencereyi veya bahis büyüklüğü ızgarasını değiştirin ve Strasmore terminalinde ödünleşimi kendiniz ölçün.