SPORTS BETTING MATH APPLIED PROBABILITY INSTITUTE
RESEARCH ARTICLE

Simultaneous Kelly Portfolio Optimization: Optimal Allocation for Concurrent Bets

A mathematical treatise on multivariate Kelly criterion staking for concurrent sports bets, covariance matrix estimation, Karush-Kuhn-Tucker optimization, and risk management heuristics.

22 min read Advanced Last updated 2026-09-20

SBM Stochastic Modeling Lab

Poisson Models & Bankroll Optimization Team

Research laboratory focused on Poisson goal distribution modeling, Kelly criterion staking optimization, and Monte Carlo risk-of-ruin simulations for sports wagering.

Bivariate Poisson Match Outcome Modeling Kelly Criterion Geometric Growth Optimization Monte Carlo Risk-of-Ruin Simulation (10M+ Runs)

1. Introduction: The Failure of Scalar Kelly in Concurrent Betting

In quantitative wagering and algorithmic sports trading, John L. Kelly Jr.'s seminal 1956 paper, "A New Interpretation of Information Rate," provides the mathematical foundation for optimal bet sizing. The classic scalar Kelly formula determines the exact proportion of capital $f^*$ that maximizes the asymptotic geometric growth rate of wealth when evaluating a single wager in isolation:

$$f^* = rac{b cdot p - q}{b} = rac{p(b + 1) - 1}{b} = rac{p cdot O - 1}{O - 1}$$

Where $p$ represents the true subjective probability of the outcome, $q = 1 - p$ denotes the probability of defeat, $b = O - 1$ is the net decimal odds payout, and $O$ is the gross decimal price quoted by the sportsbook. When sequential bets occur strictly one after another—such that the outcome of bet $t$ is fully resolved and settled into the bankroll before wager $t+1$ is struck—scalar Kelly staking guarantees optimal long-term log-utility maximization while ensuring a theoretical zero probability of absolute ruin.

However, modern professional sports bettors rarely operate in a strictly sequential environment. On a typical Saturday afternoon in European football, American college sports, or the NFL, a quantitative syndicate may identify fifteen to thirty concurrent positive expected value ($+ ext{EV}$) opportunities kicking off simultaneously across disparate leagues and bookmakers. If an analyst naively evaluates each match through the scalar Kelly equation, a catastrophic mathematical failure emerges: the scalar fractions frequently sum to well over 100% of the available bankroll ($sum_{i=1}^n f_i^* > 1$).

The Overbetting Catastrophe of Independent Scalar Sizing: Suppose a quantitative model identifies ten simultaneous Premier League wagers, each offering a generous 8% mathematical edge at odds of 2.10. The scalar Kelly formula recommends an allocation of $f_i^* approx 7.27%$ per wager. Staking all ten recommendations independently demands $72.7%$ of the entire bankroll at risk across a single ninety-minute window. If the model identifies twenty such bets, the naive scalar recommendation mandates staking $145.4%$ of available capital—an impossible leverage requirement that guarantees rapid bankroll depletion during standard correlated drawdowns.

Furthermore, sporting propositions that occur concurrently are frequently not statistically independent. Wagering on Team A to win on the 1X2 moneyline, Team A to clear their Asian Handicap spread of -1.5, and the match to exceed Over 2.5 Total Goals introduces severe multi-asset covariance. Naively applying scalar Kelly to correlated simultaneous propositions dramatically overestimates portfolio diversification and leads to lethal over-allocation on latent underlying factors.

To allocate capital across multiple concurrent wagering opportunities without inducing bankruptcy or sub-optimal growth, sports quants must transition from scalar arithmetic to multivariate portfolio Kelly optimization. This technical monograph provides the rigorous mathematical formulation of the simultaneous Kelly criterion, proves the analytical scaling properties under independence, derives the quadratic programming framework for correlated asset matrices, and establishes practical heuristics for institutional bankroll management.

2. Mathematical Formulation: Maximizing Log Wealth with Multiple Opportunities

Let an investor possess an initial capital bankroll $W_0$. At decision epoch $t$, there are $n$ concurrent, mutually non-exclusive betting propositions available. The bettor allocates a fraction vector $mathbf{f} = (f_1, f_2, dots, f_n)^T$ of their current wealth, where $f_i ge 0$ represents the proportion of total capital committed to proposition $i$. The remaining unallocated fraction $f_0 = 1 - sum_{i=1}^n f_i$ is held in risk-free cash earning zero return.

