Vig is the tax on every bet you place. Calculating it takes 30 seconds and tells you exactly how much the sportsbook is charging you. This guide covers the formula, code, and the breakpoints that separate sharp books from overpriced ones.
The Vig Formula
Vig calculation works identically across all odds formats. The core idea: a fair market has outcomes summing to exactly 100% probability. Sportsbooks inflate that total. The amount above 100% is the vig.
Step 1: Convert Odds to Implied Probability
American odds (negative):
Implied Probability = |odds| / (|odds| + 100)
Example: -110 → 110 / 210 = 0.5238 = 52.38%
American odds (positive):
Implied Probability = 100 / (odds + 100)
Example: +120 → 100 / 220 = 0.4545 = 45.45%
Decimal odds:
Implied Probability = 1 / decimal_odds
Example: 1.91 → 1 / 1.91 = 0.5236 = 52.36%
Step 2: Sum All Probabilities
For a two-way market (spread, total, moneyline with two outcomes):
Total = P(Side A) + P(Side B)
Example: -110 / -110 → 52.38% + 52.38% = 104.76%
For a three-way market (soccer moneyline with draw):
Total = P(Home) + P(Draw) + P(Away)
Step 3: Vig = Total - 100%
Vig = 104.76% - 100% = 4.76%
That’s it. The book is charging 4.76% on this market.
Worked Examples
Standard Line: -110 / -110
Side A: 110 / 210 = 52.38%
Side B: 110 / 210 = 52.38%
Total: 104.76%
Vig: 4.76%
This is the default price at most regulated US sportsbooks for spread and total bets.
Reduced Juice: -105 / -105
Side A: 105 / 205 = 51.22%
Side B: 105 / 205 = 51.22%
Total: 102.44%
Vig: 2.44%
BetAnySports and LowVig.ag offer this on standard sides and totals. Half the vig of mainstream books. For a full breakdown, see our guide to reduced juice sportsbooks.
Uneven Moneyline: -140 / +120
Favorite: 140 / 240 = 58.33%
Underdog: 100 / 220 = 45.45%
Total: 103.78%
Vig: 3.78%
Heavy Favorite: -300 / +240
Favorite: 300 / 400 = 75.00%
Underdog: 100 / 340 = 29.41%
Total: 104.41%
Vig: 4.41%
High-Vig Prop: -130 / +100
Favorite: 130 / 230 = 56.52%
Underdog: 100 / 200 = 50.00%
Total: 106.52%
Vig: 6.52%
Player props regularly carry 6-12% vig. This is where books make the most margin.
Calculating No-Vig Fair Odds
To find what the odds should be without the sportsbook’s margin, divide each probability by the total.
For -140 / +120 (total 103.78%):
Fair probability A: 58.33% / 103.78% = 56.21%
Fair probability B: 45.45% / 103.78% = 43.79%
Fair odds A: -(56.21 / (100 - 56.21)) × 100 = -128.3
Fair odds B: ((100 - 43.79) / 43.79) × 100 = +128.3
The fair line is roughly -128 / +128. The book moved it to -140 / +120 to extract 3.78% vig.
Python Code for Betting Agents
AI betting agents calculate vig programmatically across every book before placing a bet. Here’s the core function:
def calculate_vig(odds_a: int, odds_b: int) -> dict:
"""Calculate vig from American odds for a two-way market."""
def implied_prob(odds: int) -> float:
if odds < 0:
return abs(odds) / (abs(odds) + 100)
else:
return 100 / (odds + 100)
prob_a = implied_prob(odds_a)
prob_b = implied_prob(odds_b)
total = prob_a + prob_b
vig = (total - 1) * 100
# No-vig fair probabilities
fair_a = prob_a / total
fair_b = prob_b / total
return {
"vig_pct": round(vig, 2),
"implied_a": round(prob_a * 100, 2),
"implied_b": round(prob_b * 100, 2),
"fair_prob_a": round(fair_a * 100, 2),
"fair_prob_b": round(fair_b * 100, 2),
"total_implied": round(total * 100, 2),
}
# Examples
print(calculate_vig(-110, -110))
# {'vig_pct': 4.76, 'implied_a': 52.38, 'implied_b': 52.38, ...}
print(calculate_vig(-105, -105))
# {'vig_pct': 2.44, 'implied_a': 51.22, 'implied_b': 51.22, ...}
print(calculate_vig(-140, 120))
# {'vig_pct': 3.78, 'implied_a': 58.33, 'implied_b': 45.45, ...}
An agent’s line-shopping loop looks like this:
from odds_api import get_odds # The Odds API client
def find_best_vig(event_id: str, market: str) -> dict:
"""Find the sportsbook with lowest vig for a given market."""
all_odds = get_odds(event_id, market)
best = None
for book, odds in all_odds.items():
result = calculate_vig(odds["home"], odds["away"])
if best is None or result["vig_pct"] < best["vig_pct"]:
best = {**result, "book": book}
return best
For the full API integration, see our Prediction Market API Reference.
Vig and Break-Even Win Rates
Vig directly determines how often you need to win to break even.
| Odds | Vig | Break-Even Win % |
|---|---|---|
| -105 / -105 | 2.44% | 51.22% |
| -108 / -108 | 3.70% | 51.92% |
| -110 / -110 | 4.76% | 52.38% |
| -115 / -115 | 6.52% | 53.49% |
| -120 / -120 | 8.33% | 54.55% |
The difference between -105 and -110 seems small — it’s 1.16% on the break-even rate. But over 1,000 bets, that 1.16% is worth roughly 12 extra wins you need to achieve the same result. At $100 per bet, that’s $1,200.
Vig Reference Tiers
Based on the AgentBet Vig Index, sportsbooks fall into clear tiers. For a sport-by-sport breakdown, see best sportsbook odds by sport.
| Tier | Vig Range | Books | Description |
|---|---|---|---|
| Sharp | 2.0-3.0% | Circa, Pinnacle, BetAnySports, LowVig.ag, CRIS | Best prices. Where sharp bettors and AI agents prioritize. |
| Competitive | 3.0-4.5% | Heritage, DraftKings, FanDuel, Bet365 | Good prices on high-volume markets. Acceptable for most bettors. |
| Standard | 4.5-5.5% | BetMGM, Caesars, BetRivers, ESPN BET, Bovada, BetOnline | Average prices. Promotions may offset higher vig. |
| Recreational | 5.5%+ | MyBookie, Fanatics, small regionals | Poor prices. Only use for specific promos or props unavailable elsewhere. |
What’s Next
- AgentBet Vig Index — Monthly vig tracking across 16 sportsbooks
- Prediction Market Odds Explained — Converting between probability, decimal, and American odds
- Sharp Betting Strategies — Exploiting vig differentials for profit
- Agent Betting Glossary — Complete terminology reference
- Agent Betting Stack — How vig fits into the full agent architecture
- Juice Comparison Across Offshore Books — Programmatic vig analysis with Python
- Vig Shopping Strategy — How to exploit vig differentials for profit
