| Record | Win% | P&L | ||
|---|---|---|---|---|
| Overall | 244W–243L–5P | 50% | -43.22 u | Last 14 days • 492 settled |
| Grade A | 40W–39L–0P | 51% | -9.46 u | |
| Grade B | 204W–204L–5P | 50% | -33.76 u |
| Record | Win% | P&L | ||
|---|---|---|---|---|
| Overall | 454W–439L–7P | 51% | -70.71 u | All-time • 900 settled |
| Grade A | 89W–70L–0P | 56% | -3.17 u | |
| Grade B | 365W–369L–7P | 50% | -67.54 u |
| Date | Type | Play | Line | Odds | Size | Result | P&L | Actual |
|---|---|---|---|---|---|---|---|---|
| 2026-05-10 | Run Line | Chicago White Sox | +1.5 | -156 | - | WIN | +0.641 | Final: Seattle Mariners 1, Chicago White |
| 2026-05-10 | K Prop | Cade Cavalli | 4.5 | -123 | - | LOSS | -1.000 | Cade Cavalli: 4.0 (line 4.5) |
| 2026-05-10 | K Prop | Davis Martin | 4.5 | -144 | - | WIN | +0.694 | Davis Martin: 9.0 (line 4.5) |
| 2026-05-10 | K Prop | Carlos Rodon | 4.5 | -124 | - | LOSS | -1.000 | Carlos Rodón: 4.0 (line 4.5) |
| 2026-05-10 | K Prop | Bryce Elder | 4.5 | -139 | - | WIN | +0.719 | Bryce Elder: 8.0 (line 4.5) |
| 2026-05-10 | K Prop | Jameson Taillon | 4.5 | -129 | - | LOSS | -1.000 | Jameson Taillon: 4.0 (line 4.5) |
| ✓ | Savant: 594 pitcher(s) with metrics |
| ✓ | Savant 1st-inn: 237 pitcher(s) with 1st-inning splits |
| ✓ | Team NRFI streaks: 30 teams | 30 with streak ≥5 |
| ✓ | Pitch-type matchup data: 30 team(s), 104 team×pitch-type combinations |
| ✓ | Handedness: 11 pitcher(s) | Team splits: 30 team(s) |
| ⚠ | Lineups not yet posted — using team tendencies & season stats (re-run after 4 PM for lineup refresh) |
| ✓ | BVP context: 12 roster team(s), 156 hitter(s) | 11 SP matchup(s), 547 career PA |
| ⚠ | Umpires not yet assigned — umpire K-rate adjustments skipped |
| ✓ | Rest data: 12 team(s) | Back-to-back: Toronto Blue Jays, San Francisco Giants, Tampa Bay Rays, Houston Astros, Baltimore Orioles, Seattle Mariners, Cleveland Guardians, Los Angeles Dodgers, Arizona Diamondbacks, New York Yankees, Los Angeles Angels, Texas Rangers |
| ✓ | Bullpen data: 12 team(s) | Fatigued pens: San Francisco Giants |
| ⚠ | Weather: 0 game(s) with meaningful conditions |
| ✓ | F5: 6 game(s) fetched | 6 with ML odds | 0 with total odds | 2 play(s) above 8% edge |
| ✓ | No-HR model: 6 game(s) scored | 0 above probability threshold | 0 with DK implied prob |
| ✓ | HR layers: batter Statcast 484 | batter bats 177 | batter hand splits 177 | pitcher HR splits 73 | batter pitch-type 440 | bullpen HR 31 |
| ✓ | HR model: 105 batter(s) scored | 6 game environment(s) scored | 0 strong/elite batter edge(s) |
| Matchup | Time (ET) | Away ML | Home ML | Away RL | Home RL | Total | Con ML | |
|---|---|---|---|---|---|---|---|---|
| Los Angeles Angels @ Cleveland Guardians | 6:11 PM | +144 | -175 | +1.5 (-149) | -1.5 (+123) | O/U 7.5 | HOME | Bet on DK |
| New York Yankees @ Baltimore Orioles | 6:36 PM | -156 | +129 | -1.5 (+104) | +1.5 (-126) | O/U 9.0 | AWAY | Bet on DK |
| Tampa Bay Rays @ Toronto Blue Jays | 7:08 PM | +109 | -131 | +1.5 (-207) | -1.5 (+169) | O/U 7.0 | HOME | Bet on DK |
| Arizona Diamondbacks @ Texas Rangers | 8:06 PM | +109 | -131 | +1.5 (-199) | -1.5 (+163) | O/U 7.5 | HOME | Bet on DK |
| Seattle Mariners @ Houston Astros | 8:11 PM | -143 | +119 | -1.5 (+119) | +1.5 (-143) | O/U 9.0 | AWAY | Bet on DK |
| San Francisco Giants @ Los Angeles Dodgers | 10:11 PM | +159 | -194 | +1.5 (-131) | -1.5 (+109) | O/U 9.0 | HOME | Bet on DK |
| Grade | Type | Side | Game | Time (ET) | Line | Odds | Best Book / Line | Edge/Diff | Checks ✓!✗– | Rec |
|---|---|---|---|---|---|---|---|---|---|---|
| A | K Prop | Peter Lambert Over | MAR@AST | 8:11 PM | 4.5 | -144 | FanDuel Over 4.5 -138 | best price | 45.7% | ✓✓✓✓–– | BEST PLAY |
| A | K Prop | Ryan Weathers Over | YAN@ORI | 6:36 PM | 5.5 | -136 | FanDuel Over 5.5 -130 | best price | 28.6% | ✓✓✓✓–– | BEST PLAY |
✓ PASS ! WARN ✗ FAIL – N/A | Checks order: Baby Line · Model Edge · Books · Matchup · Role · Game Script
| Grade | Game | Time (ET) | Type | Side | DK Odds | Implied | Model | Edge | EV/$100 | Books | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| C | Los Angeles Angels @ Cleveland Guardians | 6:11 PM | Total | Over 7.5 | -102 | 48.3% | 67.0% | +18.7% | $+32.66 | 9 | Bet on DK |
| Grade | Game | Time (ET) | Type | Side | DK Odds | Implied | Model | Edge | EV/$100 | Books | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| C | San Francisco Giants @ Los Angeles Dodgers (F5) | 10:11 PM | F5 ML | San Francisco Giants | +135 | 40.1% | 51.5% | +11.5% | $+21.13 | 8 | Bet on DK |
| C | Los Angeles Angels @ Cleveland Guardians (F5) | 6:11 PM | F5 ML | Los Angeles Angels | +130 | 41.1% | 49.8% | +8.7% | $+14.47 | 8 | Bet on DK |
No NRFI/YRFI model signals meet the score threshold today.
| Game | Time (ET) | SPs | NRFI / Min | YRFI / Min | Edge | Why not |
|---|---|---|---|---|---|---|
| Seattle Mariners @ Houston Astros | 8:11 PM | Peter Lambert / George Kirby | 5.6 / 7.7 | 4.4 / 7.7 | +9.0% | Score 5.6 < 7.7 threshold Home SP 1st-inn data thin (19 PA < 30 gate) |
| Arizona Diamondbacks @ Texas Rangers | 8:06 PM | Nathan Eovaldi / Michael Soroka | 5.3 / 7.7 | 4.7 / 7.7 | +0.3% | Score 5.3 < 7.7 threshold | Edge 0.3% < 8% required |
| San Francisco Giants @ Los Angeles Dodgers | 10:11 PM | Roki Sasaki / Trevor McDonald | 5.1 / 7.7 | 4.9 / 7.7 | +9.3% | Score 5.1 < 7.7 threshold Home SP 1st-inn data thin (24 PA < 30 gate) | Away SP 1st-inn data thin (4 PA < 30 gate) |
| Tampa Bay Rays @ Toronto Blue Jays | 7:08 PM | Kevin Gausman / Drew Rasmussen | 5.0 / 7.7 | 5.0 / 7.7 | -3.9% | Score 5.0 < 7.7 threshold | Edge -3.9% < 8% required Home SP 1st-inn data thin (29 PA < 30 gate) | Away SP 1st-inn data thin (27 PA < 30 gate) |
| Los Angeles Angels @ Cleveland Guardians | 6:11 PM | Joey Cantillo / TBD ⚠ Away SP | 5.0 / 7.7 | 5.0 / 7.7 | +0.9% | Score 5.0 < 7.7 threshold | Both SP required — one or more not found | Edge 0.9% < 8% required Away SP (TBD) stats unavailable — league avg used | Home SP 1st-inn data thin (29 PA < 30 gate) | Away SP 1st-inn data thin (0 PA < 30 gate) |
| New York Yankees @ Baltimore Orioles | 6:36 PM | Brandon Young / Ryan Weathers | 4.7 / 7.7 | 5.3 / 7.7 | +2.6% | Score 4.7 < 7.7 threshold | Edge 2.6% < 8% required Home SP 1st-inn data thin (24 PA < 30 gate) |
| Tier | Player | Team | Game | Time (ET) | Spot | Pitcher | Book | Odds | First HR | HR Chance | Market Implied | Edge | Chance Score |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Best HR Chance | Ben Rice | New York Yankees | New York Yankees @ Baltimore Orioles | 6:36 PM | - | Brandon Young (R) | theScore Bet | +250 | - | 18.0% | 26.4% | -8.4% | 99 |
| Best HR Chance | Aaron Judge | New York Yankees | New York Yankees @ Baltimore Orioles | 6:36 PM | - | Brandon Young (R) | theScore Bet | +240 | - | 18.0% | 27.2% | -9.2% | 99 |
| Best HR Chance | Mike Trout | Los Angeles Angels | Los Angeles Angels @ Cleveland Guardians | 6:11 PM | - | Joey Cantillo (L) | theScore Bet | +400 | - | 18.0% | 18.8% | -0.8% | 99 |
| Best HR Chance | Casey Schmitt | San Francisco Giants | San Francisco Giants @ Los Angeles Dodgers | 10:11 PM | - | Roki Sasaki (R) | theScore Bet | +525 | - | 18.0% | 15.0% | +3.0% | 99 |
| Strong HR Chance | Kazuma Okamoto | Toronto Blue Jays | Tampa Bay Rays @ Toronto Blue Jays | 7:08 PM | - | Drew Rasmussen (R) | theScore Bet | +400 | - | 18.0% | 18.8% | -0.8% | 99 |
| HR Chance Watchlist | Max Muncy | Los Angeles Dodgers | San Francisco Giants @ Los Angeles Dodgers | 10:11 PM | - | Trevor McDonald (R) | theScore Bet | +350 | - | 18.0% | 20.8% | -2.8% | 99 |
| Best HR Chance | Cody Bellinger | New York Yankees | New York Yankees @ Baltimore Orioles | 6:36 PM | - | Brandon Young (R) | theScore Bet | +525 | - | 17.9% | 15.0% | +3.0% | 99 |
| Best HR Chance | Junior Caminero | Tampa Bay Rays | Tampa Bay Rays @ Toronto Blue Jays | 7:08 PM | - | Kevin Gausman (R) | theScore Bet | +325 | - | 17.9% | 22.0% | -4.1% | 99 |
| Strong HR Chance | Yordan Alvarez | Houston Astros | Seattle Mariners @ Houston Astros | 8:11 PM | - | George Kirby (R) | theScore Bet | +275 | - | 17.9% | 24.6% | -6.7% | 99 |
| Best HR Chance | Pete Alonso | Baltimore Orioles | New York Yankees @ Baltimore Orioles | 6:36 PM | - | Ryan Weathers (L) | theScore Bet | +400 | - | 17.9% | 18.8% | -0.9% | 99 |
| Best HR Chance | Corey Seager | Texas Rangers | Arizona Diamondbacks @ Texas Rangers | 8:06 PM | - | Michael Soroka (R) | theScore Bet | +350 | - | 17.9% | 20.8% | -2.9% | 99 |
| Best HR Chance | Jesus Rodriguez | Seattle Mariners | San Francisco Giants @ Los Angeles Dodgers | 10:11 PM | - | Roki Sasaki (R) | theScore Bet | +1200 | - | 17.8% | 7.3% | +10.5% | 99 |
| Best HR Chance | Ketel Marte | Arizona Diamondbacks | Arizona Diamondbacks @ Texas Rangers | 8:06 PM | - | Nathan Eovaldi (R) | theScore Bet | +425 | - | 17.8% | 17.9% | -0.1% | 99 |
| Strong HR Chance | Ildemaro Vargas | Arizona Diamondbacks | Arizona Diamondbacks @ Texas Rangers | 8:06 PM | - | Nathan Eovaldi (R) | theScore Bet | +1000 | - | 17.8% | 8.6% | +9.2% | 99 |
| Strong HR Chance | Gunnar Henderson | Baltimore Orioles | New York Yankees @ Baltimore Orioles | 6:36 PM | - | Ryan Weathers (L) | theScore Bet | +700 | - | 17.7% | 11.7% | +6.0% | 98 |
| HR Chance Watchlist | Andy Pages | Los Angeles Dodgers | San Francisco Giants @ Los Angeles Dodgers | 10:11 PM | - | Trevor McDonald (R) | theScore Bet | +600 | - | 17.7% | 13.3% | +4.5% | 98 |
| Best HR Chance | Corbin Carroll | Arizona Diamondbacks | Arizona Diamondbacks @ Texas Rangers | 8:06 PM | - | Nathan Eovaldi (R) | theScore Bet | +425 | - | 17.7% | 17.9% | -0.2% | 98 |
| Best HR Chance | Jorge Soler | Los Angeles Angels | Los Angeles Angels @ Cleveland Guardians | 6:11 PM | - | Joey Cantillo (L) | theScore Bet | +700 | - | 17.5% | 11.7% | +5.8% | 97 |
| Best HR Chance | Chase DeLauter | Cleveland Guardians | Los Angeles Angels @ Cleveland Guardians | 6:11 PM | - | TBD | theScore Bet | +800 | - | 17.3% | 10.4% | +6.9% | 96 |
| Best HR Chance | Nolan Arenado | Arizona Diamondbacks | Arizona Diamondbacks @ Texas Rangers | 8:06 PM | - | Nathan Eovaldi (R) | theScore Bet | +800 | - | 17.1% | 10.4% | +6.6% | 95 |
| Tier | Game | Time (ET) | Score | P(1+ HR) | Fair Odds | Top Threats | Environment | Risks |
|---|---|---|---|---|---|---|---|---|
| Strong HR Environment | San Francisco Giants @ Los Angeles Dodgers | 10:11 PM | 100 | 89.0% | -812 | Casey Schmitt, Max Muncy, Jesus Rodriguez, Andy Pages | Dodger Stadium HR factor 0.97 | No-HR inverse support: P(no HR) 11.0% | - |
| Strong HR Environment | Arizona Diamondbacks @ Texas Rangers | 8:06 PM | 100 | 87.9% | -730 | Corey Seager, Ketel Marte, Ildemaro Vargas, Corbin Carroll | Globe Life Field HR factor 1.10 | No-HR inverse support: P(no HR) 12.1% | - |
| Strong HR Environment | New York Yankees @ Baltimore Orioles | 6:36 PM | 100 | 87.1% | -673 | Ben Rice, Aaron Judge, Cody Bellinger, Pete Alonso | Camden Yards HR factor 1.00 | No-HR inverse support: P(no HR) 12.9% | - |
| Strong HR Environment | Tampa Bay Rays @ Toronto Blue Jays | 7:08 PM | 100 | 86.1% | -617 | Kazuma Okamoto, Junior Caminero, Jonathan Aranda, Jesus Sanchez | Rogers Centre HR factor 0.96 | No-HR inverse support: P(no HR) 13.9% | - |
| Watchlist | Los Angeles Angels @ Cleveland Guardians | 6:11 PM | 100 | 85.3% | -582 | Mike Trout, Jorge Soler, Chase DeLauter, Jo Adell | Progressive Field HR factor 0.95 | - |
| Watchlist | Seattle Mariners @ Houston Astros | 8:11 PM | 95 | 80.4% | -411 | Yordan Alvarez, Christian Walker, Cal Raleigh, Julio Rodriguez | Unknown Venue HR factor 1.00 | - |
| Player | Game | Time (ET) | Odds | HR Chance | Why lower |
|---|---|---|---|---|---|
| Taylor Ward | New York Yankees @ Baltimore Orioles | 6:36 PM | +700 | 1.2% | Lineup not confirmed | Low season HR rate | Cold recent HR form |
| Matt Chapman | San Francisco Giants @ Los Angeles Dodgers | 10:11 PM | +700 | 1.2% | Lineup not confirmed | Low season HR rate | Weak batter split vs_rhp | Cold recent HR form |
| Steven Kwan | Los Angeles Angels @ Cleveland Guardians | 6:11 PM | +1600 | 1.3% | Lineup not confirmed | Low season HR rate | Pitcher season stats unavailable | Cold recent HR form |
| Cedric Mullins | Tampa Bay Rays @ Toronto Blue Jays | 7:08 PM | +600 | 2.1% | Lineup not confirmed | Low season HR rate | Weak batter split vs_rhp | Cold recent HR form |
| Cole Young | Seattle Mariners @ Houston Astros | 8:11 PM | +1000 | 2.1% | Lineup not confirmed | Pitcher has suppressed HRs | Cold recent HR form |
| Ernie Clement | Tampa Bay Rays @ Toronto Blue Jays | 7:08 PM | +1200 | 2.2% | Lineup not confirmed | Low season HR rate | Elite contact-quality suppressor |
| Jung Hoo Lee | San Francisco Giants @ Los Angeles Dodgers | 10:11 PM | +900 | 2.3% | Lineup not confirmed | Low season HR rate | Cold recent HR form |
| Randy Arozarena | Seattle Mariners @ Houston Astros | 8:11 PM | +700 | 2.3% | Lineup not confirmed | Pitcher has suppressed HRs |
| Geraldo Perdomo | Arizona Diamondbacks @ Texas Rangers | 8:06 PM | +900 | 2.4% | Lineup not confirmed | Low season HR rate | Thin batter pitch-type sample (6 PA) |
| Jose Altuve | Seattle Mariners @ Houston Astros | 8:11 PM | +800 | 2.7% | Lineup not confirmed | Pitcher has suppressed HRs | Elite contact-quality suppressor | Cold recent HR form |
| Game | Time (ET) | Home SP | Away SP | Park HR | P(No HR) | P(U 1.5) | DK Implied | Edge | V2 Result |
|---|---|---|---|---|---|---|---|---|---|
| Seattle Mariners @ Houston Astros | 8:11 PM | Peter Lambert | George Kirby | 1.00 | 19.6% | 51.5% | — | — | |
| Los Angeles Angels @ Cleveland Guardians | 6:11 PM | Joey Cantillo | None | 0.95 | 14.7% | 42.8% | — | — | |
| Tampa Bay Rays @ Toronto Blue Jays | 7:08 PM | Kevin Gausman | Drew Rasmussen | 0.96 | 13.9% | 41.4% | — | — | |
| New York Yankees @ Baltimore Orioles | 6:36 PM | Brandon Young | Ryan Weathers | 1.00 | 12.9% | 39.4% | — | — | |
| Arizona Diamondbacks @ Texas Rangers | 8:06 PM | Nathan Eovaldi | Michael Soroka | 1.10 | 12.1% | 37.6% | — | — | |
| San Francisco Giants @ Los Angeles Dodgers | 10:11 PM | Roki Sasaki | Trevor McDonald | 0.97 | 11.0% | 35.2% | — | — |
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. |
| Today's Slate | DraftKings reference lines for all games |
| Detail Sections | Game bets (with key factors, injury/weather notes) and NRFI — full signal detail 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.
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
| Factor | Status |
|---|---|
| Savant pitcher quality (xwOBA, xERA) | Integrated. SP quality in NRFI blends xFIP (60%) + xwOBA allowed (40%) when Savant data available. |
| Savant whiff% / put-away% | Integrated for K props. Primary projection driver when available (65% weight). |
| Opp pitcher contact quality for batter props | Integrated. Opposing pitcher xwOBA allowed adjusts batter projections (±up to 15%). |
| Lineup order / day-of lineup | Integrated for batter props (confirmed lineup spot + projected PA). Game-level model uses full-team season wRC+. |
| Factor | Status |
|---|---|
| Bullpen fatigue | Integrated (Session 16). Relief appearances over past 3 days tracked per team; tired pen (>2.7 RP/game avg) raises expected total via BULLPEN_WEIGHT (15%). Surfaced in Game Script check. |
| Rest days | Integrated (Session 16). Back-to-back teams receive a −1.5% win-probability penalty; well-rested teams receive a +1.0% bonus. Applied to full-game and F5 models. |
| Umpire K-rate | Integrated (Session 15). Static table of ~70 umpires with historical K/9 values. Wide-zone umps adjust K prop projections and NRFI scores up; tight-zone umps adjust down. Dampened ±12% cap. |
| Handedness / platoon splits | Integrated (Sessions 3 & 15). Opposing lineup wRC+ vs. SP hand sourced from MLB splits API. Platoon mismatch adjusts win probability ±2% per side (capped ±4% total). Surfaced in Matchup check. |
| Projection blend (regression to mean) | Integrated (Session 17). Stats regressed toward league average early in season: blend_w = IP ÷ 80 for pitchers, games ÷ 81 for teams. Prevents 5-IP ERA outliers from driving model in April. |
| Factor | Status |
|---|---|
| Batter vs. pitch-type matchup | Integrated. Savant team-vs-pitch-type xwOBA adjusts K prop projections and NRFI/YRFI scores when SP's primary pitch type is known. Opponent teams that struggle vs the SP's top pitch raise K over projections and NRFI scores. |
| Individual batter vs. pitcher H2H | Planned for a future phase. |
| Pre-season projection prior (Steamer/ZiPS) | Not integrated — projection endpoints not available. Regression-to-mean (blending toward league avg by IP) used as a practical substitute. |
| 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.