← Alle Insights

Kelly-Criterion im Trading: optimale Positionsgrößen.

John Kelly hat 1956 in den Bell Labs eine Formel veröffentlicht, die das langfristige Wachstum eines wiederholt eingesetzten Kapitals maximiert. Edward Thorp übertrug sie erst auf Blackjack, dann auf die Märkte. Heute ist Kelly Standard-Tooling für jeden quantitativen Trader — aber nur, wenn man die Annahmen versteht.

Die Grundformel.

Für eine einzelne Wette mit Wahrscheinlichkeit p, Gewinn-zu-Einsatz- Verhältnis b und Verlust-zu-Einsatz-Verhältnis a (oft a = 1, also Totalverlust) ist der optimale Einsatzanteil:

f* = (p · b − (1 − p) · a) / (a · b)

Bei a = 1 vereinfacht sich das zur bekannten Form f* = p − (1 − p)/b. Wenn ein Trade in 55 % der Fälle 1:1 zahlt, ist f* = 0,55 − 0,45 = 0,10 — Sie setzen 10 % Ihres Kapitals ein. Bei einem ungünstigeren Setup (50 %, 1:0,8) ist f* negativ, und die korrekte Antwort lautet: nicht traden.

Übertragung auf kontinuierliche Renditen.

Im realen Trading haben Sie keine binären Outcomes, sondern eine Verteilung von Renditen. Die kontinuierliche Variante des Kelly-Criterion lautet:

f* = μ / σ²

Dabei ist μ die Excess-Rendite (über den risikolosen Zinssatz) und σ² die Varianz der Renditen. Diese Formulierung gilt für Log-Renditen unter Normalverteilungsannahme. Für ein Asset mit erwarteter Excess-Rendite von 8 % und einer annualisierten Vola von 16 % ergibt sich f* = 0,08 / 0,0256 ≈ 3,1. Sie würden also den 3,1-fachen Hebel auf dieses Asset fahren.

Das illustriert sofort das Problem: Voll-Kelly ist in der Praxis viel zu aggressiv. Es maximiert die geometrische Wachstumsrate, ignoriert aber die Drawdowns auf dem Weg dorthin.

Mehrere Assets: das Matrix-Kelly.

Mit mehreren Assets verallgemeinert sich die Formel zu:

f* = Σ⁻¹ · μ

Das ist strukturell identisch zur Mean-Variance-Optimierung mit Risikoaversion δ = 1. Kelly ist also der „aggressivste" Mean-Variance- Investor: vollständig wachstumsmaximierend, ohne explizite Risikoaversion.

import numpy as np

def kelly_weights(mu, cov, fraction=1.0):
    """Berechnet Kelly-Gewichte für mehrere Assets.

    mu       : Vektor erwarteter Excess-Renditen (annualisiert)
    cov      : Kovarianzmatrix (annualisiert)
    fraction : Skalierungsfaktor (1.0 = Full-Kelly, 0.5 = Half-Kelly)
    """
    inv_cov = np.linalg.inv(cov)
    f_full = inv_cov @ mu
    return fraction * f_full

def expected_growth_rate(weights, mu, cov):
    """Erwartete logarithmische Wachstumsrate des Portfolios."""
    return weights @ mu - 0.5 * weights @ cov @ weights

Warum Half-Kelly fast immer die bessere Wahl ist.

Drei Gründe sprechen praktisch immer für eine fraktionale Kelly-Strategie mit fraction ≤ 0,5:

Edward Thorp selbst hat in seinen Hedge-Funds typischerweise zwischen Half-Kelly und Quarter-Kelly gefahren. Die geometrische Wachstumsrate sinkt dabei nur leicht (ein Half-Kelly-Portfolio erreicht etwa 75 % des Full-Kelly-Wachstums), aber die Drawdowns halbieren sich nahezu.

Adaptive Kelly: zeitvariable Schätzungen.

In der Praxis sind μ und σ nicht stationär. Eine bewährte Implementierung schätzt beide rollierend und passt die Positionsgrößen dynamisch an:

import pandas as pd

def rolling_kelly_position(prices, lookback=126, fraction=0.5, min_obs=60):
    """Berechnet adaptive Kelly-Positionsgröße für ein einzelnes Asset."""
    log_ret = np.log(prices / prices.shift(1))
    mu = log_ret.rolling(lookback).mean() * 252
    var = log_ret.rolling(lookback).var() * 252
    raw = mu / var
    # Glätten und limitieren
    smoothed = raw.rolling(20).mean()
    capped = smoothed.clip(lower=-2.0, upper=2.0)
    return fraction * capped

def kelly_backtest(prices, fraction=0.5):
    pos = rolling_kelly_position(prices, fraction=fraction)
    ret = prices.pct_change()
    strat = pos.shift(1) * ret
    return strat.dropna()

Wichtig sind die Caps. Ohne ein hartes Limit kann ein temporär hoher μ-Schätzwert kombiniert mit einer ruhigen Phase zu absurden Hebeln führen. Ein typischer Cap liegt bei 2x Voll-Kelly für die Gesamtposition.

Kelly bei Strategien mit asymmetrischen Auszahlungen.

Für Strategien, die nicht annähernd normal verteilt sind — Optionsverkäufe, Volatility Arbitrage, Tail-Hedges — versagt die μ / σ²-Formel. Hier müssen Sie das Kelly direkt aus der empirischen Verteilung optimieren:

f* = arg max E[log(1 + f · X)]

wobei X die Rendite der Strategie pro Einheit Kapital ist. Das lässt sich numerisch über die historische Renditeverteilung lösen. Bei Strategien mit Tail-Risiko kommen oft drastisch niedrigere Kelly-Fraktionen heraus als bei normaler Annahme — was den wahren Risikogehalt korrekt widerspiegelt.

Praktische Empfehlungen.

Erstens: bauen Sie Kelly nicht als Black-Box. Verstehen Sie, dass die Formel Ihre Schätzfehler ausnutzt. Wer μ überschätzt, hebt automatisch auf gefährliches Niveau. Schätzen Sie defensiv.

Zweitens: nutzen Sie Kelly als Obergrenze, nicht als Zielgröße. Eine vernünftige Position liegt zwischen Quarter-Kelly und Half-Kelly. Wer mehr nimmt, akzeptiert zweistellige Drawdowns als Normalität.

Drittens: kombinieren Sie Kelly mit Volatility-Targeting. Wenn die realisierte Vola steigt, sinkt das Kelly-Gewicht automatisch — aber zusätzliche Vola-Limits verhindern, dass eine Strategie temporär zu groß wird.

Viertens: testen Sie Ihre Kelly-Skalierung auf historischen Daten. Wenn Sie Quarter-Kelly über einen 20-Jahres-Backtest fahren und einen 25 %-Drawdown sehen, wissen Sie, dass Full-Kelly Sie mit hoher Wahrscheinlichkeit aus dem Markt geschmissen hätte.

Sie wollen Kelly in Ihre Position-Sizing-Logik integrieren oder eine bestehende Sizing-Regel überprüfen? Erstgespräch buchen — wir kalibrieren das System auf Ihre Strategien und Ihr Risikobudget.