Across the $n$ events, there exist $M = 2^n$ possible joint state outcomes (or $3^n$ if ternary football outcomes are evaluated). Let the set of all mutually exclusive joint states be denoted by $Omega = {omega_1, omega_2, dots, omega_K}$, where each state $omega_k$ occurs with joint probability $p_k ge 0$ such that $sum_{k=1}^K p_k = 1$.

For each joint state $omega_k$, define the gross return vector $mathbf{R}_k = (R_{1,k}, R_{2,k}, dots, R_{n,k})^T$, where $R_{i,k}$ represents the net return per unit staked on bet $i$ under state $omega_k$:

$$R_{i,k} = egin{cases} b_i = O_i - 1 & ext{if bet } i ext{ wins under state } omega_k \ -1 & ext{if bet } i ext{ loses under state } omega_k end{cases}$$

Under joint state $omega_k$, the total portfolio wealth multiplier $g(mathbf{f}, omega_k)$ is defined as the sum of unallocated capital plus the terminal value of all active wagers:

$$g(mathbf{f}, omega_k) = left(1 - sum_{i=1}^n f_i ight) + sum_{i=1}^n f_i (1 + R_{i,k}) = 1 + sum_{i=1}^n f_i R_{i,k} = 1 + mathbf{f}^T mathbf{R}_k$$

Following the Kelly paradigm, the quantitative investor seeks to maximize the expected geometric growth rate of wealth, which is equivalent to maximizing the expected value of the logarithmic utility function $G(mathbf{f}) = mathbb{E}[ln(W_1 / W_0)]$. The objective function is formally stated as:

$$max_{mathbf{f}} G(mathbf{f}) = sum_{k=1}^K p_k lnleft(1 + mathbf{f}^T mathbf{R}_k ight)$$

Subject to the essential physical solvency and anti-leverage constraints:

$$sum_{i=1}^n f_i le 1, quad ext{and} quad f_i ge 0 quad orall i in {1, dots, n}$$

And the strict survival condition ensuring that no realizable state can wipe out the bankroll:

$$1 + mathbf{f}^T mathbf{R}_k > 0 quad orall k in {1, dots, K} ext{ such that } p_k > 0$$

Because the logarithm function is strictly concave, the objective function $G(mathbf{f})$ is a strictly concave function defined over a convex compact polytope. Consequently, by the Karush-Kuhn-Tucker (KKT) theorem, a unique global maximum $mathbf{f}^*$ is mathematically guaranteed to exist.

3. Independent Simultaneous Bets: Analytical Solutions and the Scaling Problem

When the $n$ concurrent sporting propositions are strictly statistically independent, the joint probability of any state decomposes into the product of marginal probabilities: $p_k = prod_{i=1}^n mathbb{P}(X_i = x_{i,k})$.

The Logarithmic Expansion and Gradient Conditions

To find the optimal portfolio allocation vector, we examine the gradient of $G(mathbf{f})$ with respect to each individual allocation fraction $f_i$:

$$ rac{partial G(mathbf{f})}{partial f_i} = sum_{k=1}^K p_k rac{R_{i,k}}{1 + sum_{j=1}^n f_j R_{j,k}} = 0 quad orall i in {1, dots, n}$$

Unlike the single-variable case, this constitutes a coupled system of $n$ nonlinear rational equations. In the denominator of each term, the return $R_{i,k}$ of wager $i$ is intertwined with the allocations $f_j$ and returns $R_{j,k}$ of all other concurrent bets. Because every bet places capital at risk simultaneously, a total loss on bets $2$ through $n$ shrinks the wealth available to absorb the outcome of bet $1$.

The Classical Small-Edge Approximation (Markowitz Connection)

To obtain profound structural insight into simultaneous sizing, we apply a second-order Taylor series expansion to the log utility function around $mathbf{f} = mathbf{0}$. For typical sports betting edges ($ ext{EV} in [0.01, 0.08]$), the optimal stake fractions $f_i$ are small. Expanding $ln(1 + x) approx x - rac{1}{2}x^2$ yields:

$$G(mathbf{f}) approx mathbb{E}left[ mathbf{f}^T mathbf{R} - rac{1}{2} (mathbf{f}^T mathbf{R})^2 ight] = mathbf{f}^T oldsymbol{mu} - rac{1}{2} mathbf{f}^T oldsymbol{Sigma} mathbf{f}$$

Where $oldsymbol{mu} = mathbb{E}[mathbf{R}]$ is the vector of expected returns ($mu_i = p_i O_i - 1 = ext{EV}_i$), and $oldsymbol{Sigma} = mathbb{E}[mathbf{R} mathbf{R}^T]$ is the second-moment matrix of returns. Setting the gradient of this quadratic approximation to zero produces the continuous unconstrained multivariate Kelly formula:

