← Back to blog

Parlay Math: Payout, Break-Even Rate and Expected Value

By ZenHodl. Dataset documentation, research and model evaluations are linked in the article. A separate filtered ledger of bot-attributed trades, including losses and its admission rules, is public at /results.

A parlay combines selections into one ticket. Under the simple model below, every leg must win, and the offered decimal payout is the product of the leg payouts. Actual sportsbook terms can change the payout for correlated selections, voids or special promotions; use the ticket’s offered payout when evaluating it.

These examples assume independent, hypothetical 50/50 events at −110, with no additional costs. They are arithmetic, not a study of bettors or a recommendation to trade.

Payout and gross break-even rate

−110 converts exactly to decimal odds 1 + 100 / 110 = 21 / 11. Avoid rounding each leg to 1.91 before multiplying.

Combined decimal payout D = product of offered leg decimals
Gross break-even ticket probability = 1 / D
Net expected profit per $1 stake = P(all legs win) × D − 1

For independent events, P(all win) is the product of their true probabilities. If they are correlated, that product is generally wrong: you need their joint probability.

Fair coin examples at −110

Legs Decimal payout Gross break-even probability Assumed true win probability Expected loss as % of stake
1 1.90909 52.38095% 50.00000% 4.54545%
3 6.95793 14.37210% 12.50000% 13.02592%
4 13.28331 7.52824% 6.25000% 16.97929%

A four-leg $100 ticket therefore has an expected total return of about $83.02 and expected net loss of $16.98. The 1.28-percentage-point difference between ticket break-even and true probability is not itself the expected loss percentage.

If you instead split the same $100 into four $25 single bets under these assumptions, expected loss is $4.55 in total, or 4.55% of the total stake. You do not add four percentage losses and label the sum a percentage of that combined stake. The individual positions and the parlay have different payout distributions.

The per-leg threshold does not rise merely by adding identical legs

For independent legs with the same true probability p and decimal payout d, ticket expectation is nonnegative when (p × d)^n >= 1. Thus the gross per-leg break-even rate is p = 1 / d, or 52.38095% at −110, for any number of identical legs.

Adding legs reduces the chance the entire ticket wins and changes variance. It does not turn the identical-leg threshold into 54% or 55%. A claimed 55% picker still needs evidence of that true rate on the selected population and independence assumptions; headline accuracy does not establish it.

When positive expected value is possible

Evaluate the joint win probability against the actual offered payout. A promotion changes the payout, not the underlying event probability. Read stake caps, eligible markets, payout definitions and withdrawal terms; a boost is not automatically positive expected value.

Correlation can increase or decrease the joint probability relative to the independence product. That does not show the bookmaker has underpriced it. For independent legs with correctly known individual expected-return multipliers, those multipliers combine under this product-payout model. An estimated probability remains an uncertain input.

Holding several single contracts is not mathematically equivalent to a parlay. Singles can pay when only some positions win; the parlay may pay only when all win. Exchange contracts also have spreads, fees and fill limitations. Do not assume “price equals true probability” or a cost-free way to obtain parlay exposure.

Python for the independent-leg model

The following snippet uses supplied probabilities and payout decimals. It assumes valid inputs and independent legs; it does not fit probabilities, model correlation or verify a live ticket.

def parlay_decimal(leg_decimals):
    result = 1.0
    for d in leg_decimals:
        result *= d
    return result

def parlay_implied_prob(leg_decimals):
    return 1 / parlay_decimal(leg_decimals)

def parlay_ev(leg_decimals, true_probs, stake=100):
    combined = parlay_decimal(leg_decimals)
    win_prob = 1.0
    for p in true_probs:
        win_prob *= p
    expected_return = win_prob * stake * combined
    return expected_return - stake

def parlay_breakeven_per_leg(leg_decimals):
    combined = parlay_decimal(leg_decimals)
    return (1 / combined) ** (1 / len(leg_decimals))

The parlay calculator helps inspect the arithmetic. Use the odds converter to keep payout and probability units consistent, and the Kelly formula guide for sizing assumptions.

Related reading

Get ZenHodl Weekly

Dataset releases, research notes, and public results, including corrections.

Research and dataset updates from ZenHodl.

Want the data behind this post?

Historical sports prediction-market datasets with measured coverage, documented schemas, and disclosed gaps.