De-vigging (Removing the Vigorish)¶
Overview¶
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 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 expected-value-ev calculations.
For example, a soccer 1X2 market with Home 1.90, Draw 3.50, Away 5.00 has implied probabilities of 52.6%, 28.6%, 20.0% — sum = 101.2%. De-vigging adjusts these to fair probabilities that sum to exactly 100%.
The method matters: different de-vigging approaches give slightly different fair probabilities. The multiplicative method (preferred) and additive method are the two most common.
Why It Matters¶
De-vigging is essential because:
1. EV calculations require fair probabilities: Computing EV against inflated odds understates the market's true edge.
2. Model comparison: Comparing model probabilities to vig-inflated implied probabilities biases the comparison against the model.
3. Market efficiency analysis: True market probabilities (de-vigged) reveal whether the model is seeing genuine mispricings.
4. Sharp vs. soft comparison: De-vigging Pinnacle odds gives the best estimate of true market probabilities since they have the lowest vig.
Key Formula¶
Implied probability from decimal odds:
$$p_{implied,i} = \frac{1}{d_i}$$
Total overround:
$$O = \sum_i p_{implied,i}$$
Additive de-vigging (simple normalization):
$$p_{fair,i} = \frac{p_{implied,i}}{O}$$
Multiplicative de-vigging (Shin method, preferred):
$$p_{fair,i} = \frac{p_{implied,i}}{O^{p_{implied,i} / \sum p}}$$
Simplified: scale each probability by a factor proportional to its own magnitude.
Vigorish percentage:
$$v = \left(1 - \frac{1}{O}\right) \times 100\%$$
Worked Example¶
Odds: Home 1.90, Draw 3.50, Away 5.00
Implied probabilities: 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
Multiplicative de-vig: slightly different — favorites receive proportionally more vig removal
Code Snippet¶
import numpy as np
def implied_probabilities(odds):
return np.array([1/o for o in odds])
def overround(odds):
return sum(implied_probabilities(odds))
def devig_additive(odds):
"""Additive de-vigging: normalize to sum to 1."""
probs = implied_probabilities(odds)
fair_probs = probs / sum(probs)
return fair_probs, 1 / fair_probs
def devig_multiplicative(odds):
"""Multiplicative de-vigging (Shin method)."""
probs = implied_probabilities(odds)
O = sum(probs)
fair_probs = probs / np.power(probs, probs / O)
fair_probs = fair_probs / fair_probs.sum()
return fair_probs, 1 / fair_probs
# Example
odds = [1.90, 3.50, 5.00]
fair_probs, fair_odds = devig_multiplicative(odds)
print(f"Fair probabilities: {fair_probs.round(3)}")
# [0.520 0.283 0.198]
print(f"Fair odds: {fair_odds.round(2)}")
# [1.92 3.54 5.05]
print(f"Sum: {fair_probs.sum():.3f}") # 1.000
Pitfalls¶
- Additive method can create invalid probabilities: Extreme longshots can get probabilities > 1 or < 0 after additive normalization. Multiplicative is safer.
- Sharp vs. soft vig distribution: Multiplicative assumes vig is distributed proportionally, which is more realistic for sharp books.
- Different books have different vig structures: A soft book's de-vigged odds may still differ from true probabilities due to public bias.
- Football1X2 vig is asymmetric: The draw is typically underpriced relative to home/away. Additive de-vigging overcorrects the draw.
See Also¶
- expected-value-ev — de-vigging is the prerequisite for accurate EV calculation
- market-efficiency — sharp books (Pinnacle) have lowest vig, closest to fair odds
- closing-line-value — CLV uses de-vigged closing odds as the benchmark