MLB matchup analysis
Cardinals vs Giants Prediction, Odds and Model Pick
Wednesday, September 9, 2026 at Oracle Park · 3:45 PM ET
Leo decision: Pass on Cardinals vs Giants
The case for St. Louis Cardinals
The case for San Francisco Giants
Why it is not official
Why the setup score is what it is
Why the price is what it is
Read the full model output
The combined Lab Rating did not clear the official threshold.
Final result
Cardinals 6, Giants 7
How the analysis held up
San Francisco Giants won. Leo's model favored the other side.
Andre Pallante (St. Louis Cardinals), the starter Leo's pitcher score favored, actually outpitched Blade Tidwell: 5.0 IP, 1 ER (1.80 ERA) against 4.0 IP, 4 ER (9.00 ERA). The edge held up.
The St. Louis Cardinals bullpen was flagged as elevated risk pregame (High risk). In relief it actually allowed 6 earned runs over 3.0 innings (18.00 ERA) — the risk read showed up.
The San Francisco Giants bullpen was flagged as elevated risk pregame (Tired). In relief it actually allowed 0 earned runs over 5.0 innings (0.00 ERA) — the risk read did not show up on the scoreboard tonight. Note: 2 of the runs charged to the San Francisco Giants pitching staff overall were unearned — not something the bullpen's stuff should be blamed for.
San Francisco Giants scored 7, 3.1 more than the 3.9 pregame projection.
Likely driver: the St. Louis Cardinals bullpen allowed 6 earned runs over 3.0 relief innings (18.00 ERA), which is exactly the risk flagged pregame, and the San Francisco Giants bullpen quietly shut the game down (0.00 ERA over 5.0 innings).
Game information
| Matchup | St. Louis Cardinals at San Francisco Giants |
|---|---|
| Date | Wednesday, September 9, 2026 |
| First pitch | 3:45 PM ET |
| Venue | Oracle Park |
| Starting pitchers | Andre Pallante vs Blade Tidwell |
| Weather | Game-time forecast: 93°F, 0% precipitation chance, 8 mph wind from NW. |
Starting pitcher matchup
Full Pitcher Matchup Tool →| Metric | Cardinals | Giants |
|---|---|---|
| Pitching plan | Traditional starter | Traditional starter |
| Expected innings | 5⅔ | 5 |
| Throws | R | R |
| Leo pitcher score (higher is better) | 68 | 54 |
| ERA (lower is better) | 3.45 | 4.82 |
| WHIP (lower is better) | 1.23 | 1.29 |
| K/9 (higher is better) | 6.3 | 7.3 |
| K-BB% (higher is better) | 9.5% | 9.1% |
| K% (higher is better) | 16.9% | 19.3% |
| BB% (lower is better) | 7.5% | 10.2% |
| BB/9 (lower is better) | 2.8 | 3.9 |
| HR/9 (lower is better) | 0.6 | 1.2 |
| Ground-ball rate | 62.4% | 36.2% |
| Fly-ball rate | 37.6% | 63.8% |
Pitcher edge: Leo gives Andre Pallante a 14-point edge over Blade Tidwell, driven mainly by BB/9 (2.8 vs 3.9) and ERA (3.45 vs 4.82).
How to read this: the scorecards above name the starters; every number lives in this table.
Strikeout Projections Full strikeout projections →
Same data source as the Pitcher Matchup Tool, where every starter on the slate is compared side by side.
Recent form
Full Stats page →Cardinals are 4-6 in their last 10 and averaging 5.5 runs per game over the last 15 days; Giants are 6-4 in their last 10 and averaging 5.5 runs per game over the last 15 days. On the season Cardinals carry the better run differential per game (-0.08 against -0.49).
| Metric | Cardinals | Giants |
|---|---|---|
| Last 10 | 4-6 | 6-4 |
| Last 10 by venue (away team on the road, home team at home) | 4-6 on the road | 7-3 at home |
| OPS, last 15 days | 0.731 | 0.760 |
| wOBA, last 15 days (hot/cold read) | 0.321 | 0.333 |
| Runs per game, last 15 days | 5.5 | 5.5 |
| K% last 15 days (lower is better) | 21.3% | 21.6% |
Last 15 days only. Hot and cold streaks for all 30 teams live on the Stats page.
30-day offense
Full offense tool →| Last 30 days | Cardinals | Giants |
|---|---|---|
| OPS | 0.721 (+0.019 vs szn) | 0.719 |
| Runs per game | 5.28 (+0.732 vs szn) | 4.55 (+0.354 vs szn) |
| wOBA (model offense input) | 0.318 (+0.007 vs szn) | 0.317 |
| K% (lower is better) | 22.2% (+1.5% vs szn) | 22.6% (+1.3% vs szn) |
Over the last 30 days the Cardinals have been the better offense, 0.318 wOBA to 0.317.
Season profile
Full Stats page →| Metric | Cardinals | Giants |
|---|---|---|
| Record | 72-74 | 61-85 |
| Run differential / game (team quality) | -0.08 | -0.49 |
| Runs scored / game (offense, season) | 4.54 | 4.20 |
| Runs allowed / game (defense, season, lower better) | 4.63 | 4.69 |
| Season OPS | 0.702 | 0.716 |
| K% season (lower is better) | 20.6% | 21.4% |
| OPS vs opposing hand (season) | 0.696 | 0.732 |
Season-long team quality, not recent form. Run differential and run environment come from the season standings; splits for all 30 teams live on the Stats page, including the run environment table.
The Map
Full interactive map →Every team on today's slate, on any two axes you pick. Cardinals and Giants are highlighted.
Bullpen matchup
Full Bullpen Fatigue Index →Risk is what the model actually uses: fatigue blended with how well the pen has pitched. High fatigue with high efficiency is a tired pen that is still getting outs.
| Metric | Cardinals | Giants |
|---|---|---|
| Fatigue | 8.1/10, Tired | 7.4/10, Tired |
| Efficiency | 3.8/10, Below average | 3.7/10, Below average |
| Combined risk | 8.7/10, High risk | 8.1/10, Tired |
| Relief innings, last 7 days | 33.0 | 27.0 |
| Back-to-back arms | 9 | 4 |
| 7-day ERA | 5.45 | 5.33 |
| 7-day WHIP | 1.61 | 1.70 |
Fatigue measures workload. Efficiency measures recent run prevention. Combined risk is what the moneyline and totals systems use.
Run total projection
Full Totals Projections →The model and market are close. Team totals remain research-only until their graded sample is established.
More games today
All matchups →Every Leo pick, graded in public
Free daily model card by email, or open today's full slate. Membership adds delivery before first pitch.
Model outputs are not guarantees. Leo provides analysis and education only. Every official pick remains visible on the Results page. 21+. If you or someone you know has a gambling problem, call 1-800-GAMBLER.