| Record | Win% | P&L | ||
|---|---|---|---|---|
| Overall | 88W–84L–0P | 51% | -15.15 u | Last 14 days • 172 settled |
| Grade A | 32W–24L–0P | 57% | -0.64 u | |
| Grade B | 56W–60L–0P | 48% | -14.51 u |
| Record | Win% | P&L | ||
|---|---|---|---|---|
| Overall | 503W–481L–7P | 51% | -74.33 u | All-time • 991 settled |
| Grade A | 110W–83L–0P | 57% | -0.72 u | |
| Grade B | 393W–398L–7P | 50% | -73.61 u |
| Date | Type | Play | Line | Odds | Size | Result | P&L | Actual |
|---|---|---|---|---|---|---|---|---|
| 2026-05-20 | K Prop | Jack Leiter | 5.5 | -130 | - | LOSS | -1.000 | Jack Leiter: 5.0 (line 5.5) |
| 2026-05-20 | K Prop | Aaron Nola | 5.5 | -119 | - | WIN | +0.840 | Aaron Nola: 5.0 (line 5.5) |
| 2026-05-20 | K Prop | Mike Burrows | 4.5 | -146 | - | LOSS | -1.000 | Mike Burrows: 2.0 (line 4.5) |
| 2026-05-20 | K Prop | Michael Wacha | 4.5 | -120 | - | WIN | +0.833 | Michael Wacha: 8.0 (line 4.5) |
| Market | Trust | Season N | Season WR | Season P&L | 14d N | 14d WR | 14d P&L | Grade A N | Grade A WR |
|---|---|---|---|---|---|---|---|---|---|
| K Prop | ✅ TRUSTED | 193 | 55% | -7.32u | 60 | 60% | +2.82u | 106 | 59% |
| Pitcher Hits Allowed | ✅ TRUSTED | 113 | 61% | +10.80u | 39 | 56% | +2.79u | 0 | - |
| Run Line | ✅ TRUSTED | 79 | 54% | +1.04u | 28 | 46% | -5.79u | 30 | 70% |
| F5 ML | 👀 WATCH | 28 | 48% | +4.54u | 0 | - | +0.00u | 0 | - |
| Batter Total Bases | 👀 WATCH | 20 | 45% | -3.23u | 11 | 27% | -5.69u | 0 | - |
| Batter Hits | 👀 WATCH | 14 | 86% | +2.82u | 1 | 100% | +0.36u | 0 | - |
| No HR U1.5 | 👀 WATCH | 9 | 22% | -5.18u | 1 | 100% | +0.91u | 0 | - |
| Moneyline | 👀 WATCH | 6 | 50% | +2.85u | 0 | - | +0.00u | 0 | - |
| NRFI | 👀 WATCH | 3 | 33% | +0.00u | 0 | - | +0.00u | 0 | - |
| YRFI | 👀 WATCH | 2 | 100% | +0.00u | 0 | - | +0.00u | 0 | - |
| Pitcher Outs | 🔬 RESEARCH | 75 | 41% | -13.74u | 0 | - | +0.00u | 1 | 0% |
| Total | 🔬 RESEARCH | 42 | 38% | -9.29u | 0 | - | +0.00u | 1 | 100% |
| Batter H+R+RBI | ⛔ PAUSED | 407 | 49% | -57.64u | 12 | 33% | -5.02u | 55 | 45% |
Raw edge is an uncalibrated ranking/debug signal. Trust tiers come from configured market status plus settled tracker performance.
| Market | Current Stage | Next Stage | Progress | Promotion Blockers |
|---|---|---|---|---|
| K Prop | ✅ TRUSTED | Maintain Trusted | 3/4 | season P&L non-negative |
| Pitcher Hits Allowed | ✅ TRUSTED | Maintain Trusted | 4/4 | No blocker |
| Run Line | ✅ TRUSTED | Maintain Trusted | 3/4 | 14d P&L non-negative |
| F5 ML | 👀 WATCH | ✅ Trusted | 2/5 | season sample >= 50; 14d sample >= 10; Grade A sample >= 20 and WR >= 55% |
| Batter Total Bases | 👀 WATCH | ✅ Trusted | 1/5 | season sample >= 50; season P&L positive; 14d P&L non-negative |
| Batter Hits | 👀 WATCH | ✅ Trusted | 2/5 | season sample >= 50; 14d sample >= 10; Grade A sample >= 20 and WR >= 55% |
| No HR U1.5 | 👀 WATCH | ✅ Trusted | 1/5 | season sample >= 50; season P&L positive; 14d sample >= 10 |
| Moneyline | 👀 WATCH | ✅ Trusted | 2/5 | season sample >= 50; 14d sample >= 10; Grade A sample >= 20 and WR >= 55% |
| NRFI | 👀 WATCH | ✅ Trusted | 1/5 | season sample >= 50; season P&L positive; 14d sample >= 10 |
| YRFI | 👀 WATCH | ✅ Trusted | 1/5 | season sample >= 50; season P&L positive; 14d sample >= 10 |
| Pitcher Outs | 🔬 RESEARCH | 👀 Watch | 1/5 | season P&L positive; 14d sample >= 10; 14d WR >= 52% |
| Total | 🔬 RESEARCH | 👀 Watch | 0/5 | season sample >= 50; season P&L positive; 14d sample >= 10 |
| Batter H+R+RBI | ⛔ PAUSED | 🔬 Research | 2/5 | diagnostic/component model has settled validation; season P&L non-negative; 14d P&L non-negative |
Promotion criteria keep markets from getting stuck in purgatory: each stage has explicit evidence needed for the next stage.
| Component | Status | Current Usage | Recommendation Impact | Next Action |
|---|---|---|---|---|
| K Prop | ✅ TRUSTED | Active recommendation market; 12 candidate(s); season N 193, 14d N 60 | Can produce Best Play / Good Add signals. | Maintain Trusted; season P&L non-negative |
| Pitcher Outs | 🔬 RESEARCH | Research / held market; 6 candidate(s); season N 75, 14d N 0 | Held from actionable output unless explicitly validated. | 👀 Watch; season P&L positive; 14d sample >= 10 |
| Pitcher Hits Allowed | ✅ TRUSTED | Active recommendation market; 5 candidate(s); season N 113, 14d N 39 | Can produce Best Play / Good Add signals. | Maintain Trusted; No blocker |
| Batter Hits | 👀 WATCH | Active watch-stage market; 9 candidate(s); season N 14, 14d N 1 | Can surface recommendations with trust caution; promotion waits for evidence. | ✅ Trusted; season sample >= 50; 14d sample >= 10 |
| Batter H+R+RBI | ⛔ PAUSED | Paused shadow market; 107 candidate(s); season N 407, 14d N 12 | No actionable recommendations. | 🔬 Research; diagnostic/component model has settled validation; season P&L non-negative |
| Batter Hits+Runs+RBIs | ⛔ PAUSED | Paused shadow market; 0 candidate(s) | No actionable recommendations. | Build or validate replacement signal before unpausing. |
| Batter Total Bases | 👀 WATCH | Active watch-stage market; 49 candidate(s); season N 20, 14d N 11 | Can surface recommendations with trust caution; promotion waits for evidence. | ✅ Trusted; season sample >= 50; season P&L positive |
| No HR | 🔬 RESEARCH | Research / held market; 2 candidate(s) | Held from actionable output unless explicitly validated. | Validate forward results before promotion. |
| Total | 🔬 RESEARCH | Research / held market; 4 candidate(s); season N 42, 14d N 0 | Held from actionable output unless explicitly validated. | 👀 Watch; season sample >= 50; season P&L positive |
| F5 Total | 🔬 RESEARCH | Research / held market; 0 candidate(s) | Held from actionable output unless explicitly validated. | Validate forward results before promotion. |
| F5 ML | 👀 WATCH | Active watch-stage market; 0 candidate(s); season N 28, 14d N 0 | Can surface recommendations with trust caution; promotion waits for evidence. | ✅ Trusted; season sample >= 50; 14d sample >= 10 |
| Run Line | ✅ TRUSTED | Active recommendation market; 3 candidate(s); season N 79, 14d N 28 | Can produce Best Play / Good Add signals. | Maintain Trusted; 14d P&L non-negative |
| Moneyline | 👀 WATCH | Active watch-stage market; 0 candidate(s); season N 6, 14d N 0 | Can surface recommendations with trust caution; promotion waits for evidence. | ✅ Trusted; season sample >= 50; 14d sample >= 10 |
| Batter Hits Runs RBIs | ⛔ PAUSED | Paused shadow market; 0 candidate(s) | No actionable recommendations. | Build or validate replacement signal before unpausing. |
| PitcherAssessment | LIVE | Shared pitcher context; 14 starter assessment(s) emitted. | Active context for pitcher and batter engines; diagnostic table elsewhere. | Monitor assessment quality and data gaps. |
| HRR Component Research | ⛔ PAUSED | Shadow component research; 107 candidate(s) emitted. | No recommendation impact while HRR remains paused. | Validate component record before unpausing HRR. |
| Player Context | LIVE | Home/away, day/night, recent-return, and workload diagnostics. | Context notes and real role/workload risks only; no global threshold changes. | Validate split and health-ramp signals before scoring them. |
| AI Review | OFF | Optional post-run advisory review of settled results and model behavior. | Advisory only; cannot change recommendations, tracker saves, or thresholds. | Use for review notes after the model output is generated. |
This table is generated from runtime market status, market health, and run diagnostics. It explains whether a signal is active, held, research-only, or configuration-needed.
| ✓ | Savant: 618 pitcher(s) with metrics |
| ✓ | Savant 1st-inn: 252 pitcher(s) with 1st-inning splits |
| ✓ | Team NRFI streaks: 30 teams | 30 with streak ≥5 |
| ✓ | Pitch-type matchup data: 30 team(s), 130 team×pitch-type combinations |
| ✓ | Pitcher arsenal: 609 pitcher(s), 2616 pitch-type profiles |
| ✓ | Batter pitch-type profiles: 459 player(s) |
| ✓ | Handedness: 14 pitcher(s) | Team splits: 30 team(s) |
| ✓ | Team recent batting: 14 team(s) with last-7 K/BB/contact rates |
| ⚠ | Lineups not yet posted — using team tendencies & season stats (re-run after 4 PM for lineup refresh) |
| ⚠ | Lineup batter handedness unavailable — K-prop platoon concentration gate limited |
| ✓ | BVP context: 14 roster team(s), 182 hitter(s) | 14 SP matchup(s), 1067 career PA |
| ⚠ | Umpires not yet assigned — umpire K-rate adjustments skipped |
| ✓ | Rest data: 14 team(s) | Back-to-back: Pittsburgh Pirates, St. Louis Cardinals, New York Mets, Toronto Blue Jays, Washington Nationals, Arizona Diamondbacks, New York Yankees, Los Angeles Angels, Atlanta Braves, Miami Marlins, Cleveland Guardians, Colorado Rockies, Detroit Tigers, Athletics |
| ✓ | Bullpen data: 14 team(s) | Fatigued pens: Pittsburgh Pirates, St. Louis Cardinals, Toronto Blue Jays |
| ✓ | Bullpen HR vulnerability: 31 team(s) |
| ✓ | Weather: 1 game(s) with meaningful conditions |
| ✓ | Line movement: 982 market side(s) checked | 982 opening snapshot(s) created | 0 with movement |
| ✓ | Market health: 13 market(s) loaded from tracker |
| ✓ | Player context: lazy game-log split and recent-return diagnostics enabled |
| ⚠ | F5: 0 games fetched — market keys may be unavailable for today's slate |
| ✓ | HRR research: 107 component candidate(s) emitted (diagnostics only; market remains paused) |
| ✓ | No-HR model: 7 game(s) scored | 1 above probability threshold | 0 with DK implied prob |
| ✓ | HR layers: batter Statcast 505 | batter bats 172 | batter hand splits 172 | pitcher HR splits 77 | batter pitch-type 459 | bullpen HR 31 |
| ✓ | HR model: 121 batter(s) scored | 7 game environment(s) scored | 0 strong/elite batter edge(s) |
| Matchup | Time (ET) | Away ML | Home ML | Away RL | Home RL | Total | Con ML | |
|---|---|---|---|---|---|---|---|---|
| Cleveland Guardians @ Detroit Tigers | 1:11 PM | -103 | -117 | -1.5 (+160) | +1.5 (-196) | O/U 7.0 | HOME | Bet on DK |
| Pittsburgh Pirates @ St. Louis Cardinals | 1:16 PM | -131 | +108 | -1.5 (+131) | +1.5 (-158) | O/U 7.5 | AWAY | Bet on DK |
| New York Mets @ Washington Nationals | 4:06 PM | -114 | -105 | -1.5 (+141) | +1.5 (-171) | O/U 8.5 | AWAY | Bet on DK |
| Atlanta Braves @ Miami Marlins | 6:41 PM | -143 | +119 | -1.5 (+119) | +1.5 (-144) | O/U 7.5 | AWAY | Bet on DK |
| Toronto Blue Jays @ New York Yankees | 7:06 PM | +144 | -175 | +1.5 (-156) | -1.5 (+129) | O/U 8.0 | HOME | Bet on DK |
| Athletics @ Los Angeles Angels | 9:39 PM | -109 | -110 | -1.5 (+141) | +1.5 (-171) | O/U 8.0 | HOME | Bet on DK |
| Colorado Rockies @ Arizona Diamondbacks | 9:41 PM | +163 | -199 | +1.5 (-120) | -1.5 (+100) | O/U 9.0 | HOME | Bet on DK |
No Grade A plays today.
| Grade | Game | Time (ET) | Type | Side | DK Odds | Implied | Model | Edge | EV/$100 | Books | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| C | Atlanta Braves @ Miami Marlins | 6:41 PM | Total | Over 7.5 | -114 | 51.0% | 68.7% | +17.7% | $+28.98 | 9 | Bet on DK |
| C | Toronto Blue Jays @ New York Yankees | 7:06 PM | Total | Over 8.0 | -115 | 51.1% | 67.9% | +16.8% | $+26.90 | 9 | Bet on DK |
| C | Cleveland Guardians @ Detroit Tigers | 1:11 PM | Total | Over 7.0 | -124 | 52.9% | 68.7% | +15.8% | $+24.12 | 9 | Bet on DK |
| C | Pittsburgh Pirates @ St. Louis Cardinals | 1:16 PM | Total | Over 7.5 | -114 | 51.0% | 66.5% | +15.6% | $+24.91 | 9 | Bet on DK |
No bets meet the threshold today.
No NRFI/YRFI model signals meet the score threshold today.
| Game | Time (ET) | SPs | NRFI / Min | YRFI / Min | Edge | Why not |
|---|---|---|---|---|---|---|
| Cleveland Guardians @ Detroit Tigers | 1:11 PM | Casey Mize / Joey Cantillo | 6.0 / 7.7 | 3.5 / 7.7 | +7.2% | Score 6.0 < 7.7 threshold | Edge 7.2% < 8% required Home SP 1st-inn data thin (24 PA < 30 gate) | 2 confirmed lineup(s) unavailable |
| Pittsburgh Pirates @ St. Louis Cardinals | 1:16 PM | Dustin May / Braxton Ashcraft | 5.6 / 7.7 | 3.9 / 7.7 | +3.7% | Score 5.6 < 7.7 threshold | Edge 3.7% < 8% required 2 confirmed lineup(s) unavailable |
| Athletics @ Los Angeles Angels | 9:39 PM | José Soriano / Luis Severino | 5.0 / 7.7 | 4.5 / 7.7 | +3.7% | Score 5.0 < 7.7 threshold | Edge 3.7% < 8% required 2 confirmed lineup(s) unavailable |
| New York Mets @ Washington Nationals | 4:06 PM | Cade Cavalli / David Peterson | 4.7 / 7.7 | 4.8 / 7.7 | -6.9% | Score 4.7 < 7.7 threshold | Edge -6.9% < 8% required Away SP 1st-inn data thin (28 PA < 30 gate) | 2 confirmed lineup(s) unavailable |
| Atlanta Braves @ Miami Marlins | 6:41 PM | Sandy Alcantara / Spencer Strider | 4.5 / 7.7 | 5.0 / 7.7 | -3.8% | Score 4.5 < 7.7 threshold | Edge -3.8% < 8% required Away SP 1st-inn data thin (13 PA < 30 gate) | 2 confirmed lineup(s) unavailable |
| Toronto Blue Jays @ New York Yankees | 7:06 PM | Carlos Rodón / Braydon Fisher | 4.4 / 7.7 | 5.1 / 7.7 | -1.0% | Score 4.4 < 7.7 threshold | Edge -1.0% < 8% required Home SP 1st-inn data thin (8 PA < 30 gate) | Away SP 1st-inn data thin (4 PA < 30 gate) | 2 confirmed lineup(s) unavailable |
| Colorado Rockies @ Arizona Diamondbacks | 9:41 PM | Eduardo Rodriguez / Zach Agnos | 2.5 / 7.7 | 7.0 / 7.7 | -21.9% | Score 2.5 < 7.7 threshold | Edge -21.9% < 8% required Away SP 1st-inn data thin (0 PA < 30 gate) | 2 confirmed lineup(s) unavailable |
| Tier | Player | Team | Game | Time (ET) | Spot | Pitcher | Book | Odds | First HR | HR Chance | Market Implied | Edge | Chance Score | Freshness |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Best HR Chance | Mike Trout | Los Angeles Angels | Athletics @ Los Angeles Angels | 9:39 PM | - | Luis Severino (R) | theScore Bet | +375 | - | 42.0% | 19.7% | +22.3% | 99 | - |
| Best HR Chance | Zach Neto | Los Angeles Angels | Athletics @ Los Angeles Angels | 9:39 PM | - | Luis Severino (R) | theScore Bet | +525 | - | 41.8% | 15.0% | +26.9% | 99 | - |
| Best HR Chance | Ben Rice | New York Yankees | Toronto Blue Jays @ New York Yankees | 7:06 PM | - | Braydon Fisher (R) | theScore Bet | +400 | - | 41.8% | 18.8% | +23.1% | 99 | - |
| Best HR Chance | Shea Langeliers | Athletics | Athletics @ Los Angeles Angels | 9:39 PM | - | José Soriano (R) | theScore Bet | +400 | - | 39.6% | 18.8% | +20.9% | 99 | - |
| Best HR Chance | Corbin Carroll | Arizona Diamondbacks | Colorado Rockies @ Arizona Diamondbacks | 9:41 PM | - | Zach Agnos (R) | theScore Bet | +450 | - | 39.2% | 17.1% | +22.1% | 99 | - |
| Best HR Chance | Jorge Soler | Los Angeles Angels | Athletics @ Los Angeles Angels | 9:39 PM | - | Luis Severino (R) | theScore Bet | +500 | - | 38.7% | 15.6% | +23.1% | 99 | - |
| Best HR Chance | Nick Kurtz | Athletics | Athletics @ Los Angeles Angels | 9:39 PM | - | José Soriano (R) | theScore Bet | +400 | - | 38.7% | 18.8% | +19.9% | 99 | - |
| Best HR Chance | Ketel Marte | Arizona Diamondbacks | Colorado Rockies @ Arizona Diamondbacks | 9:41 PM | - | Zach Agnos (R) | theScore Bet | +425 | - | 37.3% | 17.9% | +19.5% | 99 | - |
| Best HR Chance | Oneil Cruz | Pittsburgh Pirates | Pittsburgh Pirates @ St. Louis Cardinals | 1:16 PM | - | Dustin May (R) | theScore Bet | +475 | - | 36.4% | 16.4% | +20.0% | 99 | - |
| Best HR Chance | Brandon Lowe | Pittsburgh Pirates | Pittsburgh Pirates @ St. Louis Cardinals | 1:16 PM | - | Dustin May (R) | theScore Bet | +450 | - | 35.5% | 17.1% | +18.4% | 99 | - |
| Best HR Chance | Michael Harris II | Atlanta Braves | Atlanta Braves @ Miami Marlins | 6:41 PM | - | Sandy Alcantara (R) | theScore Bet | +450 | - | 34.7% | 17.1% | +17.7% | 99 | - |
| Best HR Chance | Aaron Judge | New York Yankees | Toronto Blue Jays @ New York Yankees | 7:06 PM | - | Braydon Fisher (R) | theScore Bet | +260 | - | 34.6% | 25.8% | +8.8% | 99 | - |
| Strong HR Chance | Jordan Walker | St. Louis Cardinals | Pittsburgh Pirates @ St. Louis Cardinals | 1:16 PM | - | Braxton Ashcraft (R) | theScore Bet | +525 | - | 34.0% | 15.0% | +19.0% | 99 | - |
| Best HR Chance | Nolan Arenado | Arizona Diamondbacks | Colorado Rockies @ Arizona Diamondbacks | 9:41 PM | - | Zach Agnos (R) | theScore Bet | +600 | - | 31.4% | 13.3% | +18.1% | 99 | - |
| Best HR Chance | Hunter Goodman | Colorado Rockies | Colorado Rockies @ Arizona Diamondbacks | 9:41 PM | - | Eduardo Rodriguez (L) | theScore Bet | +450 | - | 29.5% | 17.1% | +12.4% | 98 | - |
| Best HR Chance | Jo Adell | Los Angeles Angels | Athletics @ Los Angeles Angels | 9:39 PM | - | Luis Severino (R) | theScore Bet | +475 | - | 28.4% | 16.4% | +12.0% | 95 | - |
| Best HR Chance | Cody Bellinger | New York Yankees | Toronto Blue Jays @ New York Yankees | 7:06 PM | - | Braydon Fisher (R) | theScore Bet | +500 | - | 26.2% | 15.6% | +10.6% | 87 | - |
| Best HR Chance | Mark Vientos | New York Mets | New York Mets @ Washington Nationals | 4:06 PM | - | Cade Cavalli (R) | theScore Bet | +500 | - | 26.2% | 15.6% | +10.6% | 87 | - |
| HR Chance Watchlist | Angel Martinez | Cleveland Guardians | Cleveland Guardians @ Detroit Tigers | 1:11 PM | - | Casey Mize (R) | theScore Bet | +800 | - | 25.4% | 10.4% | +14.9% | 85 | - |
| Best HR Chance | James Wood | Washington Nationals | New York Mets @ Washington Nationals | 4:06 PM | - | David Peterson (L) | theScore Bet | +500 | - | 25.3% | 15.6% | +9.6% | 84 | - |
| Tier | Game | Time (ET) | Score | P(1+ HR) | Fair Odds | Top Threats | Environment | Risks |
|---|---|---|---|---|---|---|---|---|
| Strong HR Environment | Toronto Blue Jays @ New York Yankees | 7:06 PM | 100 | 87.2% | -680 | Ben Rice, Aaron Judge, Cody Bellinger, Brandon Valenzuela | Yankee Stadium HR factor 1.18 | No-HR inverse support: P(no HR) 12.8% | - |
| Strong HR Environment | Athletics @ Los Angeles Angels | 9:39 PM | 100 | 86.3% | -629 | Mike Trout, Zach Neto, Shea Langeliers, Jorge Soler | Angel Stadium HR factor 0.98 | No-HR inverse support: P(no HR) 13.7% | - |
| Watchlist | Colorado Rockies @ Arizona Diamondbacks | 9:41 PM | 100 | 83.9% | -522 | Corbin Carroll, Ketel Marte, Nolan Arenado, Hunter Goodman | Chase Field HR factor 1.02 | - |
| Watchlist | Pittsburgh Pirates @ St. Louis Cardinals | 1:16 PM | 100 | 82.9% | -484 | Oneil Cruz, Brandon Lowe, Jordan Walker, Victor Scott II | Busch Stadium HR factor 0.93 | - |
| Watchlist | New York Mets @ Washington Nationals | 4:06 PM | 100 | 82.5% | -470 | Mark Vientos, James Wood, Juan Soto, Curtis Mead | Nationals Park HR factor 1.02 | - |
| Watchlist | Atlanta Braves @ Miami Marlins | 6:41 PM | 100 | 81.0% | -427 | Michael Harris II, Matt Olson, Austin Riley, Dominic Smith | loanDepot park HR factor 0.88 | - |
| Pass | Cleveland Guardians @ Detroit Tigers | 1:11 PM | 88 | 77.3% | -342 | Angel Martinez, Dillon Dingler, Wenceel Perez, Jahmai Jones | Comerica Park HR factor 0.91 | Cold (40F) -- pitchers' grip affected, less carry | No-HR model conflict: P(no HR) 22.6%, P(U1.5) 56.3% |
| Player | Game | Time (ET) | Odds | HR Chance | Why lower |
|---|---|---|---|---|---|
| Masyn Winn | Pittsburgh Pirates @ St. Louis Cardinals | 1:16 PM | +1200 | 0.3% | Lineup not confirmed | Low season HR rate | Elite contact-quality suppressor | Weak batter split vs_rhp | Thin batter pitch-type sample (9 PA) | Thin BvP sample (4 PA) |
| Steven Kwan | Cleveland Guardians @ Detroit Tigers | 1:11 PM | +1400 | 0.3% | Lineup not confirmed | Low season HR rate | Pitcher has suppressed HRs | Elite contact-quality suppressor | Weak batter split vs_rhp | Cold weather 40F |
| Ezequiel Tovar | Colorado Rockies @ Arizona Diamondbacks | 9:41 PM | +800 | 0.5% | Lineup not confirmed | Low season HR rate | Pitcher has suppressed HRs | Cold recent HR form |
| Kyle Karros | Colorado Rockies @ Arizona Diamondbacks | 9:41 PM | +1000 | 0.7% | Lineup not confirmed | Low season HR rate | Pitcher has suppressed HRs | Cold recent HR form |
| Troy Johnston | Colorado Rockies @ Arizona Diamondbacks | 9:41 PM | +1000 | 1.1% | Lineup not confirmed | Low season HR rate | Pitcher has suppressed HRs | Cold recent HR form |
| Geraldo Perdomo | Colorado Rockies @ Arizona Diamondbacks | 9:41 PM | +1000 | 1.1% | Lineup not confirmed | Low season HR rate | Thin batter pitch-type sample (9 PA) | Thin BvP sample (3 PA) | Cold recent HR form |
| Jakob Marsee | Atlanta Braves @ Miami Marlins | 6:41 PM | +900 | 1.2% | Lineup not confirmed | Pitcher has suppressed HRs | Elite strikeout pitcher | Elite contact-quality suppressor | High-whiff arsenal | Weak batter split vs_rhp |
| Carson Benge | New York Mets @ Washington Nationals | 4:06 PM | +700 | 1.2% | Lineup not confirmed | Pitcher has suppressed HRs | BvP strikeout risk | Cold recent HR form |
| Brayan Rocchio | Cleveland Guardians @ Detroit Tigers | 1:11 PM | +1100 | 1.4% | Lineup not confirmed | Pitcher has suppressed HRs | Elite contact-quality suppressor | Thin BvP sample (5 PA) | Cold weather 40F |
| Jeff McNeil | Athletics @ Los Angeles Angels | 9:39 PM | +1100 | 1.4% | Lineup not confirmed | Low season HR rate | Pitcher season stats unavailable | Thin BvP sample (3 PA) |
| Game | Time (ET) | Home SP | Away SP | Park HR | P(No HR) | P(U 1.5) | DK Implied | Edge | V2 Result |
|---|---|---|---|---|---|---|---|---|---|
| Cleveland Guardians @ Detroit Tigers | 1:11 PM | Casey Mize | Joey Cantillo | 0.91 | 22.6% MODEL SIGNAL | 56.3% MODEL SIGNAL | — | — | No HR C PASS U1.5 C PASS |
| Atlanta Braves @ Miami Marlins | 6:41 PM | Sandy Alcantara | Spencer Strider | 0.88 | 19.0% | 50.5% | — | — | |
| New York Mets @ Washington Nationals | 4:06 PM | Cade Cavalli | David Peterson | 1.02 | 17.6% | 48.1% | — | — | |
| Pittsburgh Pirates @ St. Louis Cardinals | 1:16 PM | Dustin May | Braxton Ashcraft | 0.93 | 17.1% | 47.4% | — | — | |
| Colorado Rockies @ Arizona Diamondbacks | 9:41 PM | Eduardo Rodriguez | Zach Agnos | 1.02 | 16.1% | 45.5% | — | — | |
| Athletics @ Los Angeles Angels | 9:39 PM | José Soriano | Luis Severino | 0.98 | 13.7% | 41.0% | — | — | |
| Toronto Blue Jays @ New York Yankees | 7:06 PM | Carlos Rodón | Braydon Fisher | 1.18 | 12.8% | 39.2% | — | — |
| Pitcher | Team | Hand | Season K% | Recent IP | Season IP | K IP | Pitch Ct | Leash | Savant | Contact | HR Vuln | Quality | Flags / Notes |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Eduardo Rodriguez | Arizona Diamondbacks vs Colorado Rockies | L | 19.4% | 5.9 | 5.9 | 5.9 | 99 | normal | full | 40.50 | 59.50 | season+recent+savant+hand | - |
| Luis Severino | Athletics vs Los Angeles Angels | R | 21.9% | 5.9 | 5.4 | 6.0 | 99 | normal | full | 41.00 | 59.00 | season+recent+savant+hand | patient opponent BB% 9.6% |
| Spencer Strider | Atlanta Braves vs Miami Marlins | R | 26.5% | 4.7 | 4.7 | 5.3 | 79 | short | full | 71.50 | 28.50 | season+recent+savant+hand | recent leash 4.7 IP/start |
| Joey Cantillo | Cleveland Guardians vs Detroit Tigers | L | 19.1% | 5.0 | 5.0 | 5.0 | 84 | short | full | 51.00 | 49.00 | season+recent+savant+hand | recent leash 5.0 IP/start, patient opponent BB% 10.1% |
| Zach Agnos | Colorado Rockies vs Arizona Diamondbacks | R | 15.6% | 2.4 | - | 5.1 | 40 | short | full | 40.50 | 59.50 | season+recent+savant+hand | recent leash 2.4 IP/start |
| Casey Mize | Detroit Tigers vs Cleveland Guardians | R | 24.8% | 5.1 | 5.3 | 5.4 | 86 | short | full | 69.50 | 30.50 | season+recent+savant+hand | recent leash 5.1 IP/start, patient opponent BB% 11.6%, low-K contact opponent 19.7% |
| José Soriano | Los Angeles Angels vs Athletics | R | 25.5% | 5.3 | 5.9 | 6.0 | 89 | normal | full | 49.00 | 51.00 | season+recent+savant+hand | patient opponent BB% 9.7% |
| Sandy Alcantara | Miami Marlins vs Atlanta Braves | R | 17.8% | 5.6 | 6.3 | 6.2 | 94 | normal | full | 62.50 | 37.50 | season+recent+savant+hand | - |
| David Peterson | New York Mets vs Washington Nationals | L | 23.7% | 3.9 | 8.6 | 6.5 | 65 | short | full | 43.50 | 56.50 | season+recent+savant+hand | recent leash 3.9 IP/start, patient opponent BB% 9.5% |
| Carlos Rodón | New York Yankees vs Toronto Blue Jays | L | 24.1% | 3.6 | 4.0 | 5.2 | 60 | short | full | 46.00 | 54.00 | season+recent+savant+hand | recent leash 3.6 IP/start, low-K contact opponent 18.7% |
| Braxton Ashcraft | Pittsburgh Pirates vs St. Louis Cardinals | R | 23.9% | 6.3 | 6.1 | 6.1 | 106 | deep | full | 72.00 | 28.00 | season+recent+savant+hand | - |
| Dustin May | St. Louis Cardinals vs Pittsburgh Pirates | R | 18.3% | 5.8 | 5.4 | 5.5 | 97 | normal | full | 41.50 | 58.50 | season+recent+savant+hand | patient opponent BB% 10.0% |
| Braydon Fisher | Toronto Blue Jays vs New York Yankees | R | 21.0% | 1.0 | 26.1 | 6.4 | 17 | short | full | 43.00 | 57.00 | season+recent+savant+hand | recent leash 1.0 IP/start, patient opponent BB% 12.0% |
| Cade Cavalli | Washington Nationals vs New York Mets | R | 24.9% | 5.3 | 4.6 | 4.8 | 89 | normal | full | 46.50 | 53.50 | season+recent+savant+hand | - |
Diagnostics only. These values are exposed for review and do not change recommendations yet.
| Pitcher | Side | Game | Line | Proj | Gap | Grade | Rec | Status | Leash | K IP | Pitch Ct | Quality | Gate Reason |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Braxton Ashcraft | Braxton Ashcraft Over | Pittsburgh Pirates @ St. Louis Cardinals | 17.5 | 20.0 | 2.5 | C | PASS | research | deep | 6.1 | 106 | season+recent+savant+hand | Game Script: Neutral run environment (1.00x) | Home pen fatigued (1.05x) | Away pen fatigued (1.05x) | Home back-to-back | Away back-to-back |
| Dustin May | Dustin May Under | Pittsburgh Pirates @ St. Louis Cardinals | 17.5 | 15.4 | -2.1 | C | PASS | research | normal | 5.5 | 97 | season+recent+savant+hand | Market status RESEARCH: Pitcher Outs held from actionable output -- research only |
| Luis Severino | Luis Severino Under | Athletics @ Los Angeles Angels | 17.5 | 16.7 | -0.8 | D | PASS | research | normal | 6.0 | 99 | season+recent+savant+hand | Weak Model Edge: Insufficient model edge — diff_pct 4.4% vs 10% min |
| Eduardo Rodriguez | Eduardo Rodriguez Under | Colorado Rockies @ Arizona Diamondbacks | 18.5 | 17.8 | -0.7 | D | PASS | research | normal | 5.9 | 99 | season+recent+savant+hand | Weak Model Edge: Insufficient model edge — diff_pct 3.8% vs 10% min |
| Sandy Alcantara | Sandy Alcantara Under | Atlanta Braves @ Miami Marlins | 18.5 | 18.4 | -0.1 | D | PASS | research | normal | 6.2 | 94 | season+recent+savant+hand | Weak Model Edge: Insufficient model edge — diff_pct 0.5% vs 10% min |
| Jose Soriano | Jose Soriano Under | Athletics @ Los Angeles Angels | 17.5 | 17.5 | -0.0 | D | PASS | research | normal | 6.0 | 89 | season+recent+savant+hand | Weak Model Edge: Insufficient model edge — diff_pct 0.2% vs 10% min |
QC summary only. Pitcher Outs remains research-only until the assessment gate is validated.
| Player | Game | Research Side | Component Proj | H | R | RBI | Current | Uncertainty | Support | Flags |
|---|---|---|---|---|---|---|---|---|---|---|
| Ildemaro Vargas | Colorado Rockies @ Arizona Diamondbacks | Over 1.5 | 2.93 | 1.36 | 0.72 | 0.85 | 2.90 / Over | 0.35 | season_games=41,exact_hrr_l10,pitcher_assessment | research_only_hrr_paused, lineup_not_confirmed |
| Shea Langeliers | Athletics @ Los Angeles Angels | Over 1.5 | 2.64 | 1.32 | 0.73 | 0.59 | 2.99 / Over | 0.35 | season_games=44,exact_hrr_l10,pitcher_assessment | research_only_hrr_paused, lineup_not_confirmed |
| CJ Abrams | New York Mets @ Washington Nationals | Over 1.5 | 2.63 | 1.11 | 0.65 | 0.87 | 2.61 / Over | 0.35 | season_games=49,exact_hrr_l10,pitcher_assessment | research_only_hrr_paused, lineup_not_confirmed |
| James Wood | New York Mets @ Washington Nationals | Over 1.5 | 2.54 | 0.99 | 0.86 | 0.69 | 2.47 / Over | 0.35 | season_games=50,exact_hrr_l10,pitcher_assessment | research_only_hrr_paused, lineup_not_confirmed |
| Ben Rice | Toronto Blue Jays @ New York Yankees | Over 1.5 | 2.50 | 1.03 | 0.75 | 0.71 | 2.70 / Over | 0.35 | season_games=45,exact_hrr_l10,pitcher_assessment | research_only_hrr_paused, lineup_not_confirmed |
| Matt Olson | Atlanta Braves @ Miami Marlins | Over 1.5 | 2.46 | 1.06 | 0.65 | 0.74 | 2.29 / Over | 0.35 | season_games=50,exact_hrr_l10,pitcher_assessment | research_only_hrr_paused, lineup_not_confirmed |
| Oneil Cruz | Pittsburgh Pirates @ St. Louis Cardinals | Over 1.5 | 2.39 | 1.10 | 0.66 | 0.64 | 2.80 / Over | 0.35 | season_games=47,exact_hrr_l10,pitcher_assessment | research_only_hrr_paused, lineup_not_confirmed |
| Jordan Walker | Pittsburgh Pirates @ St. Louis Cardinals | Over 1.5 | 2.38 | 1.10 | 0.64 | 0.64 | 2.31 / Over | 0.35 | season_games=47,exact_hrr_l10,pitcher_assessment | research_only_hrr_paused, lineup_not_confirmed |
| Nick Kurtz | Athletics @ Los Angeles Angels | Over 1.5 | 2.35 | 1.00 | 0.65 | 0.70 | 2.39 / Over | 0.35 | season_games=48,exact_hrr_l10,pitcher_assessment | research_only_hrr_paused, lineup_not_confirmed |
| Aaron Judge | Toronto Blue Jays @ New York Yankees | Over 1.5 | 2.26 | 0.93 | 0.75 | 0.58 | 2.36 / Over | 0.35 | season_games=50,exact_hrr_l10,pitcher_assessment | research_only_hrr_paused, lineup_not_confirmed |
| Otto Lopez | Atlanta Braves @ Miami Marlins | Over 1.5 | 2.26 | 1.35 | 0.54 | 0.37 | 2.07 / Over | 0.35 | season_games=49,exact_hrr_l10,pitcher_assessment | research_only_hrr_paused, lineup_not_confirmed |
| Daylen Lile | New York Mets @ Washington Nationals | Over 1.5 | 2.26 | 1.07 | 0.65 | 0.54 | 2.38 / Over | 0.35 | season_games=49,exact_hrr_l10,pitcher_assessment | research_only_hrr_paused, lineup_not_confirmed |
| Mickey Moniak | Colorado Rockies @ Arizona Diamondbacks | Over 1.5 | 2.26 | 1.01 | 0.53 | 0.72 | 2.29 / Over | 0.35 | season_games=42,exact_hrr_l10,pitcher_assessment | research_only_hrr_paused, lineup_not_confirmed |
| Cody Bellinger | Toronto Blue Jays @ New York Yankees | Over 1.5 | 2.22 | 0.99 | 0.59 | 0.64 | 2.55 / Over | 0.35 | season_games=49,exact_hrr_l10,pitcher_assessment | research_only_hrr_paused, lineup_not_confirmed |
| Brandon Lowe | Pittsburgh Pirates @ St. Louis Cardinals | Over 1.5 | 2.20 | 0.99 | 0.55 | 0.66 | 2.36 / Over | 0.35 | season_games=43,exact_hrr_l10,pitcher_assessment | research_only_hrr_paused, lineup_not_confirmed |
| Alec Burleson | Pittsburgh Pirates @ St. Louis Cardinals | Over 1.5 | 2.17 | 1.08 | 0.45 | 0.64 | 2.22 / Over | 0.35 | season_games=47,exact_hrr_l10,pitcher_assessment | research_only_hrr_paused, lineup_not_confirmed |
| Nolan Arenado | Colorado Rockies @ Arizona Diamondbacks | Over 1.5 | 2.14 | 0.94 | 0.59 | 0.60 | 2.10 / Over | 0.35 | season_games=45,exact_hrr_l10,pitcher_assessment | research_only_hrr_paused, lineup_not_confirmed |
| Xavier Edwards | Atlanta Braves @ Miami Marlins | Over 1.5 | 2.13 | 1.15 | 0.65 | 0.33 | 2.04 / Over | 0.35 | season_games=50,exact_hrr_l10,pitcher_assessment | research_only_hrr_paused, lineup_not_confirmed |
| Ozzie Albies | Atlanta Braves @ Miami Marlins | Over 1.5 | 2.10 | 1.04 | 0.58 | 0.48 | 2.13 / Over | 0.35 | season_games=50,exact_hrr_l10,pitcher_assessment | research_only_hrr_paused, lineup_not_confirmed |
| Liam Hicks | Atlanta Braves @ Miami Marlins | Over 1.5 | 2.10 | 0.91 | 0.41 | 0.78 | 2.11 / Over | 0.35 | season_games=47,exact_hrr_l10,pitcher_assessment | research_only_hrr_paused, lineup_not_confirmed |
| Riley Greene | Cleveland Guardians @ Detroit Tigers | Over 1.5 | 2.08 | 1.18 | 0.49 | 0.41 | 2.11 / Over | 0.35 | season_games=50,exact_hrr_l10,pitcher_assessment | research_only_hrr_paused, lineup_not_confirmed |
| Hunter Goodman | Colorado Rockies @ Arizona Diamondbacks | Over 1.5 | 2.03 | 0.92 | 0.66 | 0.45 | 1.86 / Over | 0.35 | season_games=45,exact_hrr_l10,pitcher_assessment | research_only_hrr_paused, lineup_not_confirmed |
| Nick Gonzales | Pittsburgh Pirates @ St. Louis Cardinals | Over 1.5 | 2.03 | 1.17 | 0.42 | 0.44 | 2.29 / Over | 0.35 | season_games=44,exact_hrr_l10,pitcher_assessment | research_only_hrr_paused, lineup_not_confirmed |
| JJ Wetherholt | Pittsburgh Pirates @ St. Louis Cardinals | Over 1.5 | 2.02 | 0.91 | 0.66 | 0.45 | 1.91 / Over | 0.35 | season_games=47,exact_hrr_l10,pitcher_assessment | research_only_hrr_paused, lineup_not_confirmed |
| Bryan Reynolds | Pittsburgh Pirates @ St. Louis Cardinals | Over 1.5 | 2.01 | 0.91 | 0.54 | 0.56 | 2.13 / Over | 0.35 | season_games=49,exact_hrr_l10,pitcher_assessment | research_only_hrr_paused, lineup_not_confirmed |
Diagnostics only. HRR remains paused; these component projections are not used for recommendations.
Every bet candidate — regardless of market — passes through the same six-check evaluation engine before appearing in the report. The engine produces a letter grade (A–F) and a recommendation tier. The top of the report shows your actionable plays; the full sweep table below it shows every candidate evaluated that day so you can audit the model's reasoning.
| Section | What it shows |
|---|---|
| V2 Ranked Plays | Grade A (Best Play) and Grade B (Good Add) candidates with full detail — check bar, key factors, risk flags, and contradiction flags |
| Full Candidate Sweep | Every evaluated bet in one compact table grouped by grade tier. Use this to understand why a play was filtered out. |
| Market Trust Tiers | Settled tracker performance by market, including season and recent windows used to support trust tiers. |
| Market Promotion Criteria | The concrete blockers a market must clear before moving from paused to research, watch, or trusted. |
| Diagnostic vs Recommendation Impact | Runtime source of truth for whether a signal is active, held, research-only, or configuration-needed. |
| Data Readiness | Input availability for the run, including lineups, weather, BVP, pitch-type data, market health, and player context. |
| Today's Slate | DraftKings reference lines for all games |
| Detail Sections | Market detail, diagnostics, and research sections below the V2 ranked plays. |
Each check returns PASS ✓, WARN !, FAIL ✗, or N/A –. Checks that need unavailable data degrade to N/A without penalising the grade. Two points for PASS, one for WARN or N/A, zero for FAIL.
| # | Check | What it evaluates | PASS condition |
|---|---|---|---|
| 1 | Baby Line | Line size, batter opportunity, run-line cushion | No baby-line flags, adequate PA opportunity, RL cushion ≥0.2 runs |
| 2 | Model Edge | Projection vs DK line (edge for game bets, DIFF% for props) | Edge ≥ threshold for the market type |
| 3 | Books Agree | DK implied direction + consensus lean % across all other books | DK agrees with model AND ≥55% of consensus books lean same side |
| 4 | Matchup | Park factor, weather, pitcher handedness vs lineup splits | Park/weather support the bet direction; platoon matchup neutral or favorable |
| 5 | Role / Injury | Confirmed lineup spot, injury flags, workload concerns | No injury flags; lineup confirmed in a favorable spot |
| 6 | Game Script | Combined park × weather run environment; run-line margin vs spread | Environment supports bet direction; RL margin cushion ≥0.5 runs |
| Grade | Score | Recommendation | When to bet |
|---|---|---|---|
| A | 10–12, 0 FAILs | BEST PLAY | Core play — all six checks aligned |
| B | 7–9, ≤1 FAIL | GOOD ADD | Strong play with minor caveats |
| C | 4–6 | PASS | Thin — skip unless you have a strong personal read |
| D | 2–3 or model edge FAIL | PASS | Do not bet — weak signal |
| F | 0–1 | HARD FADE | Consider betting the other side |
Hard override: a Model Edge FAIL always caps at Grade D regardless of other checks. Books Strongly Disagree caps at Grade C.
Final Signal combines the model grade with market trust. Top Pick remains the rare flagship rule, while other signals show whether a strong model read is trusted, watch-listed, research-only, or paused.
| Signal | Meaning |
|---|---|
| ⭐ TOP PICK | Existing Top Pick rule: Grade A + 100% book consensus + raw edge cushion. |
| ✅ Best Play | Trusted market with an A-grade model signal. |
| 👀 Strong Watch | Watch-stage market with an A-grade model signal; visible but not promoted to Top Pick. |
| 🔬 Research Lead | Research-stage market with an A-grade model signal; diagnostics only until validation clears. |
| ⛔ Paused Signal | Paused market with an A/B model signal; shown so the signal is not lost, but not actionable. |
Markets move from paused to research to watch to trusted only when settled evidence clears the criteria shown in Market Promotion Criteria. This keeps a market from getting stuck in research without a clear path forward.
| Stage | Recommendation behavior | Evidence needed |
|---|---|---|
| Trusted | Eligible for normal Best Play / Good Add output. | Continue passing season and recent market-health checks. |
| Watch | Visible as a valid signal, but not treated as fully trusted. | Season sample, positive P&L, recent sample, recent P&L, and Grade A performance. |
| Research | Scored and audited, but held from actionable output until validation clears. | Forward sample, positive season signal, recent win-rate support, and Grade A validation. |
| Paused | Shadow-only. No actionable recommendations. | A redesigned/component signal plus settled validation before returning to research. |
Raw edge is an uncalibrated ranking/debug value. The model grade and market stage should be read together.
When two recommended plays on the same game send opposing run-environment signals, a ⚡ contradiction flag is added to both plays. The bet is not removed — it is flagged so you can decide consciously whether the conflict makes sense.
| Pattern | Why it conflicts |
|---|---|
| Total Over + NRFI | High-run game expectation vs no runs in the 1st inning |
| Total Under + YRFI | Low-run game expectation vs runs scoring in the 1st |
| K Prop Over + YRFI | Pitcher dominates yet run scores early |
| Batter Overs + Total Under | Player production expected but game total is low |
| Outs Over + K Under (same SP) | Long outing projected but few strikeouts — projection inconsistency |
| Element | Meaning |
|---|---|
| Progress bar | Visual fill of monthly Odds API usage |
| used / total | Requests consumed vs. your monthly cap — each run costs ~1 request per game (combined market fetch) |
| Column | Meaning |
|---|---|
| Away ML / Home ML | DraftKings moneyline. −150 = bet $150 to win $100 • +130 = bet $100 to win $130 |
| Away RL / Home RL | Run line (always ±1.5) with its odds. −1.5(−110) = team must win by 2+ |
| Total | Over/Under line (e.g. O/U 8.5) |
| Con ML | Consensus moneyline direction — which side the majority of other books (FanDuel, BetMGM, Caesars, etc.) favor |
| Column | Meaning |
|---|---|
| Grade | V2 Framework grade (A–D) — driven by the six-check scoring system. A/B rows are highlighted. See Grade Scale below. |
| Type | Moneyline, Run Line, Total Over/Under, F5 ML, F5 Total |
| DK Odds | DraftKings price for that side |
| Implied | DK implied probability after vig removal |
| Model | Win probability our model calculates independently |
| Edge | Model% − Implied%. Min 15% to surface a game bet. |
| EV/$100 | Expected profit per $100 wagered: (win_prob × profit) − (loss_prob × $100) |
| Books | Number of consensus books with data for this market (ML/RL: directional lean; Total: line coverage). ≥3 = full check, 2 = capped at B/C, <2 = Check 3 fails. |
The model is asking one question: does DraftKings have the wrong price on this game?
It independently calculates how likely each team is to win by grading two things: how good is today's starting pitcher (xFIP vs league average) and how good is the opposing lineup (wRC+ vs league average). It adds a small home-field bonus, blends in the pitcher's last 5 starts (35% weight), then converts the result to a win probability. That probability is compared to what DraftKings implies. If the gap is ≥15%, it surfaces as a bet.
The model caps at ~68–70% win probability even in extreme mismatches — baseball is unpredictable and overconfident models lose money. Missing data automatically reduces confidence and bet sizing.
For every game the model builds a score differential from three inputs, then converts it to a win probability using a logistic (S-curve) function. Here is each step:
| Step | What it calculates | Data source | Weight |
|---|---|---|---|
| 1. Pitching edge | How much better or worse each SP is vs. the league-average xFIP of 4.20.home_pitch = (4.20 − home_xFIP) / 4.20pitch_edge = home_pitch − away_pitchA positive number means the home SP is above average relative to the away SP. |
FanGraphs xFIP (direct API call) — the best early-season ERA predictor because it removes defense and luck | 50% |
| 2. Offense edge | How much stronger or weaker each lineup is vs. the league-average wRC+ of 100.home_bat = (home_wRC+ − 100) / 100off_edge = home_bat − away_batA team with wRC+ 110 contributes +0.10; one at 90 contributes −0.10. |
MLB Stats API team batting — OPS converted to wRC+ via (OPS / 0.720) × 100 |
35% |
| 3. Home field | Fixed constant added to the home team's side every game. | Historical MLB average home-field effect | +4% |
| 4. Score diff | score_diff = 0.50 × pitch_edge + 0.35 × off_edge + 0.04 |
Combined signal driving the probability below | |
| 5. Win probability | home_win_prob = logistic(1.5 × score_diff)The logistic scale of 1.5 keeps the model from being overconfident — even an extreme mismatch caps out around 68–70%. |
Standard logistic sigmoid: 1 / (1 + e−x) |
|
Season stats are stable but slow to react. Recent form can signal a pitcher heating up or falling apart. The model blends both:
| Source | Weight | Stats blended |
|---|---|---|
| Season-to-date (FanGraphs) | 65% | xFIP, ERA, WHIP, K%, K/9 |
| Last 5 starts (MLB Stats API game logs) | 35% | ERA, WHIP, K%, K/9 — computed from raw game log totals |
xFIP is season-only (requires full-season HR data to normalize). ERA trend from recent starts adjusts the blended ERA implicitly.
For Over/Under bets the model projects a total runs scored using a similar framework:
| Step | Calculation |
|---|---|
| Base | 2 × 4.5 league-average runs/game = 9.0 |
| SP factor | Average of (home xFIP / 4.20) and (away xFIP / 4.20). Uses xFIP for consistency with the win-probability model — ERA includes luck and inflates totals for pitchers who got unlucky. |
| Offense factor | Average of (home wRC+ / 100) and (away wRC+ / 100). |
| Raw total | 9.0 × (0.60 × SP factor + 0.40 × off_factor) |
| Park adjustment | Raw total × venue run factor (e.g. Coors 1.32, Oracle Park 0.92). Blended at 60% weight: 0.40 × raw + 0.60 × park_adjusted |
Weather adjustments layer on top: headwind (N/NW/NE) × 0.93 on run total • tailwind (S/SW/SE) × 1.08 • cold (≤45°F) × 0.96
The Diagnostic vs Recommendation Impact table near the top of the report is the source of truth for whether each market or diagnostic layer affects recommendations, only gates recommendations, is research-only, or needs configuration. A signal being visible in diagnostics does not automatically mean it changes grades or picks.
| Usage type | Meaning |
|---|---|
| Active recommendation market | Trusted or watch-stage markets can appear in ranked plays according to the V2 framework and market trust rules. |
| Held / gated market | Research markets can be scored for audit, but are held from actionable output until validation clears. |
| Shadow research | Paused markets such as HRR component research emit diagnostics only; they do not create recommendations. |
| Diagnostic-only source | Context layers such as player splits and AI review explain the run but do not change thresholds, grades, or tracker saves unless a future validation PR explicitly activates them. |
| Component | Purpose | Recommendation impact today |
|---|---|---|
| PitcherAssessment | Starter-level hand, K%, innings, estimated pitch count, leash risk, Savant support, contact suppression, HR vulnerability, and data gaps. | Feeds pitcher and batter context. It is visible in diagnostics; individual fields affect picks only where the engine explicitly consumes them. |
| Pitcher Outs Research Gate | Shows pitcher outs candidates, projected gap, leash, expected K innings, pitch count, assessment quality, and hold reason. | Research/held. Pitcher Outs remains out of actionable output until the gate validates. |
| HRR Component Research | Breaks Batter H+R+RBI into hit, run, and RBI components with uncertainty and support notes. | Shadow-only. HRR remains paused and cannot become actionable from the old composite threshold. |
| Player Context | Home/away, day/night, recent-return, role, usage, and workload diagnostics. | Missing split data is neutral. Real role, injury, or workload concerns may surface as risk context. |
| AI Review | Optional post-run review of recent settled results and model behavior. | Advisory only. It cannot change picks, thresholds, tracker saves, or market status. |
Premium Pitcher List PLV/PLA enrichment is intentionally retired from daily output because no free live 2026 aggregate export is available. The optional loader remains for local experiments only. The replacement path is a free Savant-derived pitch-quality diagnostic layer.
| State | How to read it |
|---|---|
| check | The input loaded and is available to the relevant model or diagnostic section. |
| warn | The run can continue, but the affected layer is skipped, degraded, or waiting for later game-day data. |
| missing/unconfigured | The source is unavailable by configuration or feed state. Treat as a data gap, not an automatic bet risk. |
| diagnostic-only | The source is displayed for audit/QC but is not allowed to move recommendations yet. |
| Artifact | Use it for |
|---|---|
| Main HTML report | Daily human review: ranked plays, trust tiers, data readiness, diagnostics, and reference guide. |
| Full audit HTML | Candidate-level debugging across best plays, good adds, passes, hard fades, and research holds. |
| Audit JSON | Machine-readable evidence for settled review, AI review, market health, pitcher assessments, HR likelihood, HRR research, and pitcher outs gate candidates. |
| Performance report | Settled tracker analysis by grade, market, odds band, top-pick status, and prop/game grouping. |
| Tracker CSV | Single source for settled W/L/P, units, grades, bet type, final signal, and historical performance windows. |
| Column | Meaning |
|---|---|
| Away SP / Home SP | Probable starter name (or TBD if not yet announced) |
| NRFI Score | Composite score out of 10. ≥7.7 = PLAY. SP quality (40%) blends xFIP + xwOBA allowed when Savant data is available; K-rate (35%); team offense (25%) |
| Label | Edge Required | Suggested Unit Size |
|---|---|---|
| FULL | ≥20% | Full unit |
| HALF | ≥15% | Half unit |
| QRTR | ≥15% | Quarter unit (data quality cap) |
| (none) | <15% | No bet — below threshold |
| Label | What it means |
|---|---|
| HIGH | Both pitchers and both offenses have full stat profiles |
| MED | One or more data sources are missing or incomplete |
| LOW | Model running mostly on league averages — proceed with caution |
| Term | Definition |
|---|---|
| xFIP | Expected Fielding Independent Pitching — ERA predictor that strips out defense and luck. Lower = better pitcher. League avg ~4.20 |
| wRC+ | Weighted Runs Created Plus — offensive quality. 100 = league average. 115+ = above average. Estimated from team OPS via MLB Stats API |
| Recent form | Last 5 starts blended at 35% weight, season stats at 65% |
| Park factor | Venue run/HR factor applied to expected total. Coors Field ~1.32, Oracle Park ~0.92 |
| Edge | Model win probability minus the book's implied probability (after vig removal) |
| EV/$100 | Expected value: (win_prob × profit) − (loss_prob × stake) |
| F5 bets | First 5 innings — pitching weight raised to 65% (starters matter more), scaled to 4.5/9.0 IP |
| DK note | The "Bet on DK" button opens DraftKings' MLB section. Game-specific deep links require DK's partner event ID, not included in the free Odds API tier |
Disclaimer: For informational and research purposes only. Bet responsibly. Always verify probable pitchers and lineups before placing any bet. Past model performance does not guarantee future results.