Skip to content

Guides

How to calculate no-vig odds: formulas, examples and code

4 min readPinnRadar team

Remove the bookmaker margin from any market and get fair odds. The multiplicative, power, Shin and additive methods with worked examples on a real 1X2 price, plus Python code.

Every bookmaker price has a margin built in. No-vig odds (also called fair odds or devigged odds) are the prices with that margin taken out. They are the market's own estimate of each outcome's probability, and they are the starting point for value betting, closing line value and most betting models.

This guide shows the arithmetic step by step, compares the four common methods on a real three-way price, and ends with a few lines of Python. If you only need the numbers, the free no-vig calculator does all of this in the browser and can load live Pinnacle prices.

Step 1: turn prices into implied probabilities

A decimal price implies a probability of 1 / odds. Take an evenly matched two-way market priced at 1.952 on both sides:

  • 1 / 1.952 = 0.5123, so 51.23% each
  • 51.23% + 51.23% = 102.46%

In a fair market the probabilities would add up to exactly 100%. The extra 2.46% is the bookmaker's margin (the vig, juice or overround).

Step 2: scale the probabilities back to 100%

The simplest way is the multiplicative method: divide each implied probability by the total.

  • 0.5123 / 1.0246 = 0.5000
  • fair odds = 1 / 0.5000 = 2.00 on each side

That is all there is to it for a balanced two-way market. The methods only start to disagree when one side is a clear favourite.

A three-way example

Take a soccer 1X2 market at 2.10 / 3.45 / 3.70:

OutcomePriceImplied probability
Home2.1047.62%
Draw3.4528.99%
Away3.7027.03%
Total103.63%

The margin is 3.63%. Here is how the four methods share it out:

MethodHomeDrawAway
Quoted (with margin)2.1003.4503.700
Multiplicative2.1763.5753.834
Power2.1553.6023.872
Shin2.1603.5943.863
Additive2.1553.6003.873

The four methods in one line each

  • Multiplicative (proportional): divide each implied probability by the total. Simple and the usual default for close two-way markets.
  • Power: find the exponent k that makes the implied probabilities raised to k sum to 1. It takes more of the margin from the longshots, which is how bookmakers tend to price them.
  • Shin: models the margin as protection against insiders and solves for their share. Like the power method it leaves the favourite closer to its quoted price, and it is popular for 1X2 soccer markets.
  • Additive: subtract the same amount from every probability. Easy to explain, but it can produce negative probabilities on big longshots, so treat it as a comparison rather than a default.

Which one is right? There is no single answer. On close two-way markets the methods agree to two decimals. On markets with a strong favourite, the power and Shin methods usually calibrate better, because the favourite-longshot bias is real.

Which prices should you devig?

A no-vig price is only as good as the market it comes from. A low-margin market that moves on informed money gives a better estimate than a soft book with a 6-8% margin. That is why Pinnacle's price is the usual reference: its margin is low and it adjusts the line instead of limiting winning accounts. You can see current examples on the Pinnacle odds board.

Always devig a complete market: every outcome, from the same bookmaker, at the same moment. Mixing prices from different times or different books breaks the arithmetic.

In code

The multiplicative method takes three lines:

prices = [2.10, 3.45, 3.70]
implied = [1 / p for p in prices]
fair = [sum(implied) / q for q in implied]   # [2.176, 3.575, 3.834]

The PinnRadar Python client includes the multiplicative and power methods and can feed them live Pinnacle prices:

from pinnradar import Client, no_vig

pr = Client()                                # reads PINNRADAR_API_KEY
board = pr.prematch_fixtures(sport_id=1)     # upcoming soccer
for ev in board["events"]:
    ml = (ev.get("periods") or {}).get("num_0", {}).get("money_line") or {}
    if ml.get("home") and ml.get("draw") and ml.get("away"):
        prices = [ml["home"], ml["draw"], ml["away"]]
        print(ev["home"], ev["away"], [round(x, 2) for x in no_vig(prices, method="power")])

What to do with fair odds

  • Find value: a price elsewhere above the fair price is a positive expected value bet, if the fair price is right. The Kelly criterion calculator sizes the stake.
  • Measure closing line value: compare the price you took with the no-vig closing price. See the CLV calculator and our guide to closing line value.
  • Feed a model: fair probabilities are a clean input or benchmark for your own ratings.

PinnRadar provides odds data, not betting advice. The maths above describes a price, not a recommendation.

Questions readers ask

What does no-vig mean?

No-vig odds are a bookmaker's prices with its margin removed, so the implied probabilities of all outcomes add up to exactly 100%.

How do you calculate no-vig odds?

Convert every price to an implied probability (1 / odds), add them up, divide each probability by the total, and convert back with 1 / probability. That is the multiplicative method.

Which de-vig method is most accurate?

On close two-way markets they agree almost exactly. With a clear favourite, the power and Shin methods usually calibrate better than multiplicative because they take more margin from longshots.

Is there a free no-vig calculator?

Yes. The PinnRadar no-vig calculator compares all four methods and can load live Pinnacle prices with one click.

Pull Pinnacle prices into your own code

The PinnRadar odds APIcarries Pinnacle’s live and prematch markets, drop alerts included, over REST, SSE and WebSocket. Compare the plans, or start on a free key: just an email, and no Pinnacle account needed.

Get a free key →