0/70 completed
Pricing Framework Interactive

Vig / Juice / Hold

The house edge built into pricing. Understanding how to balance profitability with user experience and competitive positioning.

๐Ÿ“– Terminology

Vig (Vigorish)

The commission charged by the house. A $110 to win $100 bet has 10% vig on the profit.

Juice

Same as vig. "The juice is -110" means you pay $110 to win $100.

Hold

The percentage of total wagered that the house keeps. Also called the "overround" or "margin."

Market Settings

True Probability (Over) 50%
20% 80%
Total Vig/Hold 4.5%
0% 15%
Bet Amount 100$
10$ 1000$

๐Ÿ“Š House Edge

Overround 4.5%
Expected Profit $4.50
Bettor Disadvantage $8.61

Implied Odds (with Vig)

OVER
-109
Implied: 52.3%
True: 50% | Vig bump: +2.3%
UNDER
-109
Implied: 52.3%
True: 50% | Vig bump: +2.3%
Total Implied 104.5%

Fair market = 100%. Anything over 100% is the house edge.

Payout Impact

Fair Payout (0% vig)
$200.00
Actual Payout (4.5% vig)
$191.39
Bettor Loses
$8.61

๐Ÿ Competitive Landscape

Sharp Book

2.5%
-110/-110 โ†’ -114/114

Standard

4.5%
-110/-110 โ†’ -125/125

Retail

6%
-110/-110 โ†’ -133/133

High Margin

10%
-110/-110 โ†’ -155/155

Trade-off: Lower vig attracts sharp bettors and volume, but reduces per-bet profit. Higher vig maximizes profit per bet but loses price-sensitive customers.

โš–๏ธ Vig Optimization

When to Lower Vig

  • โ†’ High-volume markets (NFL, NBA primetime)
  • โ†’ Attracting sharp money for price discovery
  • โ†’ Competitive markets with many alternatives
  • โ†’ Building user acquisition and retention

When to Raise Vig

  • โ†’ Exotic/niche markets (lower volume)
  • โ†’ Uncertain pricing (injury news, weather)
  • โ†’ High-correlation parlay combinations
  • โ†’ One-sided action requiring balance

R Code Equivalent

# Calculate vig/hold from odds
calculate_hold <- function(odds_over, odds_under) { 
  implied_over <- 1 / odds_over
  implied_under <- 1 / odds_under
  hold <- (implied_over + implied_under - 1) * 100
  return(hold)
}

# Remove vig to get true probabilities
remove_vig <- function(odds_over, odds_under) { 
  implied_over <- 1 / odds_over
  implied_under <- 1 / odds_under
  total <- implied_over + implied_under
  
  true_over <- implied_over / total
  true_under <- implied_under / total
  return(list(over = true_over, under = true_under))
}

# Add vig to true probability
add_vig <- function(true_prob, total_vig) { 
  # Split vig evenly
  implied <- true_prob + total_vig / 2 / 100
  decimal_odds <- 1 / implied
  return(decimal_odds)
}

# Example
hold <- calculate_hold(1.9139, 1.9139)
cat(sprintf("Hold: %.2f%%\n", hold))

โœ… Key Takeaways

  • โ€ข Standard -110/-110 = 4.5% hold
  • โ€ข Overround = sum of implied probs - 100%
  • โ€ข Higher vig = more profit per bet, less volume
  • โ€ข Sharp books run 2-3%, retail up to 10%+
  • โ€ข Vig is split across both sides of market
  • โ€ข Remove vig to calculate true probabilities

Pricing Models & Frameworks Tutorial

Built for mastery ยท Interactive learning