Markets: A Rigorous Course

3.5 Estimation risk and many bets

Advanced about 20 min

Motivation

Kelly's formula takes the edge as known. A trader knows only an estimate, and M02 · 2.4 showed that mean returns are estimated very imprecisely. Separately, traders hold several positions at once, and correlated positions are one large bet.

Shrinking for estimation error#

Setup

Let the true excess return be μ\mu (write μ\mu for μ−r\mu - r in this subsection) and the volatility σ\sigma known. The trader estimates μ^∼N(μ,se2)\hat\mu \sim N(\mu, \text{se}^2), independent of future returns, and bets f=kμ^/σ2f = k\hat\mu/\sigma^2 for a chosen multiplier kk. Let t=μ/set = \mu/\text{se} be the true signal-to-noise ratio of the estimate.

Proposition 3.9shrinking the estimated Kelly fraction

The expected excess growth is

E[g(kμ^/σ2)]−r=kμ2σ2−k2(μ2+se2)2σ2,(3.13)E\big[g(k\hat\mu/\sigma^2)\big] - r = \frac{k\mu^2}{\sigma^2} - \frac{k^2(\mu^2 + \text{se}^2)}{2\sigma^2}, \tag{3.13}

maximised at

k∗=μ2μ2+se2=t21+t2.(3.14)k^* = \frac{\mu^2}{\mu^2 + \text{se}^2} = \frac{t^2}{1 + t^2}. \tag{3.14}

At k=1k = 1 (plug-in Kelly) the expected excess growth is (μ2−se2)/(2σ2)(\mu^2 - \text{se}^2)/(2\sigma^2), which is negative if t<1t < 1.

Proof

From (3.9), g(f)−r=fμ−12f2σ2g(f) - r = f\mu - \frac12 f^2\sigma^2. With f=kμ^/σ2f = k\hat\mu/\sigma^2: E[f]=kμ/σ2E[f] = k\mu/\sigma^2 and E[f2]=k2(μ2+se2)/σ4E[f^2] = k^2(\mu^2 + \text{se}^2)/\sigma^4. Hence E[g(f)]−r=kμ2/σ2−k2(μ2+se2)/(2σ2)E[g(f)] - r = k\mu^2/\sigma^2 - k^2(\mu^2 + \text{se}^2)/(2\sigma^2). This is a concave quadratic in kk with maximum at k=μ2/(μ2+se2)k = \mu^2/(\mu^2 + \text{se}^2).∎

The optimal multiplier depends on the unknown tt, but its message is robust. With TT years of data, se=σ/T\text{se} = \sigma/\sqrt T and t=STt = S\sqrt T (M02 Proposition 2.9), so k∗=S2T/(1+S2T)k^* = S^2T/(1 + S^2T). For the Nifty example (S=0.225S = 0.225, T=19T = 19 years), S2T=0.96S^2T = 0.96 and k∗=0.49k^* = 0.49: the data justify half the estimated Kelly leverage. For a 3-year backtest with S=1S = 1, k∗=0.75k^* = 0.75; with S=0.5S = 0.5, k∗=0.43k^* = 0.43. A Bayesian treatment with prior μ∼N(0,τ2)\mu \sim N(0, \tau^2) gives the same form: in continuous time the growth rate is linear in μ\mu, so the Bayes-optimal fraction is E[μ∣data]/σ2E[\mu \mid \text{data}]/\sigma^2, and the posterior mean shrinks μ^\hat\mu by τ2/(τ2+se2)\tau^2/(\tau^2 + \text{se}^2).

Estimation error in σ\sigma also matters. If the true volatility is λ\lambda times the estimate, a bettor aiming at cc times Kelly is actually at cλ2c\lambda^2. A regime shift that doubles volatility (Nifty daily volatility went from 0.77% in Jan–Feb 2026 to 1.48% in March–April 2026, M02 · 2.10.4) turns half Kelly into double Kelly: zero growth.

Multi-asset Kelly#

Proposition 3.10multi-asset Kelly

With nn risky assets with drift vector μ\mu, covariance matrix Σ\Sigma (positive definite) and portfolio weights f∈Rnf \in \mathbb R^n,

