De-vigging (Removing the Vigorish)¶
Summary¶
De-vigging (also called "removing the vig" or "de-minting") is the process of converting bookmaker odds with built-in margin into "fair" odds that reflect the true implied probabilities. The sportsbook's margin (vigorish or "juice") is the overround — the amount by which the sum of implied probabilities exceeds 100%. De-vigging reverses this to get true probabilities for accurate EV calculations.
For example, a soccer 1X2 market might have: Home 1.90, Draw 3.50, Away 5.00. The implied probabilities are 52.6%, 28.6%, 20.0% — sum = 101.2% (the 1.2% overround is the bookmaker's margin). De-vigging adjusts these to fair probabilities that sum to exactly 100%.
The de-vigging method matters because different methods give slightly different fair probabilities. The multiplicative method (default) and additive method are the two most common approaches.
Key Concepts¶
- Overround: Sum of implied probabilities > 100%. For a fair book, overround = 100% exactly.
- Vigorish (vig): The bookmaker's percentage profit on total stakes. Different from overround but related.
- Additive method (basic): Divide each implied probability by the total overround. Simple but can produce negative probabilities for extreme longshots.
- Multiplicative method (preferred): More statistically sound — distributes vig proportionally to each outcome's implied probability. Favorites receive more vig than longshots under this method.
- Power method: More complex; raises the overround to a power to achieve a more realistic distribution.
- Soft vs. sharp books: Soft books (e.g., DraftKings, FanDuel) have higher vig than sharp books (Pinnacle). De-vigging sharp book odds is closer to "true" fair odds.
Formulas¶
Implied probability from decimal odds:
$$p_{implied,i} = \frac{1}{d_i}$$
Total overround:
$$O = \sum_{i} p_{implied,i}$$
Additive de-vigging:
$$p_{fair,i} = \frac{p_{implied,i}}{O}$$
This normalizes probabilities to sum to 1. Simple but can create issues.
Multiplicative de-vigging:
$$p_{fair,i} = \frac{p_{implied,i}}{\sqrt[p_{implied,i}]{O}}$$
A more complex formula where each probability is scaled by a factor based on its own magnitude.
Simplified multiplicative (Shin / sqrt method):
For two outcomes (e.g., over/under):
$$p_{fair,home} = \frac{p_{implied,home}}{\sqrt{p_{implied,home} \times p_{implied,away}}}$$
Vigorish percentage:
$$v = \left(1 - \frac{1}{O}\right) \times 100\%$$
Example:
- Odds: Home 1.90, Draw 3.50, Away 5.00
- Implied: 1/1.90=0.526, 1/3.50=0.286, 1/5.00=0.200 → O=1.012
- Additive de-vig: 0.526/1.012=0.520, 0.286/1.012=0.283, 0.200/1.012=0.198
- Fair odds: 1/0.520=1.92, 1/0.283=3.54, 1/0.198=5.05
Python Implementation¶
import numpy as np
def implied_probabilities(odds):
"""Convert decimal odds to implied probabilities."""
return np.array([1/o for o in odds])
def overround(odds):
"""Calculate total overround (sum of implied probabilities)."""
return sum(implied_probabilities(odds))
def devig_additive(odds):
"""Additive de-vigging: normalize to sum to 1."""
probs = implied_probabilities(odds)
O = sum(probs)
fair_probs = probs / O
fair_odds = 1 / fair_probs
return fair_probs, fair_odds
def devig_multiplicative(odds):
"""
Multiplicative de-vigging (Shin method).
More statistically appropriate than additive.
"""
probs = implied_probabilities(odds)
O = sum(probs)
n = len(probs)
# Multiplicative method
fair_probs = probs / np.power(probs, probs / O)
fair_probs = fair_probs / fair_probs.sum()
fair_odds = 1 / fair_probs
return fair_probs, fair_odds
def devig_power(odds, power=0.5):
"""
Power method de-vigging.
power=0.5 is common; power=1 gives additive.
"""
probs = implied_probabilities(odds)
O = sum(probs)
fair_probs = probs / np.power(probs, (1 - power) * np.log(O) / sum(np.log(probs)))
fair_probs = fair_probs / fair_probs.sum()
fair_odds = 1 / fair_probs
return fair_probs, fair_odds
# Example usage
odds = [1.90, 3.50, 5.00] # Home, Draw, Away
fair_probs, fair_odds = devig_multiplicative(odds)
print(f"Fair probabilities: {fair_probs}")
print(f"Fair odds: {fair_odds}")
Notes¶
- Always de-vig before computing EV — otherwise you're measuring edge against inflated odds, not true probabilities
- Pinnacle and sharp books have the lowest vig (~2-3%), making their odds closest to fair. Using their odds as reference for de-vigging other books is standard practice.
- The additive method is simpler but can produce issues with extreme longshots (creating probabilities > 1 or < 0). Multiplicative is preferred for production systems.
- For the sports prediction MVP: The Odds API provides odds from multiple bookmakers; de-vig the sharpest book (Pinnacle) to get fair probabilities, then check if the model + other bookmaker odds create +EV opportunities
- Some advanced de-vigging methods use hidden markov models or Bayesian approaches to infer true probabilities from observed odds across multiple books