Fractional Kelly and Growth-Optimal Portfolios
Kelly portfolio construction maximizes expected log wealth, not expected return or Sharpe ratio. That distinction makes it a useful sizing framework and a dangerous production rule. The unconstrained growth-optimal allocation reacts violently to small errors in expected returns, correlations, and tail assumptions. Fractional Kelly is the practical response: retain the compounding logic while deliberately surrendering some theoretical growth to gain robustness.
This post extends Kelly position sizing from a single bet to correlated assets. It also explains why a covariance estimate should usually be shrunk before it reaches a Kelly optimizer.
From a bet to a portfolio
For a one-period simple-return vector r, terminal wealth is 1 + w' r; the growth-optimal weights solve:
max_w E[log(1 + w' r)]
The no-bankruptcy condition is not cosmetic: 1 + w' r > 0 in every modeled state. For small returns and approximately Gaussian arithmetic returns, a second-order expansion gives a familiar approximation:
E[log(1 + w'r)] ≈ w'μ − ½ w'Σw
w_K ≈ Σ⁻¹ μ
This looks like Markowitz optimization with risk aversion one, but it has a different interpretation. Σ⁻¹μ is the leverage that maximizes long-run geometric growth under the approximation. It is not a prediction that the realized path will be smooth.
| Quantity | Mean-variance reading | Kelly reading |
|---|---|---|
μ | expected excess return | source of log-growth |
w'Σw | variance penalty | volatility drag |
| leverage | policy choice | endogenous, often excessive |
| objective | utility at a horizon | asymptotic compounded wealth |
Why full Kelly is fragile
The inverse covariance multiplies input noise. An annual alpha error of 1% in a low-volatility spread can change the suggested notional by multiples; an unobserved left-tail event can invalidate the leverage entirely. Even when the distribution is correct, full Kelly has substantial path risk: a favorable expected-growth strategy can experience a drawdown that a real investment mandate cannot finance.
The mismatch is structural. Kelly assumes the investor can repeat the opportunity indefinitely, has a correct distribution, and cares only about terminal log wealth. Funds face capital withdrawals, volatility targets, margin calls, and finite research samples. Treat the optimizer output as a raw signal, not an executable weight.
Fractional Kelly as robust scaling
Set:
w_f = f w_K, 0 < f ≤ 1
For the quadratic model, expected log growth becomes:
g(f) = f μ'w_K − ½ f² w_K'Σw
If w_K = Σ⁻¹μ, full Kelly maximizes this parabola. Half Kelly gives roughly 75% of the model's maximum growth while reducing variance of log wealth to one quarter. This is a powerful trade: parameter uncertainty makes the growth lost on paper much smaller than the drawdown relief obtained in reality.
import numpy as np
def fractional_kelly(mu, cov, fraction=0.5, ridge=1e-6):
"""Annualized inputs; use constrained optimization in production."""
n = len(mu)
raw = np.linalg.solve(cov + ridge * np.eye(n), mu)
return fraction * raw
def scale_to_volatility(w, cov, target_vol):
forecast_vol = np.sqrt(w @ cov @ w)
return w * target_vol / max(forecast_vol, 1e-12)
Ridge regularization above is only a numerical guard. A better risk model uses covariance shrinkage, factor exposure limits, and stress scenarios. Those controls alter the portfolio rather than merely making matrix inversion succeed.
A production construction sequence
Estimate alpha at the horizon at which the portfolio will rebalance. Estimate a forward-looking covariance matrix, preferably with a factor structure and a conservative idiosyncratic component. Solve the log-utility problem with long/short, gross-exposure, liquidity, and turnover constraints; then scale the result by f and a portfolio volatility target. Finally, run historical and hypothetical stress tests including jumps that do not exist in the calibration sample.
| Control | Failure it addresses |
|---|---|
f = 0.25–0.75 | alpha and covariance error |
| gross leverage cap | offsetting long-short explosions |
| factor bounds | hidden beta concentration |
| CVaR/stress limit | non-Gaussian left tails |
| turnover penalty | growth erased by trading costs |
Use cost-aware optimization when alphas are short lived. A frictionless Kelly solution that trades daily can maximize pre-cost log growth and minimize investor wealth.
Diagnostics that matter
Do not validate Kelly by reporting only arithmetic return. Track realized log return, forecast versus realized volatility, maximum drawdown, gross and net exposure, and sensitivity to perturbing every alpha. A useful stability test re-solves after adding noise to μ; if ranks or signs continually flip, reduce the fraction or simplify the model. Compare the result with risk parity: the latter is often a credible fallback when alpha confidence is too low to justify aggressive directional bets.
Key takeaways
- Full Kelly is an idealized growth benchmark, not a default leverage recommendation.
- Fractional scaling is a principled response to estimation error and path risk.
- Robust covariances, exposure limits, and costs must be inside the construction process.
- Evaluate realized log growth and drawdowns, not just backtest Sharpe ratios.
