Odds Analytics
MLB Betting Insights
How line shopping, model edge, and implied probability combine to find +EV spots in today's MLB market.
Today's Slate
Monday, June 29, 2026
Games scored
13
Active edges
8
Largest totals edge
-1.97
Padres @ Cubs UNDER
Top ML conviction
55.6%
Dodgers
Understanding Line Optimization (Best Odds)
Sportsbooks don't post identical prices. On any given game, DraftKings might list a team at +100, while FanDuel has them at +105 and BetMGM at +102. Those five cents feel trivial on a single bet — but compounded over a full 162-game season, they represent the difference between a losing record and a profitable one.
The key metric is break-even win rate: the minimum percentage of bets you need to win to avoid losing money. Every extra point of American odds you capture lowers that threshold.
Break-Even Win Rate by Line
Formula: Implied Prob = 100 ÷ (Odds + 100) for positive American odds
| Line | Break-Even Win Rate | Profit per 100 bets at $100 |
|---|---|---|
| +100 | 50.00% | Winning 50.00% of 100 bets at +100 → break even |
| +105 | 48.78% | Winning 48.78% of 100 bets at +105 → break even |
| +110 | 47.62% | Winning 47.62% of 100 bets at +110 → break even |
| +115 | 46.51% | Winning 46.51% of 100 bets at +115 → break even |
Concrete Season Example
Say you place 500 moneyline bets at $100 each across an MLB season, winning exactly 50% of them (250 wins / 250 losses).
At +100 (even money)
250 × $100 = $25,000 won
250 × $100 = $25,000 lost
Net: $0.00 — break even
At +105 (5 points better)
250 × $105 = $26,250 won
250 × $100 = $25,000 lost
Net: +$1,250 — same win rate, better price
Line shopping earns you $1,250 in this scenario without improving your model or pick accuracy by a single percentage point. OddsEdgeHQ surfaces these opportunities automatically across DraftKings, FanDuel, and BetMGM.
Demystifying Model Edge
Every bet you place is priced by a sportsbook using its own probability model. That implied probability is baked directly into the American odds. Our MLB model runs an independent estimate. When the two disagree, there's an edge — and that gap is where long-run positive expected value lives.
The Formula
Edge = Model Win Probability − Implied Probability
Implied Probability (positive odds)
Implied% = 100 ÷ (Odds + 100)
Example: +110 → 100 ÷ 210 = 47.6%
Implied Probability (negative odds)
Implied% = |Odds| ÷ (|Odds| + 100)
Example: -130 → 130 ÷ 230 = 56.5%
Worked Example
Sportsbook line
+110
Implied probability: 47.6%
The book thinks this team wins 47.6% of the time.
Model output
52.4%
Win probability from the baseline logistic model
Trained on 6,273 historical games (2023–2026).
Edge
+4.8pp
52.4% − 47.6% = +4.8 percentage points
Positive edge → +EV bet at this price.
What does +EV mean over time?
If your model is correctly calibrated and you find a true +4.8pp edge on every bet, a 52.4% win rate on +110 odds yields an expected return of roughly +$2.40 per $100 wagered — positive expected value, the mathematical basis for beating the closing line over a large sample.
How the Pipeline Computes Edge
From src/utils/oddsNormalizer.ts
// Implied probability from American odds
function americanToImpliedProb(odds: number): number {
if (odds > 0) return 100 / (odds + 100);
const abs = Math.abs(odds);
return abs / (abs + 100);
}
// Edge in percentage points
function calcEdgePct(modelProb: number, impliedProb: number): number {
return (modelProb - impliedProb) * 100;
}
These two functions are called for every MLB game where a sportsbook h2h line exists. The result feeds directly into the emerald/red edge badges in OddsEdgeHQ. A green badge (≥ +3pp) signals the model sees meaningful value; red (≤ −3pp) flags the market is pricing the team higher than the model estimates.
Daily MLB Market Notes
Slate: Monday, June 29, 2026
13 games · 8 active totals edges
Top Totals Edges
| Matchup | Proj | Line | Edge | Rec |
|---|---|---|---|---|
| Padres @ Cubs | 9.0 | 11.0 | -1.97 | UNDER |
| Marlins @ Rockies | 9.6 | 11.5 | -1.92 | UNDER |
| Tigers @ Yankees | 9.1 | 7.5 | +1.55 | OVER |
| Angels @ Mariners | 8.8 | 7.5 | +1.30 | OVER |
| Rangers @ Guardians | 8.5 | 7.5 | +1.03 | OVER |
What Drives These Numbers
Starting Pitcher Rest (sp_days_rest)
Pitchers on 4+ days rest show measurably better control metrics. The model weights this feature in both moneyline and F5 projections.
Bullpen Fatigue (bullpen_ip_last_3d)
Innings pitched by the bullpen in the prior 3 days is a totals-relevant signal — high usage correlates with higher scoring in later innings.
Rolling ERA (sp_era_rolling)
A 10-game rolling ERA for each starter smooths out outlier starts and keeps the model anchored to recent arm performance, not the full season average.
Team OPS Differential (ops_diff_rolling)
Rolling OPS gap between offense and opposing pitching staff — the primary feature driving over/under edges in the ridge regression totals model.
These features are computed by build_team_pitching_features.py from the historical
boxscore parquet and refreshed with each daily prediction run.