HomeGames & Betting Math › Arbitrage Betting Calculator

Arbitrage Betting Calculator

Sums the implied probabilities of the best decimal odds available on each outcome of a 2- or 3-way market, tests whether an arbitrage exists (sum below 100 %) and splits a total stake so that every outcome returns the same payout.

When to use

You have the best price for each outcome of a market (from different bookmakers or an exchange) and want to know whether the prices overlap, how to split the stake, and the guaranteed return.

Do not use when: You already hold one bet and want to cover it (use hedge-bet), or the market has more than three outcomes. Mathematics only; not gambling advice: stake limits, voided bets and stake rounding can turn a paper arbitrage into a loss.

Formula

arbitrage_percentage = Σ (100 / odds_i); arbitrage_exists = arbitrage_percentage < 100; stake_i = total_stake × (1/odds_i) / Σ(1/odds); guaranteed_payout = total_stake / Σ(1/odds); guaranteed_profit = guaranteed_payout − total_stake; profit_percent = (100 / arbitrage_percentage − 1) × 100

Dutching arithmetic: stakes proportional to each outcome's implied probability make every outcome pay the same amount. Exchange commission and stake rounding are not modelled. Probability mathematics only; not gambling advice.

Inputs

ParameterTypeUnitRequiredDescription
decimal_oddsnumber_listyesThe best decimal odds available for each outcome of the market (2 outcomes, or 3 for home/draw/away), each greater than 1.
total_stakenumberdefault 1000Total amount to spread across the outcomes (any currency). Range: > 0, ≤ 1000000000

Outputs

OutputTypeUnitDescription
arbitrage_percentagenumber%Σ 100/odds_i: the combined implied probability (market overround from the bettor's side).
arbitrage_existsbooleantrue when the arbitrage percentage is below 100 %.
profit_percentnumber%(100 / arbitrage_percentage − 1) × 100; negative when no arbitrage exists.
stakesnumber_listtotal_stake × (1/odds_i) / Σ(1/odds), in the order of the input odds.
guaranteed_payoutnumberReturn whichever outcome wins: total_stake / Σ(1/odds) (the same for every outcome).
guaranteed_profitnumberguaranteed_payout − total_stake.
implied_probabilities_percentnumber_list%100/odds_i for each outcome.

Example

Two-way 2.10 and 2.05, total 1000: {"decimal_odds":[2.1,2.05],"total_stake":1000}{"arbitrage_percentage":96.4,"arbitrage_exists":true,"profit_percent":3.73,"stakes":[493.98,506.02],"guaranteed_payout":1037.35,"guaranteed_profit":37.35}

Two-way 1.91 and 1.91 (no arbitrage): {"decimal_odds":[1.91,1.91],"total_stake":1000}{"arbitrage_percentage":104.71,"arbitrage_exists":false,"profit_percent":-4.5,"stakes":[500,500],"guaranteed_payout":955,"guaranteed_profit":-45}

GET https://tttkmbb.com/api/v1/calculate/arbitrage-bet?decimal_odds=2.1%2C2.05&total_stake=1000

Machine access

Sources

FAQ

Why do the stakes not add up to a round number per outcome?

They are the exact proportional split; rounding each stake to whole units changes the payouts slightly, so recompute the payout of each outcome (stake × odds) after rounding.

Does this include exchange commission?

No. On a betting exchange reduce the net odds first, e.g. net = 1 + (odds − 1) × (1 − commission), then enter the net decimal odds.

Related calculators