Back to home

Expected Value (EV) and Probability Calculations

Understanding how we remove sportsbook margins and calculate true betting value

Why This Matters

Sportsbooks build a margin ("vig") into every line. If you use the raw odds to estimate probability, you'll often see fake value—bets that look +EV but aren't once you remove that built-in edge.

Our goal is simple: estimate a "true" probability (no vig when possible), then compute EV, edge, and fair odds from that.

Key Terms

Market Implied Probability

The probability implied by the sportsbook's odds (includes vig).

Example: -110 implies about 52.38%.

True Probability

Our best estimate of the outcome happening with vig removed (or conservatively adjusted when we can't fully remove it). This is what we use for EV.

Vig (Sportsbook Margin)

If a market is fair, all outcomes sum to 100%. Books price markets so the implied probabilities sum to more than 100%. That extra is the vig.

Example: A typical -110/-110 market implies 52.38% + 52.38% = 104.76%. That extra 4.76% is the sportsbook margin.

How We Estimate True Probability

We use the best method available for each bet, in this order:

1) Two-way Devigging (Highest Confidence) ✅

When we use it:

Two-way markets (spreads, totals, moneylines, most props) where we have both sides at the same book.

What we do:

  • • For each sportsbook that offers both sides, convert odds → implied probabilities
  • • Normalize the pair so the two outcomes sum to 100% (removes vig)
  • • Average those no-vig probabilities across books to get a market consensus

Why it's best:

It's a direct, math-correct vig removal using real market pairs.

Confidence: 🟢 Highest

2) Overround-adjusted Fallback (Medium Confidence) 🔵

When we use it:

If we can't devig properly because the market is incomplete or thin, for example:

  • • Missing the opposite side
  • • Alt lines far from the main line
  • • Niche props where pairing isn't available

What we do:

  • • Use the market average price (not the best price) to get a stable implied probability
  • • Place that probability into a bucket
  • • Apply a conservative "total market factor" (an estimate of typical vig for that probability range + market type)
  • • Remove estimated vig via: true probability = implied probability ÷ total market factor

Probability buckets (typical vig):

• 0–15% (long shots): factor 1.35 (~35% vig)

• 15–25%: factor 1.25 (~25% vig)

• 25–40%: factor 1.15 (~15% vig)

• 40–50% (near even): factor 1.08 (~8% vig)

• 50%+ (favorites): factor 1.06 (~6% vig)

Market-type adjustments (adds more conservatism):

• Volatile props (blocks/steals): +5%

• Alternate lines: +3%

• Special/exotic markets: +3%

Why market average (not best price)?

  • • It's more stable
  • • It reflects consensus pricing
  • • It avoids "selection bias" from one outlier book

Confidence: 🔵 Medium (conservative estimate)

3) Vigged Fallback (Lowest Confidence) ⚠

When we use it:

Only if the overround fallback is turned off (legacy behavior).

What we do:

Use a trimmed mean of implied probabilities (drops high/low outliers)… but does not remove vig.

Why it's worse:

Keeping vig inflates probabilities and can create misleading edges.

Confidence: ⚠ Lowest (being phased out)

How We Calculate EV (Expected Value)

Once we have true probability, EV is straightforward.

EV Formula (per 1 unit)

EV = (true_prob × profit_if_win) − ((1 − true_prob) × stake)

Where:

  • stake = 1 unit
  • profit_if_win = (decimal_odds − 1) × stake

✓ Positive EV = good long-term bet

✗ Negative EV = skip

Edge and Fair Odds

Edge

A simple measure of advantage:

edge = true_probability − market_implied_probability

Positive edge means the bet is priced better than it "should" be.

Fair Odds (no-vig odds)

Fair odds are what the line would be if the market had zero vig—based purely on true probability.

We compute:

fair decimal = 1 / true_probability

then convert to fair American

Transparency: Probability Quality Badges

Every bet includes a probabilitySource so users can see how it was calculated:

🟢
devig_two_way

Proper no-vig consensus from complete two-way markets

🟢
devig_three_way

(planned / expanding) no-vig consensus for three-way markets

🔵
overround_adjusted_fallback

Conservative estimate when devig isn't possible

vigged_fallback

Legacy method (vig not removed)

In the UI, we show a badge + tooltip explaining the method.

Why This Prevents "Fake Value"

If you use raw implied probability (vigged) instead of true probability, you can make bad bets look good.

Our system avoids that by:

  • • Removing vig directly when we have full market pairs
  • • Falling back to a conservative adjustment when we don't
  • • Clearly labeling confidence so users know what they're looking at

Best Practices We Follow

We do:

  • • Prefer devigged consensus whenever both sides exist
  • • Use market averages for stable baselines
  • • Avoid averaging American odds directly (they're non-linear)
  • • Track the probability source for trust and transparency

We don't:

  • • Use best price to estimate base probability (selection bias)
  • • Trust single-book "edges" without market context
  • • Hide confidence levels from the user