SPORTS BETTING MATH
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
Topic illustration: Simultaneous Kelly Portfolio Optimization: Optimal Allocation for Concurrent Bets
Conceptual illustration. Numerical assumptions and worked examples are explained in the text.

SBM Stochastic Modeling Lab

Editorial byline: match and bankroll models

This topic byline groups articles about Poisson models, Kelly sizing and simulation. It is an editorial label, not evidence of a staffed laboratory or independently verified qualifications.

Bivariate Poisson Match Outcome Modeling Kelly Criterion Geometric Growth Optimization Monte Carlo Risk-of-Ruin Simulation

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∗=b⋅p−qb=p(b+1)−1b=p⋅O−1O−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.

Concurrent positions use the same bankroll before settlement. Independently computed scalar Kelly fractions can sum above one, but this depends on the input probabilities and prices, not a typical number of weekly opportunities. Check aggregate feasibility and joint-state wealth; even fractions that sum below one need not maximize portfolio log growth.

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 fi∗≈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 W0. At decision epoch t, there are n concurrent, mutually non-exclusive betting propositions available. The bettor allocates a fraction vector 𝐟=(f1,f2,…,fn)T of their current wealth, where fi≥0 represents the proportion of total capital committed to proposition i. The remaining unallocated fraction f0=1−∑i=1nfi is held in risk-free cash earning zero return.

Across the n events, there exist M=2n possible joint state outcomes (or 3n if ternary football outcomes are evaluated). Let the set of all mutually exclusive joint states be denoted by Ω={ω1,ω2,…,ωK}, where each state ωk occurs with joint probability pk≥0 such that ∑k=1Kpk=1.

For each joint state ωk, define the gross return vector 𝐑k=(R1,k,R2,k,…,Rn,k)T, where Ri,k represents the net return per unit staked on bet i under state ωk:

