SPORTS BETTING7 min read

Expected Value in Sports Betting: How to Calculate Your Edge (2026)

Every profitable sports bettor operates from a single foundational concept: expected value. Win rate alone tells you almost nothing about whether you have an edge: a bettor who wins 58% of bets at terrible odds is losing money, while one who wins 49% of bets at excellent odds can be grinding out profit. Here's what EV means precisely, how to calculate it, and the real-world process for finding positive-EV bets consistently.

1. What is expected value in sports betting?

Expected value is the average outcome per bet if you placed the same wager an infinite number of times under identical conditions. It is a forward-looking calculation that tells you whether a bet is mathematically profitable, not whether you will win any individual bet.

A positive-EV bet (+EV) is one where the true probability of winning exceeds the probability implied by the odds. A negative-EV bet (−EV) is one where the book's implied probability overstates your real chances of winning, which is the case for nearly every bet placed by recreational bettors who do not do the math.

The concept comes directly from probability theory and decision science. A coin flip bet where someone offers you $110 if heads and you owe them $100 if tails has a positive EV of $5 per flip: (0.5 × $110) − (0.5 × $100) = $55 − $50 = +$5. In sports betting, the challenge is that you never know the true probability of the outcome with certainty. You have to estimate it, and your estimate's accuracy determines whether your calculated positive EV is real or illusory.

The mechanics of EV apply regardless of the sport, bet type, or stakes. Super Bowl moneyline or NBA second-half total, the question is always the same: is the true probability of this outcome higher than what the odds imply? If yes, you have a positive-EV bet. If no, you are paying for the privilege of gambling with a house edge working against you.

2. EV formula with worked example: moneyline at +150 with 42% true probability

The general EV formula for a sports bet:

EV = (P_win × Profit_if_win) − (P_lose × Stake)

Where P_win is your estimated true win probability, Profit_if_win is the net profit on a winning bet, P_lose is (1 − P_win), and Stake is the amount wagered.

Worked example: A moneyline bet on Team A at +150 odds, betting $100. You estimate Team A's true win probability is 42%.

This bet has a +$5 EV per $100 wagered, a +5% ROI. Over 500 such bets, the expected profit is $2,500, though with high variance that makes individual months look very different from the long-run expectation.

Now consider the same odds at a slightly lower true probability: 38% win probability at +150:

At 38% true probability, the same +150 bet becomes −EV. The implied probability at +150 is 40.0% (100/250), so your edge is exactly the difference between your true probability estimate and the implied probability. At 42% you have +2% edge; at 38% you have −2% edge. The precision of your probability estimate is everything.

3. Implied probability: converting American odds to win probability (formula + table)

Implied probability is the win probability the sportsbook's odds are pricing in, before the vig is removed. Converting American odds to implied probability:

For negative odds (favorites): Implied probability = |odds| / (|odds| + 100)

For positive odds (underdogs): Implied probability = 100 / (odds + 100)

Examples:

Note that if you sum the implied probabilities for both sides of a two-outcome market, the total always exceeds 100%; the excess is the vig. At −110 on both sides: 52.38% + 52.38% = 104.76%. The 4.76% over 100% is the book's built-in edge.

American odds to implied probability reference
American Odds Implied Probability Net Profit on $100 Win Break-Even Win Rate Needed
+200 33.33% $200 33.33%
+150 40.00% $150 40.00%
+120 45.45% $120 45.45%
+110 47.62% $110 47.62%
+100 (even money) 50.00% $100 50.00%
−110 52.38% $90.91 52.38%
−120 54.55% $83.33 54.55%
−150 60.00% $66.67 60.00%
−200 66.67% $50.00 66.67%

The implied probability is not the same as the true probability; it includes the book's margin. To find the "vig-removed" implied probability (the book's best estimate of the true odds), you need to de-juice: divide each side's implied probability by the sum of both sides' implied probabilities. At −110 on both sides: de-juiced probability = 52.38% / 104.76% = exactly 50%. The book's best-estimate of a 50/50 event is priced at −110 on both sides.

4. Finding your model probability: prediction markets vs. power ratings vs. line shopping

The hardest part of EV calculation is the probability estimate. There are three practical sources, each with different strengths:

Power ratings: A power rating system assigns each team a numerical strength estimate, and the spread or moneyline between any two teams is derived from the difference in their ratings. Building accurate power ratings requires weighting recent performance, adjusting for strength of schedule, accounting for margin of victory (or not, depending on the sport), and incorporating known personnel changes. Power ratings are the most controllable method (you decide what goes in) and the most labor-intensive. A well-maintained power rating system in a single sport can produce accurate probabilities for regular-season games, particularly for matchups involving teams you have tracked closely all season.

