MLB
How It Works
We pull every game on the slate, match it against 21 analysis systems — including the Dinger Radar home run model — and light up a badge when a system triggers. The more badges stacked on a side, the louder the signal. Gold-rimmed badges are the strongest.
/// THE MATH
We take the schedule from the MLB Stats API, pull season pitching stats (including HR/9, fly-ball rate, and FIP) for each probable starter, season hitting splits for each lineup (including vs LHP / vs RHP), the standings with run differentials, park factors for the 30 venues, current wind from Open-Meteo, and lines from The Odds API — plus each day's opening number, which we snapshot the first time we see it. A second, deeper pass pulls posted lineups, every batter's season and last-14-day numbers, career batter-vs-pitcher history, reliever workloads from the last three days of boxscores, and home run prop prices. All of it feeds a deterministic engine that returns the triggered badges and the Dinger Radar board for every game.
The fast data refreshes every 60 seconds during games; the batter-level deep pass reruns every 15 minutes — each with an independent cloud fallback, so the slate keeps itself current all day. Results cache in Upstash Redis so the page loads in under 100 ms.
PITCHING
Run prevention is the single biggest predictor of a baseball outcome. These reward starters who are demonstrably better than their counterpart — on the surface stats, on the peripherals, or over the first five innings — plus the bullpen rest advantage behind them.
Starting pitcher's season ERA is 1.0+ runs better than the opponent's (50+ IP min). The team with the ace has the run-prevention edge.
Starter strikes out at least 10 batters per 9 innings. Suppresses contact, limits BABIP variance, and boosts strikeout-prop equity.
Starter combines K/9 ≥ 11, WHIP ≤ 1.05, and ERA ≤ 2.50 — peripheral stats consistent with Cy Young-grade dominance. Strikeout props and team-no-runs-in-N specials.
One starter clearly outclasses the other on a composite of ERA, WHIP, and K/9 (both 30+ IP). First-5-innings lines isolate the pitching mismatch and remove bullpen randomness.
Starter's ERA is 0.75+ runs better than his FIP (50+ IP) — the shiny ERA is riding batted-ball luck and strand rate. Fade the mirage side; the peripherals say regression is coming.
Opposing bullpen has thrown 14+ innings in the last 3 days (league norm is ~11). Late-game arms are gassed, tipping leverage to the other side.
HITTING
Lineup form and platoon advantage. We use season OPS as a proxy for 'hot' and the team's vs-LHP / vs-RHP splits to spot the platoon edge against the opposing starter.
Team OPS over the last 10 games is .800 or better. Lineup is locked in and run output is trending up.
Lineup's OPS against the starter's pitching hand is 80+ points better than against the other hand. The platoon advantage is real.
ENVIRONMENT & SCHEDULE
Where the game is played and who slept in their own bed. Park factor + wind direction explains a huge chunk of total runs, and short-rest spots — late games, cross-country travel, day games after night games — show up most in early windows.
Hitter-friendly venue (park factor 105+) with wind blowing out 8+ mph. Carry-the-ball weather lights up totals.
Hitter park (PF 105+) with wind blowing OUT 8+ mph — and the posted total is 8.5 or lower. The conditions tend to outpace the number.
Pitcher park (PF ≤ 95), wind under 8 mph or blowing IN, total posted at 9 or higher, and at least one starter with sub-3.50 ERA. Lean Under.
Home team wins 60%+ at home, road team wins under 45% on the road. The split between the two is significant.
Team played a 9pm+ ET game last night and traveled 2+ time zones for an early start today. Bodies are still on yesterday.
Team plays a day game today after a night game yesterday while the opponent rested. Day-after-night lineups sit stars and hit for less power — a classic situational fade.
REGRESSION & MODEL
Records lie; run differentials don't. These compare what a team (or a pitcher's ERA) claims against what the underlying numbers say, and check the model's win probability against the price the market is asking.
One team is underperforming its Pythagorean (run-differential) expectation by 4+ win-pct points while the opponent is overperforming. Records lie; run differentials don't — the market prices the record.
Win probability from run differential + starter quality (with home-field bump) beats the moneyline's implied probability by 6+ points. Requires confirmed starters — a big model-vs-market gap is a spot worth a second look.
MARKET
What the line itself is telling you. Heavy chalks suggest runline value; plus-money dogs with a real arm are mispriced; a moneyline that moves hard off the open is money the books respect; and when the underdog stacks 3+ system badges, the line is the signal.
Moneyline favorite at -200 or shorter. Look at the runline (-1.5) for better number — heavy chalks historically cover the runline ~58% of the time.
Underdog at +130 to +180 whose starter has a 0.50+ ERA edge over the favorite. The market is paying you to back a competitive arm.
Moneyline has moved 2.5+ implied-probability points from today's opening number. Books move lines for money they respect — follow the steam, not the open.
Underdog has 3+ system badges in their favor — the line may be mispriced relative to where the math actually points.
DINGER RADAR
The home run model. Every batter on the slate gets a 0–100 score built from his shrunken season HR rate adjusted for park, wind, the opposing pitcher, platoon hand, two-week form, batter-vs-pitcher history, and the game environment. Batters over the alert threshold light up the slate — the full table with market prop odds lives on each matchup page.
Dinger Radar has at least one batter in this game above the alert threshold — power bat, HR-prone pitcher, friendly park, or all three. Check the matchup page for HR prop targets.
/// READING THE DINGER RADAR
Every batter's score starts from his season home run rate, stabilized so a hot week in a small sample doesn't masquerade as power. That base rate is then adjusted — carefully, with every factor capped — for the park, the wind, how homer-prone the opposing starter is, the platoon matchup, two-week form, and career history against tonight's pitcher. The output is a 0–100 score and a modeled probability of homering in the game.
- ▸Scores of 72+ are Dinger Alerts — highlighted gold on the matchup table and surfaced on the game card. A typical full slate produces a handful, not dozens.
- ▸The matchup page lists every batter with his score, modeled HR%, and the best available home run prop price. A ▲EVmarker appears only when the model's probability clears the book's implied breakeven with room to spare.
- ▸Before lineups post (~3–4 hours pre-game), batting orders are projected from each team's last game and labeled as projected. Prop prices appear once books post them, typically late morning.
/// CONFIDENCE LEVELS
Every badge wears its confidence as a metal rim and a dot count.
Gold rim, three dots. Clean trigger with margin to spare — the strongest version of the signal.
Silver rim, two dots. Trigger met, signal present, edge moderate.
Bronze rim, one dot. Threshold barely cleared. Use as supporting context only.
/// HOW TO READ THE SLATE
- 01.Open today's slate. Each game shows the pitcher matchup, the line, any triggered badges, and a Dinger Radar strip when a batter clears the alert bar.
- 02.Scan for games with 3+ badges stacking on one side — that's where the math is loudest.
- 03.Hover any badge for the full reason (numerical context), or hit Matchup for the whole picture: every badge explained, plus the full Dinger Radar table with prop prices.
- 04.For entertainment only. Badges are signal, not certainty.
For entertainment purposes only.