Three formats, one question, lots of confusion. American odds, decimal odds, and fractional odds are three different ways of describing the same thing — the price you pay to bet on an event. This guide walks through all three, the conversion math, the implied-probability trap, and why prediction-market prices solve the entire problem.
If you have ever been confused by why -110 means roughly the same thing as 1.91 means roughly the same thing as 10/11, this post is for you.
The Three Formats
American odds are the format you see on US sportsbooks. They come in two flavors:
- Negative (e.g., -110, -250): how much you have to bet to win $100. -110 means you bet $110 to win $100. Used for favorites.
- Positive (e.g., +200, +650): how much you win on a $100 bet. +200 means you bet $100 to win $200. Used for underdogs.
The asymmetry is annoying but historical. American sportsbooks have always quoted prices this way and the format is not going anywhere.
Decimal odds are the format you see in European sportsbooks and most online platforms internationally. The number is what you receive (including your stake) for each $1 bet. Decimal 1.91 means a $1 bet returns $1.91 — your $1 stake plus $0.91 in profit.
Decimal odds are easier to work with mathematically because the format is symmetric and intuitive. Most quants and traders prefer decimal regardless of where they live.
Fractional odds are the format used by UK bookmakers. The fraction is profit-to-stake. 10/11 means you bet $11 to profit $10 (so $11 returns $21 total). 5/1 means you bet $1 to profit $5.
Fractional odds are awkward for math but persist because British betting culture grew up with them. Reading a betting slip at a UK shop without fluency in fractions is genuinely difficult.
Implied Probability: The Common Currency
Every odds format converts to the same thing: an implied probability — the chance the bookmaker is implicitly pricing the event at.
Implied probability = stake / total return
If you bet $1 at decimal 2.0 and would receive $2 total, the implied probability is 1/2 = 50%. The math is the same regardless of format, but the conversion shortcuts differ:
From decimal: prob = 1 / decimal_odds
Decimal 1.91 → 1 / 1.91 = 0.524 = 52.4% Decimal 3.0 → 1 / 3.0 = 0.333 = 33.3%
From American (negative): prob = -odds / (-odds + 100)
-110 → 110 / 210 = 0.524 = 52.4% -250 → 250 / 350 = 0.714 = 71.4%
From American (positive): prob = 100 / (odds + 100)
+200 → 100 / 300 = 0.333 = 33.3% +650 → 100 / 750 = 0.133 = 13.3%
From fractional: prob = denominator / (numerator + denominator)
10/11 → 11 / 21 = 0.524 = 52.4% 5/1 → 1 / 6 = 0.167 = 16.7%
Every line you see at a sportsbook is one of these. Convert all of them to implied probability and they are directly comparable.
A Quick Conversion Table
The most common American/decimal/fractional/implied combinations on the moneyline:
| American | Decimal | Fractional | Implied prob |
|---|---|---|---|
| -250 | 1.40 | 2/5 | 71.4% |
| -200 | 1.50 | 1/2 | 66.7% |
| -150 | 1.67 | 4/6 | 60.0% |
| -110 | 1.91 | 10/11 | 52.4% |
| +100 | 2.00 | 1/1 (evens) | 50.0% |
| +110 | 2.10 | 11/10 | 47.6% |
| +150 | 2.50 | 3/2 | 40.0% |
| +200 | 3.00 | 2/1 | 33.3% |
| +400 | 5.00 | 4/1 | 20.0% |
| +650 | 7.50 | 13/2 | 13.3% |
Memorize a handful — especially +100 (evens) and -110 (standard NFL/NBA juice) — and you can navigate any sportsbook.
A Python Snippet
If you do this often, write the converters once and reuse them:
def american_to_prob(american: int) -> float:
if american > 0:
return 100 / (american + 100)
else:
return -american / (-american + 100)
def decimal_to_prob(decimal: float) -> float:
return 1 / decimal
def fractional_to_prob(num: int, den: int) -> float:
return den / (num + den)
def prob_to_american(p: float) -> int:
if p > 0.5:
return int(round(-100 * p / (1 - p)))
else:
return int(round(100 * (1 - p) / p))
def prob_to_decimal(p: float) -> float:
return 1 / p
These ten lines cover 95% of the odds-conversion work any developer needs.
The Vig Problem
Implied probabilities from sportsbook lines do not sum to 100%. They sum to more — usually 104-108% on a two-way market. The extra is the bookmaker's margin: the "vig," "juice," or "overround."
Example: a sportsbook posts -110 / -110 on both sides of an NFL game. Each side has implied probability 52.4%. The two sides together imply 104.8% probability, which is impossible. The extra 4.8% is the house edge.
To get the fair probability the bookmaker thinks each side really has, you have to remove the vig. The simplest way is proportional normalization:
def remove_vig(implied_a: float, implied_b: float) -> tuple[float, float]:
total = implied_a + implied_b
return implied_a / total, implied_b / total
A two-sided market with 52.4% / 52.4% becomes 50% / 50% after vig removal. The 4.8% extra was the bookmaker's margin, not a probability claim.
This is why "betting on a coin flip at -110" is a losing strategy — you are implicitly paying 2.4% per bet for the right to bet at fair odds. Over thousands of bets, that 2.4% adds up to a guaranteed loss against the house.
Prediction Markets Skip the Vig Entirely
Here is the structural reason prediction markets like Polymarket and Kalshi are different from sportsbooks: the price is the probability, with no vig.
If a Polymarket contract on "Will the Lakers win?" is trading at 60 cents, the market is collectively saying the probability is 60%. There is no margin built in (or, on platforms with a small taker fee, the margin is explicit and visible — typically 1-2%, much less than sportsbook vig).
This means you do not need to convert anything. You do not need to remove vig. The price you pay to enter is the implied probability you are paying for. Buy at 60 cents, the contract pays $1 if the team wins. Implied probability: 60%. Done.
For traders who think in probabilities — which you should, if you are sizing bets with Kelly Criterion — this is a massive simplification. Sportsbooks force you to convert from arbitrary odds formats and remove vig before you can reason about edge. Prediction markets give you the probability directly.
Worked Example: Comparing Sportsbook to Prediction Market
Suppose your model says the Boston Celtics have a 65% chance of winning tonight. You want to know where you have edge.
DraftKings is offering -150 on Boston. American to decimal: 1.67. Decimal to implied probability: 60.0%. There is no opposing side displayed simultaneously, so vig is hidden — let us assume a typical 4% market overround, putting the no-vig fair probability around 57.7%.
Polymarket has the equivalent contract trading at 58 cents on the YES side. Implied probability: 58%. No vig (the 2% taker fee comes off your eventual profit, not the price).
Your model says 65%. The sportsbook implies 57.7% fair, which is a 7.3 percentage-point edge. Polymarket implies 58.0%, which is a 7.0 percentage-point edge. After accounting for the sportsbook's hidden vig and Polymarket's explicit fee, the two are roughly comparable.
The choice between them comes down to other factors: liquidity, tax treatment, whether you live somewhere DraftKings operates, whether the sportsbook will let you size up before limiting you. Both are valid. The prediction market is just easier to reason about.
Common Mistakes
A few traps to avoid:
Treating implied probability as fair probability. It is not. Sportsbook implied probability includes the vig. Always remove the vig before comparing to your model.
Forgetting which side of the line you are on. Negative American odds are favorites, positive are underdogs. -110 and +110 look symmetric but mean opposite things.
Mixing decimal and fractional in the same calculation. Decimal 2.0 is "even money" — fractional 1/1 is also "even money." The numerical values are different but the implied probability is the same (50%). Pick one format internally and convert at the boundaries.
Ignoring the spread between books. Different sportsbooks post different lines on the same event. The mid-market consensus is usually a better fair-probability estimate than any single book.
The Bottom Line
Three odds formats, one underlying concept (implied probability), one universal trap (the vig), and one structural fix (prediction markets, which skip the vig entirely).
Internalize the conversion math. Always remove the vig before comparing to your model. Prefer decimal odds when reading; prefer probabilities when thinking. And if you are going to do this seriously, switch to a prediction market at the first opportunity — the math is dramatically cleaner.
Live calibrated probabilities for 11 sports at zenhodl.net/v1/try. The Kelly calculator at zenhodl.net/calculator handles probability inputs directly. Full bot course at zenhodl.net/products covers cross-venue conversion in code.