Arbitrage calculator

Arbitrage calculator for two- and three-way markets: enter each side’s best odds and a stake to see if it is an arb, the stake per leg and the profit.

Check whether the best prices on each side make an arb, and split a stake across the legs.

The calculator runs in your browser with JavaScript; the formulas it uses are explained below.

An arbitrage calculator checks whether the best prices on every outcome of a market, taken at different books, add up to less than 100% implied probability. If they do, staking each side in the right proportion returns the same payout whichever outcome wins, and that payout is larger than the total staked. It handles two-way markets such as totals and three-way soccer moneylines: enter each side's best odds and a total stake, and it returns the stake for each leg and the profit.

How to use the arbitrage calculator

The inputs:

The outputs:

Sizing the legs is most of the work, which is why the tool is also called an arbitrage stake calculator, or an arb calculator for short.

Some bettors call this tool an arbitrage betting calculator, but no arb is a guaranteed profit in practice: prices move between legs, and books void bets or limit accounts.

The formulas

Convert every price to decimal odds d_i. Then:

S        = Σ 1 / d_i                 (combined implied probability)
arb if     S < 1
margin   = 1 / S − 1                 (return on the total stake)
stake_i  = total × (1 / d_i) / S
payout   = total / S                 (the same whichever leg wins)
profit   = payout − total

Each leg's stake is proportional to its implied probability, so every leg pays the same amount. A two-way market has two terms in S and a three-way market has three; nothing else changes.

Rounding the stakes

Rounding stakes to whole units pulls the payouts slightly apart, so check that every leg still returns more than the total staked.

Worked example: a two-way total

An NBA game total of 221.5. Book A has Over 221.5 at +110 (decimal 2.10); Book B has Under 221.5 at -102 (decimal 1.980).

Rounded to $485 and $515, the over pays $1,018.50 and the under $1,019.90, both still above the $1,000 staked.

Worked example: a three-way soccer moneyline

A soccer match settled on the 90-minute result: home at 2.45 (+145) at Book A, the draw at 3.60 (+260) at Book B and away at 3.30 (+230) at Book C. With $500 in the arbitrage calculator:

LegOddsImpliedStakePayout
Home2.4540.82%$206.36$505.58
Draw3.6027.78%$140.44$505.58
Away3.3030.30%$153.20$505.58

S = 98.90%, a margin of 1.12% and a profit of $5.58. A three-way arb needs all three legs placed; leave out the draw and it is an ordinary bet. Margins this thin leave little room for a price that moves before the last leg is in.

Common mistakes

Finding arbs with the API

There is no /v1/arbitrage endpoint. /v1/best-lines returns the inputs instead: for each market at an identical line, the best price on every outcome across every sportsbook and exchange (DFS apps are left out), the books offering it in best_books, and books_quoting. Request decimal prices and the first step of the arbitrage calculator is a sum:

const res = await fetch(
  'https://api.preciseapi.com/v1/best-lines?league=nba&markets=moneyline,spread,total&format=decimal',
  { headers: { Authorization: `Bearer ${process.env.PRECISEAPI_KEY}` } },
);
const { data } = await res.json();

for (const event of data) {
  for (const m of event.markets) {
    const s = m.outcomes.reduce((sum, o) => sum + 1 / o.best_price, 0);
    if (s < 1) {
      const legs = m.outcomes.map((o) => `${o.name} ${o.point ?? ''} ${o.best_price} @ ${o.best_books.join('/')}`);
      console.log(event.id, m.key, m.period, `margin ${((1 / s - 1) * 100).toFixed(2)}%`, legs.join(' | '));
    }
  }
}

One call costs 3 credits and covers up to 200 events. The arbitrage API page covers the workflow in more depth, and the odds comparison API page explains how prices are matched across books. On the MCP server, find_arbitrage runs the whole check for a league and returns each leg's book, price and stake for a total you choose. Prices move quickly, so check every leg at the book before placing anything.

Frequently asked questions

What is an arbitrage bet?

Backing every outcome of a market at different books, at prices whose combined implied probability is under 100%, so the payout is the same whichever outcome wins and is larger than the total staked.

How much should go on each leg?

The total stake times the leg's implied probability, divided by the combined implied probability. In the two-way example, $1,000 × 0.4762 / 0.9811 = $485.34 on the over.

Can a three-way market be an arb?

Yes. Soccer moneylines have home, draw and away outcomes. The same formula applies with three terms, and every leg has to be placed.

Why do arbs disappear so quickly?

Most come from one book lagging the market, and the gap closes when it updates. Treat every arb as an observation at the moment you saw it. API access for live best lines starts on Edge; see pricing.

More calculators