Prediction markets: Platforms like Polymarket and Kalshi aggregate the probability estimates of thousands of forecasters into a single market price. These markets are remarkably well-calibrated for major sporting events. Prediction market-implied probabilities have been shown in multiple studies to be as accurate or more accurate than professional forecasters' point estimates. The limitation: prediction market liquidity for individual game outcomes is lower than sportsbook liquidity, and markets are not available for every game. For major events (playoffs, championship games, high-profile regular season matchups), prediction market prices are valuable validation inputs.

Line shopping: If multiple books are offering different prices on the same bet, the consensus of those prices across a liquid market is a reasonable proxy for the true probability. If five major sportsbooks offer a team at +135, +140, +138, +137, and +140, the true probability is near 41–42%. If you find one book offering +155 on the same team, you have a price discrepancy that almost certainly represents positive EV relative to the market consensus. Line shopping is not a probability model; it is a mechanism for finding the best available price relative to the consensus.

In practice, the most effective approach combines all three: use power ratings to establish your base probability estimate, validate it against prediction market prices for major games, and then shop lines across books to find the best available odds relative to your estimate. When your power rating and the prediction market both suggest 44% true probability and you find a line at +150 (implying 40%), you have converged evidence of a +EV bet.

5. The closing line as your true probability benchmark

The closing line, the final odds posted before a game begins, represents the market's most informed, information-rich estimate of the true outcome probability. By the time a game kicks off, the line has been bet into by professional syndicates, sharp individuals, and informed public bettors. Late line moves often reflect injury updates, weather changes, or sharp positioning that has a strong track record of accuracy.

This makes the closing line the gold standard for evaluating whether your bet had positive EV, not the game result. If you bet a team at +155 and the line closes at +130, you beat the closing line by 25 cents. That is a large positive CLV signal: the closing market (more informed than when you bet) suggests you got significantly better odds than the true probability warranted. Conversely, if you bet at +155 and the line closes at +170, the market moved against you, suggesting your odds were worse than the closing market consensus.

Over a large sample, bettors who consistently beat the closing line produce positive ROI; bettors who consistently get worse-than-closing odds produce negative ROI. This relationship has been demonstrated empirically across multiple data sets of bettor outcomes. The closing line is not perfect (it can be distorted by public sentiment in high-profile games or by temporary sharp positioning), but it is the best available external benchmark for evaluating bet quality after the fact.

For your personal bet tracking, record both your entry odds and the closing odds on every bet. Calculate CLV as (your odds) minus (closing odds) in implied probability terms. Over 500+ bets, your average CLV is your most honest measure of whether your process is finding real value or not. A positive average CLV of even 1–2% across a large sample is a strong signal of a sustainable edge.

6. EV across multiple bets: law of large numbers and why sample size matters

The law of large numbers states that as the number of trials increases, the average outcome converges toward the expected value. A single coin flip at +EV tells you almost nothing about your long-run results: you could win or lose. A thousand coin flips at the same +EV will converge reliably toward the expected profit.

In sports betting, this convergence is slow, much slower than most bettors expect, because individual bet outcomes have high variance (binary: win or lose) and because bets are not truly independent (they occur across a season where conditions evolve). The practical implication:

The high variance in sports betting also means that a bettor with no edge (betting pure noise) will sometimes produce a winning 200-game stretch that looks like skill. Survivorship bias in betting communities amplifies this: the bettors with good 50-game or 100-game runs are vocal; the much larger number of bettors with identical processes but unlucky runs have gone quiet or stopped posting.

The discipline required is to focus on the process (are you finding positive CLV? are your probability estimates accurate when you can verify them?) rather than the short-term outcome. A 10-game losing streak on +EV bets is an expected occurrence in sports betting, not a signal that your edge has disappeared. The statistical maturity to distinguish process from outcome is one of the clearest markers of a profitable long-run bettor.

7. When EV does not apply: low-liquidity markets and exotic props

The EV framework assumes that the book's line reflects a meaningful consensus probability: that there is enough liquidity and enough informed market participants to make the closing line a reasonable benchmark. This assumption breaks down in several categories:

Low-liquidity markets: Minor league sports, overseas basketball leagues, and obscure international soccer competitions often have lines set by a small number of analysts with limited information. Books in these markets frequently make large errors in opening lines and are slow to adjust because there is minimal sharp action to correct them. EV calculations in these markets are unreliable because the implied probability may not reflect any meaningful consensus. You can find large apparent edges that are actually artifacts of a poorly set line rather than genuine mispricings you can consistently exploit.

First-half and second-half props: Halftime and in-game props are set quickly in a high-pressure environment where the book uses algorithmic adjustments rather than careful analysis. The implied probabilities in these markets can be wildly inaccurate, but they are also set at high juice (−120 or worse on both sides in many cases), which means the threshold for positive EV is higher. The apparent edge you calculate against an in-game prop may be offset entirely by the inflated vig.