$$mathbf{f}^* approx oldsymbol{Sigma}^{-1} oldsymbol{mu}$$

When the $n$ wagers are mutually independent, the off-diagonal covariance elements vanish, and $oldsymbol{Sigma}$ becomes a diagonal matrix with elements $sigma_i^2 approx O_i - 1$. Under this diagonal independence assumption, the unconstrained optimal fraction for each bet simplifies to:

$$f_i^* approx rac{mu_i}{sigma_i^2} approx rac{p_i O_i - 1}{O_i - 1} = ext{Scalar Kelly Fraction}$$

This reveals a crucial mathematical truth: when betting opportunities are independent, unconstrained simultaneous Kelly sizing matches individual scalar Kelly sizing. However, this equality holds only if the sum of all scalar allocations does not violate the portfolio budget constraint.

The Bankroll Constraint and Proportional Scaling

When the budget constraint $sum_{i=1}^n f_i le B_{max}$ is binding (where $B_{max} le 1.0$ is the maximum aggregate bankroll allocation allowed per round), the Lagrangian formulation is:

$$mathcal{L}(mathbf{f}, lambda) = mathbf{f}^T oldsymbol{mu} - rac{1}{2} mathbf{f}^T oldsymbol{Sigma} mathbf{f} - lambda left(sum_{i=1}^n f_i - B_{max} ight)$$

Taking partial derivatives and solving for the optimal constrained allocation shows that the optimal simultaneous fractions are strictly scaled down. In quantitative practice, professional syndicates apply the Proportional Scaling Heuristic:

$$f_i^{ ext{scaled}} = f_i^* cdot minleft(1, rac{B_{max}}{sum_{j=1}^n f_j^*} ight)$$

Where institutional risk departments typically mandate $B_{max} in [0.15, 0.30]$ to guarantee that no single match slate can induce an unrecoverable portfolio drawdown.

4. Correlated Simultaneous Bets: Constructing the Covariance Matrix

The most dangerous pitfall in sports portfolio management occurs when simultaneous wagers exhibit non-zero statistical correlation. In association football, basketball, and American football, multiple markets within the same fixture are profoundly interdependent.

When correlation exists, the return covariance matrix $oldsymbol{Sigma}$ contains non-zero off-diagonal elements $ ext{Cov}(R_i, R_j) = ho_{ij} sigma_i sigma_j$. The multivariate quadratic objective reveals how covariance penalizes allocation:

$$G(mathbf{f}) approx sum_{i=1}^n f_i mu_i - rac{1}{2} sum_{i=1}^n f_i^2 sigma_i^2 - sum_{i=1}^n sum_{j > i}^n f_i f_j ext{Cov}(R_i, R_j)$$

If two concurrent wagers have positive correlation ($ ho_{ij} > 0$), their joint holding increases total portfolio variance, which strictly reduces the optimal fraction allocated to both bets. Conversely, if two wagers exhibit negative correlation ($ ho_{ij} < 0$), they serve as a natural stochastic hedge, enabling larger combined capital deployment without increasing overall tail risk.

Example: The Bivariate Correlated Kelly Matrix

Consider two simultaneous wagers with expected edges $mu_1, mu_2$, variances $sigma_1^2, sigma_2^2$, and correlation coefficient $ ho$. The covariance matrix is:

$$oldsymbol{Sigma} = egin{pmatrix} sigma_1^2 & ho sigma_1 sigma_2 \ ho sigma_1 sigma_2 & sigma_2^2 end{pmatrix}$$

Inverting this $2 imes 2$ matrix analytically gives the exact unconstrained bivariate Kelly allocations:

$$f_1^* = rac{mu_1 sigma_2 - ho mu_2 sigma_1}{sigma_1 sigma_2^2 (1 - ho^2)}, qquad f_2^* = rac{mu_2 sigma_1 - ho mu_1 sigma_2}{sigma_1^2 sigma_2 (1 - ho^2)}$$

If Bet 1 and Bet 2 have identical odds and edges ($mu_1 = mu_2 = mu, sigma_1 = sigma_2 = sigma$), the simultaneous allocation reduces to:

$$f_1^* = f_2^* = rac{mu}{sigma^2 (1 + ho)}$$

