{"id":1199,"date":"2026-04-29T13:55:37","date_gmt":"2026-04-29T17:55:37","guid":{"rendered":"https:\/\/scootercam.net\/blog\/?p=1199"},"modified":"2026-04-29T13:55:38","modified_gmt":"2026-04-29T17:55:38","slug":"mlb-scout","status":"publish","type":"post","link":"https:\/\/scootercam.net\/blog\/mlb-scout\/","title":{"rendered":"MLB Scout"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Scootercam&#8217;s side hustle<\/h2>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">What Is This?<\/h2>\n\n\n\n<p>Now that Scootercam has conquered meteorology, let&#8217;s turn to sports gambling.<\/p>\n\n\n\n<p><a href=\"http:\/\/scootercam.net\/mlb-scout.php\" data-type=\"link\" data-id=\"http:\/\/scootercam.net\/mlb-scout.php\">MLB Scout <\/a>is a weekly game-planning tool built around one question: <strong>which Cubs and White Sox games this week give you the best conditions to place a win bet?<\/strong><\/p>\n\n\n\n<p>It doesn&#8217;t predict scores. It doesn&#8217;t factor in bullpens, defensive shifts, or which way the wind is blowing at Wrigley. What it does \u2014 and does well \u2014 is evaluate the <strong>opposing starting pitcher<\/strong> for each upcoming game and score that matchup on a 0\u2013100 scale. The idea is straightforward: a shaky starter on the mound for the other team means better conditions for a Cubs or Sox win. The tool surfaces those games so you&#8217;re not hunting through the schedule yourself.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Where the Data Comes From<\/h2>\n\n\n\n<p>All data comes from the <strong>official MLB Stats API<\/strong> at <code>statsapi.mlb.com<\/code> \u2014 the same free, public data source that powers many of the baseball apps and stat sites you already use. No third-party scrapers, no paid subscriptions. The API is queried by a background process that runs <strong>once per hour<\/strong> and saves everything to local files on the server. The page you&#8217;re reading never contacts the API directly \u2014 it reads from those saved files, so it loads fast regardless of traffic.<\/p>\n\n\n\n<p>The data window covers <strong>three weeks<\/strong>: last week&#8217;s completed games (with final scores), the current week (results for games already played, look-ahead for games still coming), and next week&#8217;s full schedule preview.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">The Matchup Score: How It&#8217;s Calculated<\/h2>\n\n\n\n<p>Each game receives a <strong>Matchup Score from 0 to 100<\/strong>, built entirely from the opposing starting pitcher&#8217;s season statistics. Higher is better \u2014 from a Cubs\/Sox perspective. A score of 80 means the opposing starter looks hittable. A score of 15 means you&#8217;re facing someone who&#8217;s been dealing all season.<\/p>\n\n\n\n<p>The score is built from four components:<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">ERA \u2014 40 points maximum<\/h3>\n\n\n\n<p><strong>Earned Run Average<\/strong> measures how many earned runs a pitcher allows per nine innings. It&#8217;s the oldest and most intuitive pitching stat in baseball: low ERA means a pitcher who keeps runs off the board; high ERA means they&#8217;ve been getting hit.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>ERA<\/th><th>Points<\/th><\/tr><\/thead><tbody><tr><td>\u2265 5.50<\/td><td>40 (full)<\/td><\/tr><tr><td>4.50<\/td><td>27<\/td><\/tr><tr><td>3.50<\/td><td>13<\/td><\/tr><tr><td>\u2264 2.50<\/td><td>0<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>A pitcher with a 5.50+ ERA has been allowing roughly a run more per game than league average \u2014 meaningful edge. Below 2.50 you&#8217;re looking at a legitimate ace; the ERA component scores zero.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">WHIP \u2014 30 points maximum<\/h3>\n\n\n\n<p><strong>Walks plus Hits per Inning Pitched<\/strong> is a direct measure of how many baserunners a pitcher allows. ERA can be influenced by defense and luck on balls in play; WHIP is cleaner \u2014 it captures how often the pitcher is putting men on base in the first place.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>WHIP<\/th><th>Points<\/th><\/tr><\/thead><tbody><tr><td>\u2265 1.55<\/td><td>30 (full)<\/td><\/tr><tr><td>1.35<\/td><td>18<\/td><\/tr><tr><td>1.10<\/td><td>6<\/td><\/tr><tr><td>\u2264 0.90<\/td><td>0<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>A WHIP above 1.55 means the pitcher is averaging more than 1.5 baserunners per inning \u2014 plenty of opportunity for Cubs\/Sox bats to do damage. A WHIP under 0.90 is elite-level command; the opposition is barely getting anyone on base.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">K\/9 \u2014 20 points maximum<\/h3>\n\n\n\n<p><strong>Strikeouts per Nine Innings<\/strong> is included because it captures something ERA and WHIP don&#8217;t: <strong>how often a pitcher ends at-bats himself<\/strong> versus putting the ball in play and trusting his defense. A high-strikeout pitcher is dangerous even when his ERA is middling \u2014 his stuff keeps hitters off-balance and limits traffic. A low-strikeout pitcher is more dependent on his fielders, which creates more opportunities for hits and mistakes.<\/p>\n\n\n\n<p>For this score, <strong>lower K\/9 is better<\/strong> for the hitting team. We want a pitcher who challenges hitters with stuff they can put in play.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>K\/9<\/th><th>Points<\/th><\/tr><\/thead><tbody><tr><td>\u2264 5.0<\/td><td>20 (full)<\/td><\/tr><tr><td>7.0<\/td><td>13<\/td><\/tr><tr><td>9.0<\/td><td>7<\/td><\/tr><tr><td>\u2265 11.0<\/td><td>0<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>A pitcher with a K\/9 under 5.0 is getting hit into play at every turn \u2014 that&#8217;s a lot of chances for runs. Above 11.0 you&#8217;re looking at someone elite who misses bats consistently; the Cubs\/Sox lineup will have to earn everything.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">Home Field \u2014 10 points<\/h3>\n\n\n\n<p>A flat <strong>10-point bonus<\/strong> when the Cubs or Sox are playing at home. Home field advantage in baseball is real, if modest: familiar surroundings, no travel fatigue, crowd support, and the tactical edge of batting last. It&#8217;s not a dramatic factor, but across a full season it matters, and it tips close matchup calls in the right direction.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">Score Tiers<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Score<\/th><th>Label<\/th><th>What It Means<\/th><\/tr><\/thead><tbody><tr><td>70\u2013100<\/td><td><strong>Strong look<\/strong><\/td><td>Favorable starter + likely home \u2014 worth serious consideration<\/td><\/tr><tr><td>58\u201369<\/td><td><strong>Favorable<\/strong><\/td><td>Clear edge, worth a look<\/td><\/tr><tr><td>42\u201357<\/td><td><strong>Neutral<\/strong><\/td><td>Mixed signals, no strong lean<\/td><\/tr><tr><td>30\u201341<\/td><td><strong>Tough<\/strong><\/td><td>Good starter, difficult matchup<\/td><\/tr><tr><td>0\u201329<\/td><td><strong>Pass<\/strong><\/td><td>Elite or near-elite pitcher \u2014 tough conditions<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Prediction Accuracy Tracking<\/h2>\n\n\n\n<p>For completed games in the <strong>By Team<\/strong> section, each card shows whether the pre-game score pointed in the right direction:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u2713<\/strong> \u2014 Score said favorable (\u226558) and the team won, <em>or<\/em> score said tough (\u226441) and the team lost. The model read the matchup correctly.<\/li>\n\n\n\n<li><strong>\u2717<\/strong> \u2014 Score said favorable and the team lost, <em>or<\/em> score said tough and the team won. The model missed.<\/li>\n\n\n\n<li><strong>~<\/strong> \u2014 Neutral score (42\u201357). No strong signal was given either way.<\/li>\n<\/ul>\n\n\n\n<p>This is a calibration tool, not a scorekeeping exercise. Baseball is full of upsets; a single \u2717 means nothing. What you&#8217;re looking for over a full season is whether the <strong>Favorable<\/strong> games win meaningfully more often than the <strong>Tough<\/strong> ones. If they do, the model is earning its place.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">The Snapshot System: Why Past Scores Don&#8217;t Change<\/h2>\n\n\n\n<p>This is where it gets a little technical, but it matters if you&#8217;re using the accuracy tracking seriously.<\/p>\n\n\n\n<p>The score for a given game is based on the opposing pitcher&#8217;s season statistics. The problem: a pitcher&#8217;s ERA in April looks different from his ERA in August. If we scored April games using August stats, we&#8217;d be grading predictions with information that wasn&#8217;t available at game time \u2014 that&#8217;s not fair and it makes the accuracy tracking meaningless.<\/p>\n\n\n\n<p>To solve this, the tool uses a <strong>pitcher snapshot cache<\/strong>. Here&#8217;s how it works:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Every hour, as long as a game is still upcoming, the system fetches the opposing pitcher&#8217;s current stats and saves them alongside the game in a private cache file.<\/li>\n\n\n\n<li>The moment a game goes <strong>final<\/strong>, those stats are <strong>locked<\/strong> \u2014 frozen permanently as the pre-game snapshot.<\/li>\n\n\n\n<li>From that point on, no matter how the pitcher&#8217;s season unfolds, the score for that completed game never changes.<\/li>\n<\/ul>\n\n\n\n<p>This means a March score reflects what that pitcher looked like in March. A September score reflects September. The accuracy tracking is apples-to-apples throughout the year.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">What the Tool Doesn&#8217;t Consider<\/h2>\n\n\n\n<p>Being honest about limitations makes the tool more useful, not less.<\/p>\n\n\n\n<p><strong>Bullpens.<\/strong> The score is entirely about the opposing starter. If the starter goes five solid innings and hands it to a shaky bullpen in the sixth, that&#8217;s not reflected. Bullpen quality is real and sometimes decisive.<\/p>\n\n\n\n<p><strong>Lineup matchups.<\/strong> A right-handed strikeout pitcher against a lineup full of lefties is a different proposition than the same pitcher against a balanced lineup. The tool doesn&#8217;t split by handedness.<\/p>\n\n\n\n<p><strong>Weather and park factors.<\/strong> A pitcher with a 4.20 ERA throwing into a 25 mph wind off Lake Michigan at Wrigley is a different matchup than the same pitcher on a calm night in an average park. The tool doesn&#8217;t adjust for park effects or game-day conditions.<\/p>\n\n\n\n<p><strong>Injury and roster news.<\/strong> If a starter scratches the morning of the game and the team sends out a spot starter, the cron running an hour later will pick up the change \u2014 but the window between the scratch and the next hourly refresh won&#8217;t reflect it.<\/p>\n\n\n\n<p><strong>The Cubs and White Sox themselves.<\/strong> The score is entirely about the <em>opponent&#8217;s<\/em> starter. A Favorable score with a shaky Cubs offense still requires the Cubs to actually hit. Team-level offensive stats are shown in the Division &amp; Team Stats section for context, but they don&#8217;t factor into the matchup score directly.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Reading the Full Page<\/h2>\n\n\n\n<p><strong>Division &amp; Team Stats<\/strong> \u2014 Live standings for the NL Central (Cubs) and AL Central (Sox), updated each hour. Includes W-L, PCT, GB, home record, away record, last 10, and current streak. Team stat chips show season-to-date offensive and pitching numbers for each club.<\/p>\n\n\n\n<p><strong>Three-Week Calendar<\/strong> \u2014 A grid view across last week, this week, and next week. Completed games show the final score (W\/L and run total). Upcoming games show the start time in Central Time. Score-tier tinting carries through \u2014 favorable matchups show in amber, tough ones in gray \u2014 so you can read the week at a glance without touching the ranked list.<\/p>\n\n\n\n<p><strong>Best Bets This Week<\/strong> \u2014 All Cubs and Sox games for the coming week ranked highest-to-lowest by Matchup Score, regardless of team. This is the primary decision-making view. If you only have time to look at one thing, this is it.<\/p>\n\n\n\n<p><strong>By Team<\/strong> \u2014 The same games in chronological order, split by team. Useful when you want to see each team&#8217;s full week in sequence rather than cross-team ranked. For completed games, shows the final score alongside the pre-game Matchup Score and the \u2713\/\u2717 accuracy indicator.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">A Note on Using This Responsibly<\/h2>\n\n\n\n<p>Matchup scoring is one input among many, not a system. No single-factor model beats baseball over a full season, and anyone who tells you otherwise is selling something. What this tool does well is <strong>narrow your attention<\/strong> \u2014 surfacing the two or three games a week where conditions look structurally favorable \u2014 so you can then apply your own baseball knowledge, lineup awareness, and judgment before deciding anything.<\/p>\n\n\n\n<p>Use it as a starting point. Dig deeper on the games that score well. And keep an eye on the accuracy tracking over time \u2014 that&#8217;s the only honest measure of whether the model is earning its place in your decision process.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p><em>Data: <a href=\"https:\/\/statsapi.mlb.com\/\">MLB Stats API<\/a> \u2014 free, public, no key required.<\/em> <em>Built for ScooterCam Worldwide LLC. Updated hourly during the season.<\/em><\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Scootercam&#8217;s side hustle What Is This? Now that Scootercam has conquered meteorology, let&#8217;s turn to sports gambling. MLB Scout is a weekly game-planning tool built around one question: which Cubs and White Sox games this week give you the best conditions to place a win bet? It doesn&#8217;t predict scores. It doesn&#8217;t factor in bullpens, &#8230; <a title=\"MLB Scout\" class=\"read-more\" href=\"https:\/\/scootercam.net\/blog\/mlb-scout\/\" aria-label=\"Read more about MLB Scout\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[46],"tags":[],"class_list":["post-1199","post","type-post","status-publish","format-standard","hentry","category-blog"],"_links":{"self":[{"href":"https:\/\/scootercam.net\/blog\/wp-json\/wp\/v2\/posts\/1199","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/scootercam.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/scootercam.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/scootercam.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/scootercam.net\/blog\/wp-json\/wp\/v2\/comments?post=1199"}],"version-history":[{"count":1,"href":"https:\/\/scootercam.net\/blog\/wp-json\/wp\/v2\/posts\/1199\/revisions"}],"predecessor-version":[{"id":1200,"href":"https:\/\/scootercam.net\/blog\/wp-json\/wp\/v2\/posts\/1199\/revisions\/1200"}],"wp:attachment":[{"href":"https:\/\/scootercam.net\/blog\/wp-json\/wp\/v2\/media?parent=1199"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/scootercam.net\/blog\/wp-json\/wp\/v2\/categories?post=1199"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/scootercam.net\/blog\/wp-json\/wp\/v2\/tags?post=1199"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}