Expected Value (EV)

Summary

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 EV formula in its simplest form is: 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 context of the sports prediction MVP, EV calculation is the core decision mechanism: the Poisson model outputs probabilities, de-vigged odds provide fair prices, and EV = (model_prob × fair_odds) - 1 determines whether a bet is worth placing.

Key Concepts

  • Positive EV (+EV): Bet has a mathematical edge; expected return > 0. Over infinite repetitions, the bettor profits.
  • Negative EV (-EV): Bet has negative expected return; the sportsbook has the edge. Over infinite repetitions, the bettor loses.
  • Fair odds: Odds with no vig — implied probabilities sum to 100%. True probability = 1/decimal_odds.
  • Implied probability: The probability the sportsbook's odds suggest. For decimal odds d: implied_prob = 1/d.
  • Decimal vs. American odds: Decimal (European) odds are easier for EV calculations. American odds (+150) convert to decimal as (100/150)+1 = 1.667.

Formulas

Basic EV formula:
$$EV = (p \times b) - (q \times s)$$

Where:
- p = probability of winning (from model)
- q = probability of losing = 1 - p
- b = profit when winning (for decimal odds d: b = d - 1)
- s = stake (usually 1, normalized)

EV for decimal odds:
$$EV = p \times (d - 1) - (1 - p) = p \times d - 1$$

Or equivalently: EV = (p × d) - 1. If p × d > 1, the bet is +EV.

Implied probability from decimal odds:
$$\text{implied_prob} = \frac{1}{d}$$

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) might be 1.70 (implied prob = 58.8%)
- EV = 0.60 × 1.80 - 1 = 1.08 - 1 = +0.08 (8% expected return on stake)
- Or compared to fair odds: EV = 0.60 × 1.70 - 1 = +0.02 (2% edge)

Python Implementation

def expected_value(prob_win, decimal_odds):
    """
    Calculate expected value of a bet.

    Args:
        prob_win: Model probability of winning (0-1)
        decimal_odds: Decimal odds (e.g., 2.50 = 3.5x return including stake)

    Returns:
        EV as a decimal (e.g., 0.05 = 5% expected return on stake)
    """
    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, bookmaker_odds, fair_odds):
    """
    Calculate EV relative to fair odds (de-vigged).
    This shows the true edge vs. the market.
    """
    return model_prob * fair_odds - 1

# Example
prob_brazil_win = 0.60
bookie_odds = 1.80
fair_odds = 1.70  # after removing vig

ev = expected_value(prob_brazil_win, bookie_odds)
edge = ev_with_vig(prob_brazil_win, bookie_odds, fair_odds)
print(f"EV vs bookie: {ev:.3f} ({ev*100:.1f}%)")  # +0.080
print(f"Edge vs fair: {edge:.3f} ({edge*100:.1f}%)")  # +0.020

Notes

  • EV calculations are only as good as the probability estimates — a model with systematically bad probabilities will give misleading EV
  • For World Cup betting: sample sizes are small (64 matches total), so individual match EV can be noisy
  • The key insight is that +EV bets should be placed consistently over time; individual outcomes are irrelevant to long-term profitability
  • OddsJam and similar tools provide real-time EV calculations across bookmakers for finding the best +EV opportunities
  • The sportsbooks' edge (vig) must be removed before calculating EV — otherwise all bets appear worse than they are