# How to Remove the Bookmaker Margin: Devig Methods Compared
URL: https://sockodds.com/blog/remove-bookmaker-margin-devig-methods/

> Calculate a bookmaker's overround from decimal odds, then strip it out with the multiplicative, additive, power and Shin methods, with worked examples.

[Odds API](https://sockodds.com/blog/category/odds-api/) · 6 October 2026

# How to Remove the Bookmaker Margin: Devig Methods Compared

Calculate a bookmaker's overround from decimal odds, then strip it out with the multiplicative, additive, power and Shin methods, with worked examples.

To remove the bookmaker margin, convert every outcome's decimal odds to an implied probability (1 divided by the odds), add them up to get the book, then scale those probabilities back so they sum to exactly 100%. The fair odds are 1 divided by each rescaled probability. That rescaling step is where methods differ: the **multiplicative** method shrinks every outcome by the same proportion, while the **additive**, **power** and **Shin** methods take more of the margin off longshots. On a close two-way market the choice barely matters. On a six-runner market it can move a longshot's fair price from 42 to 89.

This guide works through the maths in decimal odds, shows where each method breaks, and maps it onto the fields an odds API returns.

## Step 1: measure the book

A bookmaker's prices for every outcome of a market, turned into probabilities, add up to more than 100%. The amount above 100% is the overround, also called the vig or juice ([Wikipedia: Mathematics of bookmaking](https://en.wikipedia.org/wiki/Mathematics_of_bookmaking)).

Take an illustrative AFL head-to-head market priced at 1.40 for the home side and 3.00 for the away side:

| Outcome | Decimal odds | Implied probability (1 ÷ odds) |
| --- | --- | --- |
| Home | 1.40 | 71.43% |
| Away | 3.00 | 33.33% |
| **Book** |  | **104.76%** |

Two numbers come out of that total, and they are often confused:

- **Overround** is the book minus 100%: here 4.76%.
- **Margin** is the share of all stakes the bookmaker keeps if money comes in exactly in proportion to the prices: 1 minus (1 ÷ 1.0476), which is 4.55%.

Report one and label it. A dashboard that mixes the two will disagree with itself by a few tenths of a percent on every market.

### Margins compound in multis

Each leg of a multi carries its own book, and the books multiply. Wikipedia's worked example takes two tennis matches, each priced at a 109.09% book, and shows the double carrying an overround of about 19.01% ([Wikipedia: Mathematics of bookmaking](https://en.wikipedia.org/wiki/Mathematics_of_bookmaking)). If you build a multi or same game multi pricer, devig each leg first, then combine the fair probabilities. Taking the margin off the combined price instead gives a different and less defensible number.

## Step 2: pick a devig method

Every method takes the implied probabilities and returns a set that sums to exactly 1. They differ in *who pays* for the margin. The R package *implied* documents eight of them with formulas ([CRAN: implied](https://cran.r-project.org/web/packages/implied/vignettes/introduction.html)). These four cover most production use.

### Multiplicative (also called basic, proportional or normalisation)

Divide each implied probability by the book. Every outcome is shrunk by the same proportion, so a favourite gives up more percentage points than a longshot.

- **Pros:** one line of arithmetic, always stays between 0 and 1, easy to explain.
- **Cons:** ignores the favourite-longshot bias, the long-observed pattern where longshots are overbet and favourites underbet ([Wikipedia: Favourite-longshot bias](https://en.wikipedia.org/wiki/Favourite-longshot_bias)). The *implied* documentation describes the basic method as the most common and generally the least accurate ([CRAN: implied](https://cran.r-project.org/web/packages/implied/vignettes/introduction.html)).

### Additive

Subtract the same amount, (book minus 1) divided by the number of outcomes, from every implied probability.

- **Pros:** takes proportionally more off longshots, which leans toward the favourite-longshot bias.
- **Cons:** can produce negative probabilities when a market has many outcomes and the longshots are priced long ([CRAN: implied](https://cran.r-project.org/web/packages/implied/vignettes/introduction.html)).

### Power

Raise every implied probability to the same power k, and search for the k that makes them sum to 1. Because k is above 1 whenever the book is over 100%, small probabilities shrink faster than large ones.

- **Pros:** always stays between 0 and 1, handles any number of outcomes, solved with a simple numeric search.
- **Cons:** can overcorrect longshots while moving mid-priced outcomes less than Shin does ([Outlier: comparing devig methods](https://help.outlier.bet/en/articles/8208129-how-to-devig-odds-comparing-the-methods)).

### Shin

Shin's model assumes a share of the money comes from bettors with inside information and that the bookmaker prices defensively against them. You solve iteratively for that share, called z, and the fair probabilities fall out. On a market with only two outcomes it gives the same answer as the additive method ([CRAN: implied](https://cran.r-project.org/web/packages/implied/vignettes/introduction.html)).

- **Pros:** the strongest published evidence. Štrumbelj found probabilities from Shin's model were more accurate forecasts than basic normalisation or regression models, across several team sports ([International Journal of Forecasting, 2014](https://doi.org/10.1016/j.ijforecast.2014.02.008)).
- **Cons:** needs an iterative solve, and z is a model parameter, not something the bookmaker publishes.

## Worked example: a two-way market

Same illustrative prices, 1.40 and 3.00, run through all four methods:

| Method | Home fair probability | Home fair odds | Away fair probability | Away fair odds |
| --- | --- | --- | --- | --- |
| Multiplicative | 68.18% | 1.47 | 31.82% | 3.14 |
| Additive | 69.05% | 1.45 | 30.95% | 3.23 |
| Power (k = 1.081) | 69.51% | 1.44 | 30.49% | 3.28 |
| Shin (z = 0.048) | 69.05% | 1.45 | 30.95% | 3.23 |

The spread on the outsider runs from 3.14 to 3.28. That is enough to change whether a bookmaker's 3.20 looks above or below fair. If your tool flags prices against a fair line, the method is part of the result and belongs in your output next to it.

## Worked example: a six-runner market

Multi-runner markets show the real differences. Here is an illustrative six-runner market with a 123.12% book, chosen to make the gaps visible:

| Decimal odds | Implied | Multiplicative | Additive | Power (k = 1.164) | Shin (z = 0.052) |
| --- | --- | --- | --- | --- | --- |
| 2.20 | 45.45% | 2.71 | 2.40 | 2.50 | 2.54 |
| 3.00 | 33.33% | 3.69 | 3.39 | 3.59 | 3.54 |
| 4.50 | 22.22% | 5.54 | 5.44 | 5.76 | 5.55 |
| 8.00 | 12.50% | 9.85 | 11.56 | 11.24 | 10.92 |
| 15.00 | 6.67% | 18.47 | 35.54 | 23.36 | 24.88 |
| 34.00 | 2.94% | 41.86 | negative | 60.55 | 88.77 |

Three things to take from it:

1. **Multiplicative is kindest to longshots.** It leaves the 34.00 runner at a fair 41.86, because it takes the same proportion off everyone.
2. **Additive breaks.** The equal share it subtracts (3.85 percentage points) is bigger than the longshot's whole 2.94%, so the probability goes to minus 0.91%. Any code using it on wide markets needs a guard.
3. **Shin and power disagree most at the tail.** Both move the favourite in, but Shin pushes the 34.00 runner out to almost 89.

None of these is the "true" price. They are different assumptions about where the bookmaker loaded its margin. Test them against outcomes before trusting one, which is what [historical odds data](https://sockodds.com/use-cases/historical-odds-data-api/) is for.

## Doing it against an odds API

Devigging needs every outcome of the market at the same moment. Three practical rules:

- **Fetch both sides together.** In the SockOdds API each odd carries an *opposingOddID*, and *includeOpposingOdds=true* returns the other side in the same response when you filter by oddID ([SockOdds docs: Odds](https://sockodds.com/docs/data-types/odds/)).
- **Use the decimal field.** Per-bookmaker entries in *byBookmaker* return the American *odds* string and a *decimal* value, so you can sum 1 ÷ decimal directly without converting ([SockOdds docs: Odds](https://sockodds.com/docs/data-types/odds/)).
- **Devig one bookmaker at a time.** Mixing the best price from different books into one market can push the book below 100%, and then no method gives a sensible answer.

### What fairOdds already does

If you would rather not build this pipeline, the API's *fairOdds* field is the margin-free price. It is derived from the Betfair Exchange, Pinnacle, ProphetX, Kalshi and Polymarket where they price a market, using the multiplicative method: each side is converted to implied probability and normalised to sum to one. It is never estimated from soft-book prices alone, so it is null when those sources do not price the market ([SockOdds docs: Consensus odds](https://sockodds.com/docs/info/consensus-odds/)). Check *fairOddsAvailable* before using it.

That gives you a clean split: use *fairOdds* as the reference, and run your own power or Shin devig on individual bookmakers in *byBookmaker* when you want a second opinion on multi-runner or longshot-heavy markets. Our post on [how consensus odds are calculated](https://sockodds.com/blog/consensus-odds-calculation/) covers the fields in more detail, and the [positive EV use case](https://sockodds.com/use-cases/positive-ev-betting-api/) shows how fair prices are compared with bookmaker prices.

## Which method to use

| Situation | Reasonable default | Why |
| --- | --- | --- |
| Two-way, prices near even | Multiplicative | Methods barely differ, simplest wins |
| Two-way with a clear favourite | Shin (equals additive here) | Accounts for the favourite-longshot bias |
| Three-way markets | Shin or power | Stay inside 0 to 1, adjust the draw and outsider |
| Many runners, long tail | Power or Shin, never additive | Additive can go negative |
| Benchmark you must explain to users | Multiplicative | Transparent, and matches *fairOdds* |

Whichever you pick, store the method and its parameter (k or z) alongside the fair price. A fair probability without its method cannot be reproduced or audited later.

## Try it on live markets

Get a free Developer key and pull both sides of a market in the [API Explorer](https://sockodds.com/docs/explorer/), then compare your own devig with *fairOdds*. Plans with more bookmakers and history are on the [pricing page](https://sockodds.com/pricing/).

Fair odds are estimates of probability, not predictions of profit. 18+ only. Please gamble responsibly.

## Frequently asked questions

### How do I calculate a bookmaker's margin from decimal odds?

Take 1 divided by the decimal odds for every outcome in the market and add them up. That total is the book. Anything over 100% is the overround: a two-way market at 1.40 and 3.00 sums to 104.76%, an overround of 4.76%.

### What is the difference between overround and margin?

Overround is how far the book sits above 100%. Margin is the share of total stakes the bookmaker keeps on a balanced book, which is 1 minus 1 divided by the book. A 104.76% book is a 4.76% overround and a 4.55% margin.

### Which devig method is the most accurate?

No single method wins everywhere. Published research found Shin's method gave more accurate probabilities than basic normalisation across several team sports, but the multiplicative method remains the most common baseline because it is simple and always stays between 0 and 1.

### Why does the additive method give negative probabilities?

It subtracts the same amount from every outcome. In a market with many runners and a big overround, a longshot's implied probability can be smaller than that equal share, so it goes below zero.

### Do the devig methods give different answers on a two-way market?

Only slightly when prices are close to even, and more as the favourite shortens. On a two-outcome market the additive and Shin methods give the same result.

### Does the SockOdds API return odds with the margin removed?

Yes, where exchange and sharp-book sources price the market. The fairOdds field is normalised so the sides sum to one, and it is null when those sources do not price the market. Per-bookmaker prices keep their margin.

## Sources

- [Wikipedia: Mathematics of bookmaking](https://en.wikipedia.org/wiki/Mathematics_of_bookmaking)
- [Wikipedia: Favourite-longshot bias](https://en.wikipedia.org/wiki/Favourite-longshot_bias)
- [CRAN: implied package, introduction vignette](https://cran.r-project.org/web/packages/implied/vignettes/introduction.html)
- [International Journal of Forecasting: On determining probability forecasts from betting odds (Štrumbelj, 2014)](https://doi.org/10.1016/j.ijforecast.2014.02.008)
- [Outlier: How to devig odds, comparing the methods](https://help.outlier.bet/en/articles/8208129-how-to-devig-odds-comparing-the-methods)
- [SockOdds docs: Odds data type](https://sockodds.com/docs/data-types/odds/)
- [SockOdds docs: Consensus odds](https://sockodds.com/docs/info/consensus-odds/)

**Read more:** [SockOdds: the Australian extension of the SportsGameOdds schema](https://sockodds.com/blog/sockodds-the-australian-extension-of-sportsgameodds/) | [Getting Started with the SockOdds API](https://sockodds.com/blog/getting-started-with-the-sockodds-api/) | [How the Odds API Handles Postponed, Delayed, Cancelled and Stale Events](https://sockodds.com/blog/postponed-delayed-cancelled-events-odds-api/)

## Start building today

Free plan available. Set up in 5 minutes. Scale when you're ready.
