Dashboard
Latest report + tracker overview
Daily Bet Research Report β Monday, September 21, 2026
Start: 11:10 ET | End: 11:17 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: 12 scheduled / 4 bookable Β· 4 analysed Β· 26 sources Β· Playbooks: MLB, NFL Β· Verified at 11:10 ET
Section 1: Verification
Verified against statsapi schedule (MLB) and ESPN core events (NFL, NHL) at 11:10 ET β 12 games scheduled.
- MLB β 3 games. All three are series openers. Probable pitchers confirmed from
statsapiprobablePitcherand cross-checked against Baseball Savant's 2026 qualified-pitcher leaderboard (H3 second source) for Yesavage, Baz, Matthews and Tidwell; for River Ryan and DJ Herz the second source wasstatsapicareer stats. - NFL β 1 game. NYG @ LAR, Week 2 Monday nighter at SoFi.
- NHL β 8 games, all
season.type: 1(preseason). DraftKings returnscount: 0on the ESPN odds endpoint for these β tested on two of them (NYR @ NJ, COL @ WPG). They are not on the board, so they are not bookable and were not analysed. Details in Research Limitations.
Bookable slate is therefore 4 games, and all 4 were analysed.
Section 2: Game Analysis
| Sport | Game | Time (ET) | DK Line | Note | Play? |
|---|---|---|---|---|---|
| MLB | TOR @ BAL | 6:35 PM | BAL -111 / TOR -108 Β· O-U 7.5 | Yesavage xERA 3.38 vs Baz 4.18 β an 0.80-run expected-ERA gap priced as a coin flip. | #3 |
| MLB | WSH @ DET | 6:40 PM | DET -156 Β· O-U 8.0 | River Ryan has 4 career MLB starts, 20.1 career IP and no 2026 MLB innings β and Detroit is -156. | #1 |
| NFL | NYG @ LAR | 8:15 PM | LAR -8.5 (-110) Β· O-U 48.5 | Week 1: Giants 28 points on 395 yards, Rams 7 on 290 β and the Rams are laying 7 to 8.5. | #2 |
| MLB | MIN @ SF | 9:45 PM | MIN -117 / SF -103 Β· O-U 8.0 | Minnesota's leverage arms didn't pitch last night β starter Bailey Ober took the save in an 8-0 win. | #4 |
| NHL | PHI @ WSH (Hershey) | 7:00 PM | β | Preseason, DK returns no price. | No β not priced |
| NHL | DET @ CBJ | 7:00 PM | β | Preseason, DK returns no price. | No β not priced |
| NHL | BUF @ PIT | 7:00 PM | β | Preseason, DK returns no price. | No β not priced |
| NHL | NYR @ NJ | 7:00 PM | β | Odds endpoint returned count: 0 (verified this run). |
No β not priced |
| NHL | OTT @ MTL (Trois-RiviΓ¨res) | 7:00 PM | β | Preseason, DK returns no price. | No β not priced |
| NHL | COL @ WPG | 8:00 PM | β | Odds endpoint returned count: 0 (verified this run). |
No β not priced |
| NHL | MIN @ CHI | 8:00 PM | β | Preseason, DK returns no price. | No β not priced |
| NHL | STL @ DAL | 8:00 PM | β | Preseason, DK returns no price. | No β not priced |
Unanalysed: 8 of 12. All eight are NHL preseason. Two were confirmed unpriced by direct odds fetch; the other six were not individually fetched, and I am not claiming otherwise. Separately, the NHL playbook is a stub marked "NOT YET BUILT", and preseason goalie assignments are not published at 11:10 AM β so even a priced preseason game would have failed the confirmed-goalie requirement. Nothing was skipped for convenience.
Section 3: Today's Plays
| # | Play | Sport | Market | Odds | Confidence | Calibrated | Edge % |
|---|---|---|---|---|---|---|---|
| 1 | Washington Nationals +1.5 | MLB | Spread | 1.59 | 64% | 61% | β1.9% |
| 2 | New York Giants +8.5 | NFL | Spread | 1.90 | 57% | 53% | +0.4% |
| 3 | Toronto Blue Jays ML | MLB | Moneyline | 1.92 | 56% | 52% | β0.1% |
| 4 | Minnesota Twins ML | MLB | Moneyline | 1.85 | 55% | 51% | β3.1% |
Negative-edge flags: #1 (β1.9%), #3 (β0.1%) and #4 (β3.1%) all price above my calibrated confidence. Only #2 clears its own price, and by 0.4 points β which is noise, not an edge. This is a four-game bookable board with no soft spot on it; treat the whole card as thin and read Section 4 before staking anything.
All prices DraftKings, from the ESPN core odds endpoint. One pricing conflict to check before betting β see #2.
Section 4: Reasoning
#1 β Washington Nationals +1.5 (1.59)
This is the highest-probability ticket on the board, and the ranking rule is calibrated confidence, so it leads β but its rank comes mostly from run-line mechanics, not from an informational edge, and I want that stated plainly. The substantive case is the Detroit starter. River Ryan's entire MLB career is 4 starts and 20.1 innings (1.33 ERA, 9 walks, 295 pitches), all with the Dodgers, and statsapi returned no 2026 season split for him at all β he is effectively making a comeback start. MLB playbook H4 blocks a play on a starter with fewer than 3 career starts; Ryan has 4, so H4 does not bind, but H4's own carve-out is that a play built against that starter's inexperience is the legitimate use of the situation, and that is exactly this. Detroit is nonetheless priced -156, roughly a 61% favourite, over a Washington club with an identical 73-83 record. DJ Herz is no prize (career 19 GS, 4.16 ERA, 3.65 BB/9) but he is a known quantity with 88.2 career innings. Tier-1 supporting number: Comerica wind at first pitch is 6.1 m/s = 13.6 mph from 27Β°, below the 15 mph threshold, 62Β°F and overcast β no weather argument either way, and the playbook forbids guessing Comerica's centre-field bearing, so speed only. Line movement: the run line drifted from WSH +1.5 at -181 to -167, i.e. away from my side, which per Step 3 means sharp money is taking Detroit and I should discount accordingly β I have. Evidence tag [MODERATE] (Β§2 starting pitcher, Β§7 markets). The risk that beats me: River Ryan was a genuine prospect and a four-start 1.33 ERA is not nothing; if he throws five clean innings against a bad Washington lineup, Detroit wins by three and this loses. I also could not obtain xERA for either starter β neither reaches Savant's min=q cut β so the game's central matchup is the least-measured on the card. Source opened: statsapi.mlb.com/api/v1/people/689981/stats.
#2 β New York Giants +8.5 (1.90)
The only play on the board with a positive edge, and the case is the Β§2 fallback working as designed. Week 1: Giants 28 points on 395 yards; Rams 7 points on 290 yards. Turnover differential β the luck flag Β§2 exists to check β is NYG 0 (1 takeaway, 1 giveaway) and LAR β1 (1 takeaway, 2 giveaways), so the Rams' bad week was not turnover variance being unkind to them; it was a genuinely poor offensive performance, with Stafford 15/25 for 155 and an interception. The Rams are still laying between 7 and 8.5 at home, and playbook H4 caps home-field at 2.0 points, so the market is rating Los Angeles roughly 5.5β6.5 points better on neutral ground off that evidence. Key numbers matter here [STRONG]: +8.5 sits on the far side of 7, and ~7β9% of NFL margins land exactly on 7. H1 check: presumptive starters only β Jaxson Dart (23/29, 230, 3 TD in Week 1) and Matthew Stafford β no injury feed available today; the ESPN summary endpoint returned ten Questionable designations all dated 19β23 August, stale preseason tags with zero Out or Doubtful entries and no quarterback among them. The H1(b) line-move block does not trigger: the spread moved 1.5 points (under the 2-point trigger), landed on rather than through 7, and the total moved only 1.0 (under the 1.5-each opposite-direction trigger). Line movement and a pricing conflict you must resolve: ESPN's two feeds disagree. The core odds endpoint reports current LAR -8.5 (-110), opened -8.5; the site scoreboard reports LAR -7 (-118) / NYG +7 (-102), opened -8.5, with the total up from 47.5 to 48.5. If DraftKings is actually at +7, this play loses its key-number value and I would not make it. Check the app before staking. Evidence tag [MODERATE] at best β n=1 game, which is a genuinely weak sample and I am not dressing it up as more. The risk that beats me: one week is one week, the market's preseason prior on the Rams' roster is far stronger than my two data points, and a 24-10 Rams win covers comfortably. Source opened: sports.core.api.espn.com/.../seasons/2026/types/2/teams/14/statistics.
#3 β Toronto Blue Jays ML (1.92)
The single largest measured starter gap on the card, priced as a coin flip. From Baseball Savant's 2026 expected-statistics leaderboard: Trey Yesavage β 3.65 ERA, 3.38 xERA, era_minus_xera_diff +0.271; Shane Baz β 4.11 ERA, 4.18 xERA, diff β0.07. That is an 0.80-run xERA separation in Toronto's favour, and both gaps sit well inside the playbook's 1.00-run regression flag, so neither pitcher is being flattered or punished by luck β the xERA gap here is not a regression signal, it is a straight statement that Yesavage has been the better pitcher on contact quality. Yet DraftKings has Baltimore -111 and Toronto -108. The market is paying for home field, which is the only thing Baltimore has: both clubs are eliminated (77-79 and 75-81), so Β§6's September lineup caveat cuts both ways and I am not leaning on records, per Β§6's explicit instruction. H4 satisfied: Yesavage faced 386 batters in 2026 and Baz 742, both far past the 3-start floor. Line movement is flat β the moneyline opened -108/-112 and sits -108/-111, so nothing has happened that I am late to. Evidence tag [MODERATE], per Β§2's honest limitation that xERA is the best obtainable estimator rather than the best one. Tier-1 weather number: Camden at 6:35 PM is 3.6 m/s = 8.1 mph from 33Β°, 71Β°F β wind is a non-factor, but MET Norway has rain arriving from roughly 8 PM ET and turning heavy overnight (0.9 mm at 00:00 UTC, 1.2 mm at 01:00 UTC). The risk that beats me: rain. A delay or a shortened game is a live possibility, and a postponement voids the bet rather than losing it β annoying, not costly β but a five-inning rain-shortened game hands more variance to the worse team. Source opened: baseballsavant.mlb.com/leaderboard/expected_statistics.
#4 β Minnesota Twins ML (1.85)
The under-priced factor is bullpen state, which Β§3 calls the slowest-moving input the market carries. Minnesota's leverage arms did not pitch last night. The Twins won 8-0 at the Angels and the save went to Bailey Ober β a starter absorbing bulk relief innings in a blowout, which is what a club does precisely to avoid using its late-inning group. San Francisco, by contrast, lost 1-3 at the Dodgers with reliever Sam Hentges taking the loss, so the Giants worked their late innings in a close game. That is a one-night edge, not the three-consecutive-day breakpoint Β§3 identifies as the documented decline threshold, so I am weighting it as support, not as the argument β [MODERATE], leaning weak. The starters are a genuine wash and I will not pretend otherwise: Zebby Matthews 4.74 ERA / 4.45 xERA (+0.289) against Blade Tidwell 4.56 / 4.48 (+0.076) β three hundredths of a run apart on expected ERA. Tier-1 weather number: Oracle Park at 9:45 PM is 4.8 m/s = 10.7 mph from 250Β°, 61Β°F and overcast. The playbook permits an out/in call at Wrigley only, so this is speed-only: no wind argument. Line movement is essentially nil (MIN -118 to -117). Given a 73-83 road team against a 64-92 home team priced near pick'em, the market is charging full freight for Oracle's home edge, and I think it is charging slightly too much β but only slightly, which is why this ranks last and why its edge is the worst on the card at β3.1%. The risk that beats me: I never obtained a three-day bullpen usage picture for either club β one night's decisions is a thin proxy β and Oracle genuinely is a hard place for a visiting offence. Source opened: statsapi.mlb.com/api/v1/schedule?date=2026-09-20&hydrate=decisions.
Sources
URLs actually fetched this run (26 successful, 1 failed):
MLB β statsapi
1. https://statsapi.mlb.com/api/v1/schedule?sportId=1&date=2026-09-21&hydrate=probablePitcher
2. https://statsapi.mlb.com/api/v1/schedule?sportId=1&date=2026-09-20&fields=... (final scores)
3. https://statsapi.mlb.com/api/v1/schedule?sportId=1&date=2026-09-20&hydrate=decisions
4. https://statsapi.mlb.com/api/v1/people/689981/stats?stats=season,career&group=pitching&season=2026 (River Ryan)
5. https://statsapi.mlb.com/api/v1/people/687792/stats?stats=season,career&group=pitching&season=2026 (DJ Herz)
6. https://statsapi.mlb.com/api/v1/people/689981?hydrate=stats(type=season,season=2026)&fields=...
7. https://statsapi.mlb.com/api/v1/game/824546/boxscore?fields=... (DET @ CWS)
8. https://statsapi.mlb.com/api/v1/game/823896/boxscore?fields=... (SF @ LAD)
MLB β pricing and metrics
9. https://sports.core.api.espn.com/v2/sports/baseball/leagues/mlb/events?dates=20260921&limit=100
10. https://sports.core.api.espn.com/v2/sports/baseball/leagues/mlb/events/401817027/competitions/401817027/odds (TOR @ BAL)
11. https://sports.core.api.espn.com/v2/sports/baseball/leagues/mlb/events/401817028/competitions/401817028/odds (WSH @ DET)
12. https://sports.core.api.espn.com/v2/sports/baseball/leagues/mlb/events/401817029/competitions/401817029/odds (MIN @ SF)
13. https://baseballsavant.mlb.com/leaderboard/expected_statistics?type=pitcher&year=2026&min=q&csv=true
NFL
14. https://sports.core.api.espn.com/v2/sports/football/leagues/nfl/events?dates=20260921&limit=100
15. https://sports.core.api.espn.com/v2/sports/football/leagues/nfl/events/401872947/competitions/401872947/odds
16. https://site.api.espn.com/apis/site/v2/sports/football/nfl/scoreboard?dates=20260921
17. https://site.api.espn.com/apis/site/v2/sports/football/nfl/summary?event=401872947
18. https://sports.core.api.espn.com/v2/sports/football/leagues/nfl/seasons/2026/types/2/teams/19/statistics (NYG)
19. https://sports.core.api.espn.com/v2/sports/football/leagues/nfl/seasons/2026/types/2/teams/14/statistics (LAR)
NHL
20. https://sports.core.api.espn.com/v2/sports/hockey/leagues/nhl/events?dates=20260921&limit=100
21. https://site.api.espn.com/apis/site/v2/sports/hockey/nhl/scoreboard?dates=20260921
22. https://sports.core.api.espn.com/v2/sports/hockey/leagues/nhl/events/401879645/competitions/401879645/odds (returned count: 0)
23. https://sports.core.api.espn.com/v2/sports/hockey/leagues/nhl/events/401878107/competitions/401878107/odds (returned count: 0)
Weather β MET Norway
24. https://api.met.no/weatherapi/locationforecast/2.0/compact?lat=37.7786&lon=-122.3893 (Oracle Park)
25. https://api.met.no/weatherapi/locationforecast/2.0/compact?lat=42.339&lon=-83.048 (Comerica Park)
26. https://api.met.no/weatherapi/locationforecast/2.0/compact?lat=39.284&lon=-76.6217&altitude=10 (Camden Yards)
Failed: https://sports.core.api.espn.com/v2/sports/baseball/leagues/mlb/events/401817296/competitions/401817296/odds β empty body. My error: I guessed the event ID before fetching the events list. Refetched correctly at #9β12.
Research limitations
The three counts, leading:
- Games analysed: 4 of 4 bookable (12 scheduled across all four sports). This is below the 8-game floor, and the floor was not met. The reason is the slate, not the effort: MLB has only 3 games on a Monday this late in September, the NFL has a single Monday-night game, the NBA is out of season, and all 8 NHL games are preseason with no DraftKings price. The floor's own escape clause β "or the whole bookable slate if fewer" β applies, and I analysed the whole bookable slate.
- Sources fetched: 26 successful, 1 failed. Above the 15 floor.
- Games where Tier-1 factors were unavailable: 0. Every analysed game carries at least one Tier-1 factor with a real number. Partial gaps are itemised below.
What I could not obtain:
- xERA for DJ Herz and River Ryan. Neither reaches Savant's
min=qqualified cut, so the WSH @ DET starting-pitcher matchup β the game carrying my top-ranked play β rests on career counting stats rather than the playbook's Β§2 metric. I substitutedstatsapicareer lines rather than guessing, and did not fall back on FIP, which Β§2 says adds nothing over ERA. - Three-day bullpen usage for any team. I attempted per-pitcher extraction from two
statsapiboxscores (DET @ CWS, SF @ LAD). Both saved to files as expected, but the pitching stats interleave game and season totals and the player names are not adjacent to the pitching objects, so no regex I tried paired a name to an innings count. This is not a truncation problem β the files were reachable and greppable. It is a JSON-shape problem, and the cheap workaround I used instead washydrate=decisionson yesterday's schedule, which yields winner/loser/save and therefore tells you which closers worked. That is a real but much coarser signal, and Β§3's documented three-consecutive-day breakpoint is not testable from it. Worth adding to the MLB playbook as a known shape problem with the boxscore endpoint. - Statcast park factors β not fetched. Β§4 says to use Statcast's multi-year figures and explicitly forbids inferring park effect from this season's scores. I did neither: I made no park-factor claim for Oracle, Comerica or Camden beyond the measured wind and temperature. The unverified source
baseballsavant.mlb.com/leaderboard/statcast-park-factorsremains untested. - Umpire assignments β not fetched, still unverified. Β§5 values them at 0.3β0.5 runs. No total was played today, so nothing turned on it.
- The NFL injury feed is confirmed thin, exactly as the playbook predicted.
site.api.espn.com/.../summary?event=401872947returned ten designations, allQuestionable, all dated 19β23 August β preseason tags never cleared β with zeroOutorDoubtfuland no quarterback among them. Puka Nacua (LAR) and Malik Nabers (NYG) both carry stale August Questionable flags; those are not current status and I did not treat them as such. H1 was satisfied via the presumptive-starter path. Official inactives drop ~6:45 PM ET for an 8:15 kickoff β after this run. Check late.
Freshness check: passed. All four analysed games were confirmed against the league schedule at 11:10 ET, and every pitcher, quarterback and price cited belongs to a game on tonight's board.
Playbooks: MLB (v1, 2026-09-16) and NFL (v1, 2026-09-20), both real and both read in full. No stub playbook was used β the NHL stub was not invoked, because no NHL game was analysed. No Hard Rule was violated: MLB H1 (no Coors) n/a, H2 (no Wrigley) n/a, H3 both starters double-sourced, H4 checked explicitly on Yesavage, Baz, Matthews, Tidwell and Ryan, H5 all four plays inside 1.50β2.10. NFL H1 satisfied via presumptive starters with the line-move block checked and not triggered, H2/H3 n/a (no total played; SoFi is roofed in any case), H4 home-field capped at 2.0 and cited in play #2, H5 in band.
Two things to treat with suspicion:
- ESPN's two feeds disagree on the NYG @ LAR spread β core says LAR -8.5 (-110), site scoreboard says LAR -7 (-118). I priced from the core endpoint per the playbook, but play #2's key-number argument depends on the 8.5 being real. Verify in the DraftKings app before staking.
- The calibration subtraction is still running on a mostly-prop sample with very little game-line history behind it. Four plays today, all at or below a 61% calibrated figure, all but one with a negative edge. That is a thin, efficiently-priced board, and "the ranking says #1" is not the same as "this is a good bet."
Cutoff: not hit. End stamp read at 11:17 ET, well inside the 11:50 limit.