g(f)=r+f⊤(μ−r1)−12f⊤Σf,f∗=Σ−1(μ−r1),g(f∗)=r+12(μ−r1)⊤Σ−1(μ−r1).(3.15)\begin{aligned} g(f) &= r + f^\top(\mu - r\mathbf 1) - \tfrac12 f^\top\Sigma f, \qquad f^* = \Sigma^{-1}(\mu - r\mathbf 1), \\ g(f^*) &= r + \tfrac12(\mu - r\mathbf 1)^\top\Sigma^{-1}(\mu - r\mathbf 1). \end{aligned} \tag{3.15}
Proof

dW/W=r dt+f⊤(dS/S−r1 dt)dW/W = r\,dt + f^\top(dS/S - r\mathbf 1\,dt) has drift r+f⊤(μ−r1)r + f^\top(\mu - r\mathbf 1) and instantaneous variance f⊤Σff^\top\Sigma f. By Itô's lemma on ln⁡W\ln W (M08), the log drift is r+f⊤(μ−r1)−12f⊤Σfr + f^\top(\mu - r\mathbf 1) - \frac12 f^\top\Sigma f. The gradient is (μ−r1)−Σf(\mu - r\mathbf 1) - \Sigma f, zero at f∗f^*; the Hessian −Σ-\Sigma is negative definite, so this is the unique maximum. Substitute to get g(f∗)g(f^*).∎

The quantity (μ−r1)⊤Σ−1(μ−r1)(\mu - r\mathbf 1)^\top\Sigma^{-1}(\mu - r\mathbf 1) is the squared Sharpe ratio of the tangency (maximum-Sharpe) portfolio of mean–variance theory (M14). The Kelly portfolio is the tangency portfolio, levered to the point where its own Kelly fraction is 1.

Correlated positions as one bet#

Correlation and simultaneous bets For two assets with the same excess return mm, volatility σ\sigma and correlation ρ\rho, f1∗=f2∗=m/(σ2(1+ρ))f^*_1 = f^*_2 = m/(\sigma^2(1+\rho)), total exposure 2m/(σ2(1+ρ))2m/(\sigma^2(1 + \rho)). At ρ=0\rho = 0 the total is twice one asset's Kelly fraction; at ρ=1\rho = 1 it equals one asset's. A trader who sizes each of nn positions as if it were alone, when they are perfectly correlated, is at c=nc = n times Kelly. With n=3n = 3, growth is negative.

Worked example 3.5.1

Two assets with excess returns 6% and 4% (μ=(12%,10%)\mu = (12\%, 10\%), r=6%r = 6\%), volatilities 20% and 15%, correlation 0.4. Σ=(0.040.0120.0120.0225)\Sigma = \begin{pmatrix}0.04 & 0.012\\ 0.012 & 0.0225\end{pmatrix}, det⁡Σ=0.000756\det\Sigma = 0.000756, Σ−1(0.06,0.04)⊤=10.000756(0.0225×0.06−0.012×0.04, −0.012×0.06+0.04×0.04)=(1.151,1.164)\Sigma^{-1}(0.06, 0.04)^\top = \frac{1}{0.000756}(0.0225 \times 0.06 - 0.012 \times 0.04,\ -0.012 \times 0.06 + 0.04 \times 0.04) = (1.151, 1.164), and g∗=0.06+12(0.06×1.151+0.04×1.164)=11.78%g^* = 0.06 + \frac12(0.06 \times 1.151 + 0.04 \times 1.164) = 11.78\%. At ρ=0.9\rho = 0.9 the solution becomes (1.58,−0.12)(1.58, -0.12): with high correlation, Kelly shorts the weaker asset to hedge the stronger one. Small changes in an estimated correlation produce large changes in the weights, which is the instability of mean–variance optimisation that M14 treats with shrinkage and risk budgets.

Practitioner notes

  • Use k∗k^* as a ceiling: estimation error is only one reason to shrink. Fat tails (the continuous model has none) and correlation in stress are others.
  • Count correlated positions as one bet. Five long positions in Indian private banks are one bet on Indian private banks.
  • Many professional allocators run strategies at a volatility target rather than a Kelly multiple. A volatility target fixes σtarget=fσ\sigma_{\text{target}} = f\sigma, so c=f/f∗=fσ2/(μ−r)=fσ/S=σtarget/Sc = f/f^* = f\sigma^2/(\mu - r) = f\sigma/S = \sigma_{\text{target}}/S: a 10% volatility target on a Sharpe-0.5 strategy is c=0.2c = 0.2.

Create a free account

Reading is open to everyone. An account keeps your progress, answers, notes and code drafts, and gives you the study plan, the journals and the simulator. Running code needs an account approved for it.