Exotic parlay and same-game parlay props: Parlay pricing involves combining multiple implied probabilities with correlation adjustments that books often make in their favor. The book's correlation adjustments in same-game parlays are a proprietary calculation designed to ensure they retain their margin even when legs are correlated. Your EV calculation for individual legs does not transfer cleanly to parlay structures; the combined implied probability almost always overstates the true joint probability in ways that work against the bettor.

Low-frequency events within props: Exotic props on events with fewer than 10 historical occurrences per season (specific player milestones, unusual game-level outcomes) have probability distributions that are essentially impossible to estimate accurately. The sample size for calibration is too small, which means your "true probability" estimate has enormous uncertainty bands. A calculated +8% EV on a bet where your probability estimate could be off by 15% in either direction is not a reliable EV edge; it is uncertainty masquerading as edge.

The practical rule: apply the EV framework most confidently to markets with the most liquidity, the most historical data, and the most informed participants: major-league game spreads, totals, and moneylines in the NFL, NBA, MLB, and major soccer leagues. As you move toward less liquid, less data-rich markets, treat your EV calculations with increasing skepticism and reduce your sizing accordingly.

def calculate_ev(odds: int, true_prob: float, stake: float = 100.0) -> dict:
    """
    Complete EV calculation for a sports bet.

    Args:
        odds: American odds (positive or negative integer)
        true_prob: Your estimated true win probability (0.0 to 1.0)
        stake: Amount wagered in dollars (default $100)

    Returns:
        Dictionary with EV, implied_prob, edge, roi, and break_even
    """
    # Convert American odds to decimal profit per dollar staked
    if odds > 0:
        profit_per_dollar = odds / 100
    else:
        profit_per_dollar = 100 / abs(odds)

    # Implied probability (including vig)
    if odds > 0:
        implied_prob = 100 / (odds + 100)
    else:
        implied_prob = abs(odds) / (abs(odds) + 100)

    # Net profit if bet wins
    win_profit = profit_per_dollar * stake

    # Expected value calculation
    ev = (true_prob * win_profit) - ((1 - true_prob) * stake)

    # Edge: how much your probability exceeds implied
    edge = true_prob - implied_prob

    # ROI expressed as percentage of stake
    roi = (ev / stake) * 100

    return {
        'ev': round(ev, 2),
        'implied_prob': round(implied_prob * 100, 2),
        'true_prob_pct': round(true_prob * 100, 2),
        'edge_pct': round(edge * 100, 2),
        'roi_pct': round(roi, 2),
        'win_profit': round(win_profit, 2),
        'is_positive_ev': ev > 0,
    }


# --- Example 1: Underdog at +150, 42% true probability ---
result1 = calculate_ev(odds=150, true_prob=0.42, stake=100)
print("=== Example 1: +150 moneyline, 42% true probability ===")
for k, v in result1.items():
    print(f"  {k}: {v}")
# ev: +5.00, edge_pct: +2.00, roi_pct: +5.0, is_positive_ev: True

print()

# --- Example 2: Favorite at -110, 54% true probability ---
result2 = calculate_ev(odds=-110, true_prob=0.54, stake=110)
print("=== Example 2: -110 spread, 54% true probability ===")
for k, v in result2.items():
    print(f"  {k}: {v}")
# ev: +4.27, edge_pct: +1.62, roi_pct: +3.88, is_positive_ev: True

print()

# --- Example 3: Negative EV check ---
result3 = calculate_ev(odds=-120, true_prob=0.52, stake=120)
print("=== Example 3: -120 bet, only 52% true probability ===")
for k, v in result3.items():
    print(f"  {k}: {v}")
# ev: -6.40, edge_pct: -2.55, roi_pct: -5.33, is_positive_ev: False


def implied_prob_from_odds(odds: int) -> float:
    """Convert American odds to implied probability (0.0 to 1.0)."""
    if odds > 0:
        return 100 / (odds + 100)
    else:
        return abs(odds) / (abs(odds) + 100)


def devig_two_way_market(odds_side_a: int, odds_side_b: int) -> tuple[float, float]:
    """
    Remove the vig from a two-way market.
    Returns the fair (no-vig) probability for each side.
    """
    prob_a = implied_prob_from_odds(odds_side_a)
    prob_b = implied_prob_from_odds(odds_side_b)
    total = prob_a + prob_b
    return (prob_a / total, prob_b / total)


# Example: both sides at -110
fair_a, fair_b = devig_two_way_market(-110, -110)
print(f"\nFair probability (no-vig) at -110/-110: {fair_a:.1%} / {fair_b:.1%}")
# 50.0% / 50.0%

# Example: -160 / +140 market
fair_fav, fair_dog = devig_two_way_market(-160, 140)
print(f"Fair probability at -160/+140: {fair_fav:.1%} / {fair_dog:.1%}")
# ~62.5% / ~37.5%

Use RadarPulse's Picks terminal to see model probabilities vs. implied odds and spot positive-EV bets.

Join the waitlist