Dashboard
Latest report + tracker overview
Daily Bet Research Report β Friday, September 25, 2026
Start: 11:00 ET | End: 11:09 ET
Bankroll: $60.23 | Stake (12.5%, one play): $7.53 Record: 3-1-0 (Main bets, main leg, since 9/14 reset) | Hit rate: 75.0% Slate: 17 games Β· 12 analysed Β· 34 sources Β· Playbooks: MLB (v1, 2026-09-16), NFL (v1, read, no games today) Β· Verified at 11:03 ET
Section 1 β Verification
Verified against statsapi.mlb.com/api/v1/schedule?sportId=1&date=2026-09-25 at 11:03 ET β 17 games, including two doubleheaders (CHC @ BOS at Fenway, BAL @ NYY at Yankee Stadium). Cross-checked against the ESPN core events feed for 20260925 (17 event IDs, matched one-to-one) and against mlb.com/probable-pitchers/2026-09-25 for starter confirmation.
No NFL, NBA or NHL games are on today's board β NFL Week 4 does not resume until Sunday, and the NBA and NHL regular seasons have not begun. Everything below is MLB. Both stub playbooks (nba.md, nhl.md) were left unread because neither sport is in play; no stub guidance was used.
H3 is the binding constraint today. MLB.com lists "TBD" for one or both starters in 11 of the 17 games β the last Friday of the regular season, with rotations being juggled around clinched and eliminated clubs. Only six games have both starters confirmed on two independent sources (statsapi + MLB.com). Every play below comes from those six; the other analysed games are no-plays on H3, stated as such.
Section 2 β Game Analysis
| Sport | Game | Time (ET) | DK Line | Note | Play? |
|---|---|---|---|---|---|
| MLB | CHC @ BOS (G1) | 1:05 PM | CHC -123 (1.81) / O-U 6.5 | Alec Gamboa has no row on Savant's qualified leaderboard and MLB.com lists both starters TBD. | No β starters unconfirmed |
| MLB | CHC @ BOS (G2) | 6:05 PM | CHC -115 (1.86) / O-U 6.5 | Peterson's ERAβxERA is +0.18 and Bello's β0.493, both neutral, and MLB.com still lists the nightcap TBD. | No β starters unconfirmed |
| MLB | PIT @ DET | 6:40 PM | PIT -110 (1.90) / O-U 8.0 | Could not obtain Jackson Jobe's xERA β he is absent from Savant at min=q β and Chandler's +0.111 gap says nothing. |
No β no read |
| MLB | TB @ PHI | 6:40 PM | PHI -174 (1.57) / O-U 6.5 | Peralta's 4.56 ERA sits 0.73 above his 3.83 xERA while SΓ‘nchez's 2.92 sits 0.47 below his 3.39, yet the line moved 18 cents toward Philadelphia. | #3 |
| MLB | CLE @ KC | 7:40 PM | CLE -142 (1.70) / O-U 7.5 | Cleveland's back-end bullpen worked a 1-0 win at Fenway last night and then flew to Kansas City. | #2 |
| MLB | COL @ CWS | 7:40 PM | CWS -230 (1.43) / O-U 8.0 | Sugano's 5.36 ERA is still 1.14 runs better than his 6.50 xERA, and Colorado's pen absorbed a 12-8 loss at Coors last night before flying to Chicago. | #4 |
| MLB | STL @ MIL | 7:40 PM | MIL -184 (1.54) / O-U 8.0 | McGreevy's 3.84 ERA is 1.48 runs below his 5.32 xERA β the largest gap among today's confirmed starters β and the line has not moved a cent. | #1 |
| MLB | TEX @ MIN | 8:10 PM | TEX -112 (1.89) / O-U 7.5 | MLB.com lists the Rangers starter TBD, so deGrom (+0.497 gap) is single-sourced and H3 fails. | No β starter single-sourced |
| MLB | HOU @ ATH | 9:40 PM | HOU -182 (1.54) / O-U 9.0 | Jacob Lopez's +2.006 ERAβxERA is the biggest buy signal on the slate, but MLB.com lists both starters TBD. | No β starters unconfirmed |
| MLB | ARI @ SD | 9:40 PM | SD -142 (1.70) / O-U 7.0 | Could not obtain the San Diego starter from either source; Pfaadt's β0.143 gap is neutral. | No β starter unknown |
| MLB | LAA @ SEA | 10:10 PM | SEA -135 (1.74) / O-U 7.0 | Detmers (+0.229) and Miller (+0.344) both run small positive gaps that cancel, and the under price already shortened from 1.89 to 1.83. | No β no edge |
| MLB | LAD @ SF | 10:15 PM | LAD -388 (1.25) / O-U 7.5 | Every market prices outside the 1.50β2.10 band and MLB.com lists the Dodgers starter TBD. | No β out of band |
Unanalysed: 5 of 17. BAL @ NYY (both games), NYM @ WSH, CIN @ TOR and ATL @ MIA were left out. All five have at least one starter listed TBD on both statsapi and MLB.com, and the three I attempted odds on (401817072 ATL @ MIA, 401817073 BAL @ NYY nightcap, 401817075 CIN @ TOR) returned count: 0 from the ESPN odds endpoint on two separate calls β no DraftKings market is posted for them yet. With neither a confirmed pitching matchup nor a price, there was nothing to analyse; run time went to the twelve games above instead.
Section 3 β Today's Plays
| # | Play | Sport | Market | Odds | Confidence | Calibrated | Edge % |
|---|---|---|---|---|---|---|---|
| 1 | Milwaukee Brewers | MLB | Moneyline | 1.54 | 67% | 64% | β0.9% |
| 2 | Kansas City Royals +1.5 | MLB | Spread | 1.67 | 63% | 60% | +0.1% |
| 3 | Tampa Bay Rays +1.5 | MLB | Spread | 1.60 | 62% | 59% | β3.5% |
| 4 | Chicago White Sox β1.5 | MLB | Spread | 1.94 | 50% | 46% | β5.5% |
Negative-edge flags: plays #1 (β0.9%), #3 (β3.5%) and #4 (β5.5%) carry negative edge against DraftKings' implied probability. #4 in particular is priced well through fair value β it is on the card because the playbook's run-line criterion is genuinely met, not because the number is good. #2 is the only play at or above the line, and +0.1% is inside the noise of my own confidence estimate.
All four prices are DraftKings, pulled from the ESPN core odds endpoint between 11:08 and 11:17 ET.
Section 4 β Reasoning
#1 β Milwaukee Brewers ML, 1.54 (STL @ MIL, 7:40 PM, American Family Field)
The case is Β§2 Starting Pitcher [MODERATE]: Michael McGreevy's 3.84 ERA sits 1.48 runs below his 5.32 xERA (era_minus_xera_diff = β1.479), the largest negative gap among today's two-source-confirmed starters and the second-largest on the whole board. Under the playbook's sign convention a negative gap means he has been lucky and regression is coming, and a 3.84 ERA is exactly the kind of tidy number that keeps a market honest about a 77-82 club. Robert Gasser's β0.404 gap is inside the noise band, so Milwaukee's own starter is roughly as advertised β the mispricing is one-sided. Per the Β§2 limitation I am not carrying this on xERA alone: the support is Β§3 Bullpen [MODERATE] β Milwaukee won 5-1 at Philadelphia last night, a four-run margin that keeps the back end out of it, while St. Louis lost 1-2 at Pittsburgh in exactly the one-run shape that empties a pen. Line movement: none at all, open and current both -184, which under the Step 3 rule is the good case β I am not late to a move, because there has been no move. The risk that beats me is Β§6: Milwaukee is 100-59 and long since clinched, and a last-Friday lineup full of rested regulars' replacements is a real possibility I cannot check at 11 AM, since lineups are not posted yet. Sources opened: Baseball Savant expected-statistics leaderboard (2026, pitchers, min=q) and the statsapi compact finals feed for 2026-09-24.
#2 β Kansas City Royals +1.5, 1.67 (CLE @ KC, 7:40 PM, Kauffman Stadium)
This one rests on Β§3 Bullpen [MODERATE], the playbook's designated under-priced factor, not on the starters β Gavin Williams (β0.12) and Noah Cameron (β0.143) are both inside the noise band and tell me nothing. Cleveland won 1-0 at Fenway last night, the single most bullpen-expensive game shape there is: a one-run lead from the middle innings on means the closer and the primary setup man both threw in leverage, and the club then travelled Boston to Kansas City overnight. Kansas City, by contrast, lost 9-1 to the White Sox β a blowout, which is the one loss shape that protects a bullpen, because the high-leverage arms never warm up. Line movement cuts against Cleveland's price, not against my side: the moneyline moved 11 cents toward Cleveland (-131 to -142) while the total dropped a half-run from 8.0 to 7.5, and taking +1.5 with the dog is precisely the Β§7 structure that a falling total supports β I need the game close, and the market is telling me it expects a close, low game. The risk is that a 1.5-run cushion against a genuinely better team is thin: 83-76 Cleveland is chasing a playoff spot against a 68-91 club with nothing to play for, and September call-up lineups (Β§6) make Kansas City's offence the least predictable variable on the card. Sources opened: ESPN core odds for event 401817079 and the statsapi compact finals feed for 2026-09-24.
#3 β Tampa Bay Rays +1.5, 1.60 (TB @ PHI, 6:40 PM, Citizens Bank Park)
Two Β§2 [MODERATE] signals point the same way and the market has moved against both. Freddy Peralta's 4.56 ERA sits 0.73 above his 3.83 xERA β a positive gap, meaning he has been unlucky and should regress better, and the public is fading him on a results line that overstates the damage. Cristopher SΓ‘nchez's glossy 2.92 ERA sits 0.47 below his 3.39 xERA, so the pitcher the price is built around is the luckier of the two. Neither gap clears the playbook's 1.00 flag threshold on its own, which is why this is #3 and not #1 β but they compound, and the price does not reflect it: Philadelphia moved 18 cents, -156 to -174, a large move toward the side my read fades. Under the Step 3 rule that is sharp money disagreeing with me, so I have taken the run line rather than the moneyline (which at 2.44 is out of band anyway) and lowered confidence accordingly. The total of 6.5 is the structural support β Β§7 says +1.5 with a dog needs a close, low-scoring game, and 6.5 is among the two lowest totals on the slate. The risk is straightforward and material: SΓ‘nchez is a legitimate front-line left-hander at home, and in a 6.5-run game a 3-1 or 2-0 Philadelphia win β the most ordinary result imaginable β beats this ticket. A 96-63 Tampa Bay club getting +1.5 is the structural reason to be here; the 18-cent move is the reason not to be. Sources opened: Baseball Savant expected-statistics leaderboard and ESPN core odds for event 401817078.
#4 β Chicago White Sox β1.5, 1.94 (COL @ CWS, 7:40 PM, Rate Field)
Β§7 permits a run line only when the case is offensive mismatch plus bullpen weakness, not starter quality β and that is exactly this game. Colorado is 57-102, the worst record in baseball, and last night played a 12-8 loss at Coors Field in which their bullpen absorbed a large share of twelve runs, then flew Denver to Chicago overnight; that is Β§3's bullpen-state read and Β§6's travel read pointing the same direction. The offensive mismatch is the Rockies' road bat against a 82-77 White Sox club at home. The pitching read supports rather than carries it: Tomoyuki Sugano's 5.36 ERA is 1.14 runs better than his 6.50 xERA (β1.137), so his already-poor line flatters him β [MODERATE], per Β§2's instruction never to tag the gap [STRONG]. Wind was checked and is a non-factor: MET Norway gives 4.3 m/s (9.6 mph) from 073Β° at Rate Field at first pitch, 62Β°F β below the 15 mph band where speed starts to matter, and I am deliberately making no out/in call because Β§4 verifies a field bearing for Wrigley only. Line movement is against me on the total (8.5 down to 8.0, with the under price shortening), which is part of why I have expressed this on the run line rather than the over. The risk that beats me is the β1.5 itself: Chicago at -230 is a heavy favourite, but heavy favourites win 2-1 as readily as 7-1, and at 46% calibrated against a 51.5% implied price this is the weakest play on the card by a clear margin. Sources opened: MET Norway locationforecast for 41.83/-87.634 and ESPN core odds for event 401817080.
Sources
Fetched this run (34 distinct URLs returning usable content):
Schedule and verification
- https://statsapi.mlb.com/api/v1/schedule?sportId=1&date=2026-09-25&hydrate=probablePitcher
- https://statsapi.mlb.com/api/v1/schedule?sportId=1&date=2026-09-25&hydrate=probablePitcher,venue
- https://statsapi.mlb.com/api/v1/schedule?sportId=1&startDate=2026-09-24&endDate=2026-09-24&fields=... (prior-day finals)
- https://statsapi.mlb.com/api/v1/people/search?names=Brendan Beck
- https://statsapi.mlb.com/api/v1/teams/158/roster?rosterType=active
- https://www.mlb.com/probable-pitchers/2026-09-25 (second starter source)
- https://sports.core.api.espn.com/v2/sports/baseball/leagues/mlb/events?dates=20260925&limit=100
- https://site.api.espn.com/apis/site/v2/sports/baseball/mlb/scoreboard?dates=20260925
Pitcher quality
- https://baseballsavant.mlb.com/leaderboard/expected_statistics?type=pitcher&year=2026&min=q&csv=true
Event identification (ESPN core, /events/{id}) β 401817080, 401817081, 401817082, 401817083, 401817084, 401817085, 401817086, 401817104, 401817088
Odds (ESPN core, /events/{id}/competitions/{id}/odds, DraftKings) β 401817074, 401817077, 401817078, 401817079, 401817080, 401817081, 401817082, 401817083, 401817084, 401817085, 401817086, 401817088, 401817104
Weather
- https://api.met.no/weatherapi/locationforecast/2.0/compact?lat=41.830&lon=-87.634 (Rate Field)
- https://api.met.no/weatherapi/locationforecast/2.0/compact?lat=44.9817&lon=-93.2776&altitude=256 (Target Field)
- https://api.met.no/weatherapi/locationforecast/2.0/compact?lat=38.5802&lon=-121.5132&altitude=9 (Sutter Health Park)
Research limitations
The three counts: 12 games analysed of 17 on the slate Β· 34 sources fetched Β· 3 games where a Tier-1 factor could not be obtained (PIT @ DET β Jackson Jobe absent from Savant at min=q; CHC @ BOS G1 β Alec Gamboa likewise absent; ARI @ SD β San Diego starter not named by either source). All three are stated explicitly in the Section 2 table rather than gestured at.
H3 blocked more of this slate than any other factor. MLB.com lists TBD for at least one starter in 11 of 17 games. That is a real feature of the last Friday of the regular season β clinched and eliminated clubs are juggling rotations and holding announcements β not a source failure, and the rule did its job: every play on the card has both starters on two independent feeds. It does mean the playable universe was six games, and four of them are on the card, which is a higher play-rate off a smaller pool than I would like.
Sources that genuinely failed:
- https://www.espn.com/mlb/probables/_/date/20260925 β ROBOTS_DISALLOWED. This was my intended second starter source; mlb.com/probable-pitchers substituted for it successfully and should be the default second source going forward.
- curl from the cloud container to statsapi.mlb.com β rejected by the egress proxy (connect_rejected). All statsapi access this run went through WebFetch instead. Worth noting in the playbook: direct shell HTTP is not available here.
- ESPN odds endpoints for 401817072 (ATL @ MIA), 401817073 (BAL @ NYY nightcap) and 401817075 (CIN @ TOR) returned count: 0 on two separate calls each β no DraftKings market posted at run time. Not truncation; a genuinely empty feed. The same endpoints worked for the other 13 events, so this is per-event, not an endpoint fault.
- MET Norway returned stale cached payloads on the first attempt for three of four parks β timeseries ending 2026-08-19, 2026-09-07, 2026-09-17 and 2026-09-21 depending on the URL, none reaching today. Adding an &altitude= parameter busted the cache and returned fresh data (timeseries 2026-09-25T15:00Z through 2026-10-05). This is a reusable fix and belongs in the MLB playbook Β§9 wind section. Kauffman Stadium wind was never obtained β I did not re-attempt it with the altitude parameter before the cutoff, which is why play #2 is a spread and not a total.
- The first statsapi schedule call returned garbled start times through the fetch summariser (two BAL @ NYY games five minutes apart); the second call with hydrate=probablePitcher,venue returned a clean, sorted list but dropped one game. Neither single call was trustworthy on its own β the 17-game count and the doubleheader structure were established by cross-referencing both against the ESPN event list. Worth flagging as a recurring hazard.
Factors unavailable:
- No per-game bullpen usage detail. I inferred bullpen state from prior-day final scores and margins (1-0 and one-run games imply heavy back-end use; 9-1 and 12-8 imply the opposite), which is the Β§3 mechanism applied at one remove. I did not obtain pitch counts, individual reliever appearances, or consecutive-day usage β the playbook's Β§3 checklist items 2, 3 and 4 are all unmet. This is the single biggest gap in today's work and it sits underneath plays #2 and #4 directly. statsapi boxscores would supply it; the fetch cost per game is what stopped me.
- Umpire assignments: not attempted. Still on the playbook's "not yet verified" list, and with no total on the card it would not have changed a play.
- Statcast park factors: not fetched. Still unverified in the playbook.
- Today's lineups are not posted at 11 AM, so Β§6's instruction to confirm the actual nine could not be followed for any game. This is a structural limit of an 11:00 run, not a failure β but on the last Friday of the season, with clinched and eliminated clubs on both sides of three of the four plays, it matters more than usual and is named as the risk on play #1.
Stub playbooks: none used. No NBA or NHL games exist today; nba.md and nhl.md were not read.
Cutoff: met. Research closed and the report was written well inside the 11:50 ET hard cutoff.