Ri,k={bi=Oi−1if bet i wins under state ωk−1if bet i loses under state ωk

Under joint state ωk, the total portfolio wealth multiplier g(𝐟,ωk) is defined as the sum of unallocated capital plus the terminal value of all active wagers:

g(𝐟,ωk)=(1−∑i=1nfi)+∑i=1nfi(1+Ri,k)=1+∑i=1nfiRi,k=1+𝐟T𝐑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(𝐟)=𝔼[ln⁡(W1/W0)]. The objective function is formally stated as:

max𝐟⁡G(𝐟)=∑k=1Kpkln⁡(1+𝐟T𝐑k)

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

∑i=1nfi≤1,andfi≥0∀i∈{1,…,n}

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

1+𝐟T𝐑k>0∀k∈{1,…,K} such that pk>0

The quadratic program below is the second-order approximation with A. Its KKT conditions characterize a solution when the usual constraint qualifications hold. Positive semidefiniteness gives concavity of the approximated growth objective, not a measured execution time or automatic numerical success. The exact objective is concave; strict uniqueness additionally requires the positive-probability return vectors to distinguish feasible directions. Redundant positions can share an optimum.

3. Independent states and the quadratic approximation

Independence makes joint state probabilities factor into their marginals. It does not split the logarithm of total wealth into separate logarithms for each bet. Capital is committed simultaneously, so an exact optimum still solves the joint-state objective. For two independent binary bets with odds 2 and win probability 0.6, scalar Kelly is 0.2 each, but exact simultaneous Kelly is 5/26, about 0.1923076923 each. The losing-losing state has probability 0.16 and wealth multiplier 1-2f; mixed states have multiplier 1, and winning-winning has probability 0.36 and multiplier 1+2f. Differentiating this objective gives the stated optimum.

G(f,f)=0.36ln⁡(1+2f)+0.16ln⁡(1−2f),f∗=5/26

The second-order Taylor expansion uses the second-moment matrix A, not just covariance C. The omitted outer product of mean returns is nonzero whenever edges are nonzero. Even for independent bets, A has off-diagonal entries mu_i mu_j. A diagonal covariance approximation can be useful near small mean returns, but is an additional approximation. Its accuracy depends on all possible portfolio returns being small enough for the logarithmic expansion. The unconstrained stationary point may violate the budget or nonnegative stakes and then must not be used as an allocation.

μ=E[R],C=Cov⁡(R),A=E[RRT]=C+μμT
G(f)≈fTμ−12fTAf,fquad=A−1μ

Proportional scaling preserves ratios of nonnegative scalar fractions and enforces a selected budget. It is a feasible heuristic, not the solution of the constrained exact or quadratic objective in general. A cap such as 0.20 is an illustrative exposure choice, not a universal institutional standard or guarantee about drawdowns. Positions with different odds and probabilities need not shrink by a common optimal factor.

fiscaled=simin⁡(1,B/∑jsj),si=max⁡(0,(piOi−1)/(Oi−1))

4. Covariance, dependence and the matrix inverse

For a fixed nonnegative portfolio, positive covariance increases variance relative to zero covariance. It does not imply that every component of a reoptimized portfolio must decrease. The following inverse solves the unconstrained covariance surrogate C f=mu. It is exact linear algebra for that surrogate, not an exact formula for log-optimal betting. C must be nonsingular; negative results would also conflict with a long-only budget.

C=(σ12ρσ1σ2ρσ1σ2σ22)
fC,1=μ1σ22−ρσ1σ2μ2σ12σ22(1−ρ2),fC,2=μ2σ12−ρσ1σ2μ1σ12σ22(1−ρ2)

With C=[[4,0.6],[0.6,1]] and mu=(0.4,0.2), the determinant is 3.64 and the solution is(0.0769230769,0.1538461538). Multiplying C by this vector recovers mu. Equal means and variances give mu/(sigma²(1+rho)) in this covariance surrogate, so rho 0.5 reduces this particular approximation by one third. That percentage is not universal for the exact joint-state problem.

For an illustrative correlated binary pair O1=1.90,p1=0.55,O2=2.05,p2=0.52,p12=0.35, the four state probabilities are 0.35,0.20,0.17,0.28. Covariance is 0.24928 and correlation about 0.25750. Neither number determines a universal percentage reduction of stakes. A valid joint distribution is required; a covariance matrix alone does not specify all log-growth states.

Cov⁡(R1,R2)=O1O2(p12−p1p2)=0.24928

5. Constraints and numerical acceptance

minf≥0, ∑fi≤B⁡{12fTAf−μTf}

The code evaluates the exact independent binary joint-state objective rather than this quadratic program. State count grows as 2^n, so the educational example accepts at most 12 bets. A cap below 1 keeps wealth positive in every enumerated state. Input finiteness, optimizer success, nonnegative stakes and the returned budget are checked before a result is exposed. Same-match correlations, pushes, half-wins, commissions and voids need an explicitly extended joint-state model.

6. Practical Numerical Example: 5-Bet Saturday Portfolio

The five rows below are hypothetical independent binary wins, including Inter to win outright, not DNB. Their probabilities are assumptions, not measured forecasts. Their scalar fractions sum to 0.4836491228. The selected cap is 0.20. The two vectors below use full input precision before display rounding; expected growth is expected log wealth per round, not a realized ROI or drawdown prediction.

Bet ID Fixture / Market Quoted Odds (O) True Prob (p) Edge (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 win (binary) 1.75 62.0% +8.50% 11.33% $11,333

Scaling and exact optimization give different vectors. For the specified independent distribution, scaled growth is 0.0120732581703 and optimized growth is 0.0121349525481. The objective gap is small but disproves the claim that proportional scaling is an exact optimum. No 82% growth retention or 60% drawdown reduction is established. Different dependence or probability inputs require recalculation.

fscaled=(0.03155833,0.02646547,0.04135229,0.05375798,0.04686593)
fexact=(0.02944142,0.02809425,0.04485731,0.04272208,0.05488495)

7. Python Implementation: Solving Multivariate Kelly via SciPy

Below is a illustrative 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.

import numpy as np
from scipy.optimize import minimize

def solve_simultaneous_kelly(odds, true_probs, max_bankroll_fraction=0.25):
    """Illustrative exact state objective for at most 12 independent binary bets."""
    odds = np.asarray(odds, dtype=float)
    probs = np.asarray(true_probs, dtype=float)
    cap = float(max_bankroll_fraction)
    if (odds.ndim != 1 or probs.shape != odds.shape or not 1 <= odds.size <= 12
            or not np.all(np.isfinite(odds)) or np.any(odds <= 1)
            or not np.all(np.isfinite(probs)) or np.any((probs < 0) | (probs > 1))
            or not np.isfinite(cap) or not 0 <= cap < 1):
        raise ValueError("Require 1..12 binary bets, finite odds>1, p in [0,1], cap in [0,1).")
    n = odds.size
    states = ((np.arange(1 << n)[:, None] >> np.arange(n)) & 1).astype(float)
    weights = np.prod(np.where(states == 1, probs, 1-probs), axis=1)
    returns = states * odds - 1
    def loss(f):
        wealth = 1 + returns @ f
        if np.any(wealth <= 0):
            return np.inf
        return -float(weights @ np.log(wealth))
    def gradient(f):
        return -(weights / (1 + returns @ f)) @ returns
    scalar = np.maximum(0, (probs * odds - 1) / (odds - 1))
    total = scalar.sum()
    initial = scalar * min(1, cap / total) if total else scalar
    if cap == 0:
        return {"optimal_fractions": np.zeros(n), "total_allocation": 0.0,
                "expected_growth_rate_per_round": 0.0, "success": True}
    result = minimize(loss, initial, jac=gradient, method="SLSQP",
                      bounds=[(0, cap)] * n,
                      constraints=[{"type": "ineq", "fun": lambda f: cap-f.sum(),
                                    "jac": lambda f: -np.ones(n)}],
                      options={"ftol": 1e-13, "maxiter": 1000})
    if not result.success:
        raise RuntimeError("Optimizer did not converge.")
    f = np.asarray(result.x)
    if (not result.success or not np.all(np.isfinite(f))
            or np.min(f) < -1e-10 or f.sum() > cap + 1e-10
            or np.any(1 + returns @ f <= 0) or not np.isfinite(loss(f))):
        raise RuntimeError("Optimizer failed or returned an infeasible allocation.")
    return {"optimal_fractions": f, "total_allocation": float(f.sum()),
            "expected_growth_rate_per_round": -loss(f), "success": True}

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 pi 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. Full Kelly maximizes expected log growth under a specified model, but drawdown probabilities require a barrier definition, horizon and return process. There is no universal exact 50% probability of a50% drawdown before doubling.
  3. Execution Liquidity Squeezes: Bookmaker stake limits may restrict an analyst from deploying the exact theoretical fraction, forcing non-uniform portfolio distortions.

Repeated-round growth results require a stable specified distribution and integrable log returns. They do not establish dominance for every path or a unique vector when return directions are redundant. Half/Quarter growth ratios depend on the distribution;75%/43.75% arise only in a quadratic expansion around an interior optimum. Drawdown probabilities also require a horizon and a defined barrier or peak metric. The implementation does not compute them.

9. Frequently Asked Questions

Frequently Asked Questions

RELATED RESEARCH

Cross-Referenced Studies

Compare the same market

Partner links

1win Sports: check the event, quoted odds and settlement rules

What the price includes → Visit 1win Sports 18+ · Terms on site

Stake Sportsbook: compare the same event, market and settlement rules

What the price includes → Visit Stake 18+ · Terms on site

Check the current price, exact market, settlement rules and availability in your country. A calculator result depends on its assumptions and does not verify a live betting opportunity.