If the bets are perfectly independent ($ ho = 0$), each receives the standard scalar fraction $f^* = mu / sigma^2$. If the bets are strongly correlated ($ ho = +0.50$), the optimal fraction for each wager drops by 33.3% ($1 / 1.50 = 0.67$). Naively staking full scalar Kelly on both wagers would result in catastrophic over-exposure to a shared latent failure mode.

5. Constrained Quadratic Optimization & The Kuhn-Tucker Conditions

In full-scale institutional operations, sports betting portfolios feature dozens of concurrent assets subject to hard operational constraints: maximum exposure limits per bookmaker, liquidity caps per market, zero-borrowing constraints, and non-negativity constraints ($f_i ge 0$). The full mathematical problem is formulated as a Constrained Convex Optimization Program:

$$min_{mathbf{f}} left{ rac{1}{2} mathbf{f}^T oldsymbol{Sigma} mathbf{f} - oldsymbol{mu}^T mathbf{f} ight} quad ext{subject to} quad sum_{i=1}^n f_i le B_{max}, quad f_i ge 0$$

The necessary and sufficient Karush-Kuhn-Tucker (KKT) optimality conditions require the existence of dual Lagrange multiplier vectors $oldsymbol{lambda}^* ge mathbf{0}$ such that:

  1. Stationarity: $oldsymbol{Sigma} mathbf{f}^* - oldsymbol{mu} + mathbf{A}^T oldsymbol{lambda}^* = mathbf{0}$
  2. Primal Feasibility: $mathbf{A} mathbf{f}^* le mathbf{b}$
  3. Dual Feasibility: $oldsymbol{lambda}^* ge mathbf{0}$
  4. Complementary Slackness: $lambda_j^* (mathbf{A}_j mathbf{f}^* - b_j) = 0 quad orall j$

Because $oldsymbol{Sigma}$ is symmetric and positive semi-definite, standard interior-point algorithms or Sequential Least Squares Programming (SLSQP) converge to the exact machine-precision optimum in polynomial time, typically executing in under five milliseconds for portfolios of up to 100 simultaneous selections.

6. Practical Numerical Example: 5-Bet Saturday Portfolio

To demonstrate the real-world impact of simultaneous Kelly optimization versus naive scalar sizing, let us analyze a realistic Saturday slate consisting of five concurrent fixtures evaluated by a quantitative betting desk. The initial bankroll is $W_0 = $100,000$.

Bet ID Fixture / Market Quoted Odds ($O$) True Prob ($p$) Edge ($ ext{EV}$) Scalar Kelly ($f^*$) Scalar Stake
Bet 1 Arsenal ML (Home Win) 1.95 55.0% +7.25% 7.63% $7,632
Bet 2 Liverpool -1.5 Asian Hcap 2.25 48.0% +8.00% 6.40% $6,400
Bet 3 Real Madrid Over 2.5 Goals 1.80 60.0% +8.00% 10.00% $10,000
Bet 4 Bayern Munich ML 1.50 71.0% +6.50% 13.00% $13,000
Bet 5 Inter Milan Draw No Bet 1.75 62.0% +8.50% 11.33% $11,333

Analyzing the aggregate scalar recommendation reveals an extreme tail-risk hazard:

  • Total Naive Scalar Sizing: $sum f_i^* = 7.63% + 6.40% + 10.00% + 13.00% + 11.33% = mathbf{48.36%}$. The bettor is advised to risk nearly half their entire liquid net worth on five football games taking place across a single two-hour window.
  • Multivariate Solution with Conservative Ceiling ($B_{max} = 20%$): Applying the constrained simultaneous Kelly model scales each position proportionally down by a factor of $kappa = 0.20 / 0.4836 = 0.4136$:
    • Bet 1: $3.16%$ ($$3,156$)
    • Bet 2: $2.65%$ ($$2,647$)
    • Bet 3: $4.14%$ ($$4,136$)
    • Bet 4: $5.38%$ ($$5,376$)
    • Bet 5: $4.69%$ ($$4,687$)
    Total Capital at Risk: Exactly 20.00% ($20,000). The expected compound geometric growth rate is preserved at 82% of unconstrained theoretical maximum, while the 95th percentile portfolio drawdown is compressed by nearly 60%.

7. Python Implementation: Solving Multivariate Kelly via SciPy

Below is a production-grade Python implementation of the Simultaneous Kelly portfolio optimizer. The script constructs the joint state probability distribution, builds the non-linear log-growth objective, and solves the constrained optimization problem using scipy.optimize.minimize.

# simultaneous_kelly_optimizer.py
import numpy as np
from scipy.optimize import minimize

