Expected Value (EV)¶
Overview¶
Expected value (EV) in sports betting is the average amount a bettor expects to win or lose per unit wagered if they placed the same bet many times. It is the fundamental mathematical concept behind profitable betting: a bettor's edge comes from consistently finding bets with positive expected value (+EV).
The core formula: EV = (Probability of Winning × Amount Won) − (Probability of Losing × Amount Lost). A positive EV bet means the bettor has a mathematical edge over the sportsbook — over many bets, they expect to profit.
In the sports prediction pipeline, EV calculation is the core decision mechanism: the model outputs probabilities, de-vigged odds provide fair prices, and EV = (model_prob × decimal_odds) − 1 determines whether a bet is worth placing.
Why It Matters¶
EV is the foundation of profitable sports betting because:
1. It separates skill from luck: Over a large sample, only +EV bets produce profit. Individual outcomes are random.
2. It enables comparison: EV quantifies the edge in comparable units (% return on stake), allowing comparison across bets at different odds.
3. It drives Kelly sizing: EV determines the Kelly fraction — more EV means larger stake.
4. It identifies mispricings: Bookmaker odds that imply probabilities lower than the model's estimate create +EV opportunities.
The key insight: +EV bets should be placed consistently over time; individual outcomes are irrelevant to long-term profitability.
Key Formula¶
Basic EV formula:
$$EV = p \times b - q = p \times b - (1 - p)$$
Where p = probability of winning, q = 1 − p, b = net profit on winning bet.
EV for decimal odds:
$$EV = p \times d - 1$$
If p × d > 1, the bet is +EV. If p × d < 1, the bet is −EV.
Implied probability from decimal odds:
$$p_{implied} = \frac{1}{d}$$
Worked Example¶
- Model estimates Brazil has 60% chance to win (p = 0.60)
- Bookmaker offers odds of 1.80 (implied prob = 55.5%)
- Fair odds (de-vigged) = 1.70 (implied prob = 58.8%)
EV vs bookmaker: EV = 0.60 × 1.80 − 1 = 1.08 − 1 = +0.08 (8% expected return)
EV vs fair odds: EV = 0.60 × 1.70 − 1 = +0.02 (2% edge over fair price)
Interpretation: Over 100 identical $100 bets, expect to profit $800 gross from the bookmaker, $200 net of fair value.
Code Snippet¶
def expected_value(prob_win, decimal_odds):
"""Calculate expected value of a bet."""
return prob_win * decimal_odds - 1
def implied_probability(decimal_odds):
"""Convert decimal odds to implied probability."""
return 1 / decimal_odds
def is_positive_ev(model_prob, decimal_odds):
"""Check if bet has positive expected value."""
return model_prob * decimal_odds > 1
def ev_with_vig(model_prob, bookie_odds, fair_odds):
"""Calculate EV relative to fair odds (de-vigged)."""
return model_prob * fair_odds - 1
# Example
prob = 0.60
bookie = 1.80
fair = 1.70
print(f"EV vs bookie: {expected_value(prob, bookie):.3f}") # +0.080
print(f"EV vs fair: {ev_with_vig(prob, bookie, fair):.3f}") # +0.020
print(f"+EV: {is_positive_ev(prob, bookie)}") # True
Pitfalls¶
- EV calculations are only as good as the probability estimates: A model with systematically biased probabilities will give misleading EV.
- Small samples: World Cup has only 64 matches. Individual match EV can be wildly different from theoretical EV.
- Vig must be removed first: Computing EV against inflated bookmaker odds overstates the market edge. Always de-vig first.
- Odds change: By the time you place a bet, odds may have moved. EV at placement time ≠ EV at settlement time.
See Also¶
- kelly-criterion — Kelly sizing uses EV to determine optimal stake
- de-vigging — must de-vig before computing true EV
- closing-line-value — CLV validates whether EV is real or noise
- value-bet-identification — the process of finding +EV bets