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:
- Schätzfehler in μ: Die erwarteten Renditen kennen Sie nicht, Sie schätzen sie. Wenn die wahre Rendite 6 % beträgt, Sie aber 8 % schätzen, überallokieren Sie systematisch. Full-Kelly auf falschen μ-Werten kann in negative Wachstumsraten kippen.
- Drawdowns: Full-Kelly hat eine Eigenschaft, die viele übersehen. Selbst bei korrekten Parametern beträgt der erwartete maximale Drawdown rund 50 %. Halten Sie das psychisch und institutionell aus? Die meisten nicht.
- Nicht-Normalität: Marktrenditen haben fette Linke Tails. Die Kelly-Formel unterstellt log-normale Verteilung. Tail-Risiken machen Full-Kelly in realen Märkten zu aggressiv.
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.