def solve_simultaneous_kelly(odds, true_probs, max_bankroll_fraction=0.25):
    # Optimizes bet allocations for concurrent independent sports bets.
    # Parameters:
    # odds: Decimal odds quoted by sportsbooks [O_1, O_2, ..., O_n]
    # true_probs: Estimated true win probabilities [p_1, p_2, ..., p_n]
    # max_bankroll_fraction: Maximum total bankroll allowed across all bets
    # Returns:
    # dict: Optimal allocation fractions, expected growth rate, total risk fraction
    odds = np.array(odds, dtype=np.float64)
    probs = np.array(true_probs, dtype=np.float64)
    n = len(odds)
    
    # Generate all 2^n joint binary outcome states (0=loss, 1=win)
    num_states = 1 << n
    states = np.zeros((num_states, n), dtype=np.float64)
    state_probs = np.zeros(num_states, dtype=np.float64)
    
    for k in range(num_states):
        p_k = 1.0
        for i in range(n):
            bit = (k >> i) & 1
            states[k, i] = bit
            p_k *= probs[i] if bit == 1 else (1.0 - probs[i])
        state_probs[k] = p_k
        
    # Precompute return matrices: R[k, i] = odds[i] - 1 if win else -1
    net_returns = np.zeros((num_states, n), dtype=np.float64)
    for i in range(n):
        net_returns[:, i] = np.where(states[:, i] == 1, odds[i] - 1.0, -1.0)
        
    # Objective function: Negative Expected Log Wealth Growth
    def neg_log_growth(f):
        # Wealth multiplier in each state: g_k = 1 + sum(f_i * R_k,i)
        portfolio_returns = 1.0 + np.dot(net_returns, f)
        if np.any(portfolio_returns <= 1e-8):
            return 1e8
        return -np.sum(state_probs * np.log(portfolio_returns))
        
    # Constraints & Bounds
    budget_constraint = {'type': 'ineq', 'fun': lambda f: max_bankroll_fraction - np.sum(f)}
    bounds = [(0.0, max_bankroll_fraction) for _ in range(n)]
    
    b = odds - 1.0
    scalar_kelly = np.maximum(0.0, (b * probs - (1.0 - probs)) / b)
    initial_f = scalar_kelly * min(1.0, max_bankroll_fraction / (np.sum(scalar_kelly) + 1e-8))
    
    result = minimize(
        neg_log_growth,
        initial_f,
        method='SLSQP',
        bounds=bounds,
        constraints=[budget_constraint],
        options={'ftol': 1e-9, 'maxiter': 500}
    )
    
    optimal_fractions = np.maximum(0.0, result.x)
    exp_growth_rate = -result.fun
    
    return {
        'optimal_fractions': optimal_fractions,
        'total_allocation': np.sum(optimal_fractions),
        'expected_growth_rate_per_round': exp_growth_rate,
        'success': result.success
    }

8. Risk Management: Drawdown Expectations and Portfolio Fractional Kelly

Even with rigorous multivariate optimization, Full Simultaneous Kelly carries significant psychological and practical friction. In real-world sports trading environments, several operational realities require introducing additional safety buffers:

  1. Model Parameter Uncertainty: True win probabilities $p_i$ are never known with infinite precision. If a machine learning model estimates $p = 55%$ with a 95% confidence interval of $[51%, 59%]$, sizing at Full Kelly risks devastating over-staking if the true edge lies in the lower quartile.
  2. Variance of the Geometric Mean: While Full Kelly maximizes the expected value of $ln(W)$, it induces immense path-dependent volatility. The probability of experiencing a 50% drawdown before doubling one's bankroll under Full Kelly is exactly 50.0%.
  3. Execution Liquidity Squeezes: Bookmaker stake limits may restrict an analyst from deploying the exact theoretical fraction, forcing non-uniform portfolio distortions.
The Institutional Solution: Portfolio Fractional Kelly To eliminate tail-risk ruin and insulate against estimation noise, professional quantitative desks implement Half-Kelly ($f^* / 2$) or Quarter-Kelly ($f^* / 4$) across the entire simultaneous vector: $$mathbf{f}_{ ext{fractional}} = gamma cdot mathbf{f}^*, quad gamma in [0.25, 0.50]$$ By setting $gamma = 0.50$, the investor captures 75.0% of the maximum theoretical compound growth rate while slashing portfolio variance by an extraordinary 75.0%. The probability of a 50% peak-to-trough drawdown plummets from 50% down to a negligible 1.56%.

9. Frequently Asked Questions

Frequently Asked Questions

RELATED RESEARCH

Cross-Referenced Studies

18+ RISK NOTICE