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 — short for vigorish, also called juice, overround, or the bookie’s margin depending on where you are in the world — is the sportsbook’s built-in edge on every market. For the full story of how a Russian word for “winnings” became American bookmaker slang, see The Vigorish: A Linguistic Journey.
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%
BetAnything (formerly 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.79%
Vig: 3.79%
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.79%):
Fair probability A: 58.33% / 103.79% = 56.20%
Fair probability B: 45.45% / 103.79% = 43.80%
Fair odds A: -(56.20 / (100 - 56.20)) × 100 = -128.3
Fair odds B: ((100 - 43.80) / 43.80) × 100 = +128.3
The fair line is roughly -128 / +128. The book moved it to -140 / +120 to extract 3.79% 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.79, '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.85% | 51.92% |
| -110 / -110 | 4.76% | 52.38% |
| -115 / -115 | 6.98% | 53.49% |
| -120 / -120 | 9.09% | 54.55% |
Some books quote vig as a share of total implied probability (hold), which reads slightly lower — 4.55% instead of 4.76% at -110. This guide uses the overround convention throughout.
The difference between -105 and -110 looks small — 1.16% on the break-even rate. It isn’t. At $100 per bet, a 50/50 bettor expects to lose $4.55 per bet at -110 and $2.38 at -105. Over 1,000 bets that gap is roughly $2,160 — pure savings for placing the identical wagers at a reduced-juice book.
MLB is the cheapest major US sport to bet: moneylines at sharp books commonly run around 2.5% vig thanks to dime lines (10-cent spreads between favorite and underdog), the lowest of the major US sports.
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, BetAnything (formerly 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. |
Prediction markets charge their “vig” differently: on Kalshi and Polymarket it’s the bid-ask spread plus taker fees — Kalshi charges 0.07 × P × (1−P) per contract and Polymarket US charges 0.06 × P × (1−P). See Prediction Market Odds Explained for how those fees convert to an effective vig.
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
- Odds Boost Math — Apply vig math to evaluate sportsbook odds boosts
