Why Most People Mess Up Small-Sample NL West Matchup Analysis

You pull the last 10 games between the Padres and Dodgers, run some basic stats, and think you know what's happening. That's where it goes wrong every single time. The sample size is too small for traditional metrics to mean much, and most of the numbers you'll find on baseball-reference or fanGraphs are smoothed averages that flatten out the actual story. I've spent years building out matchup models for National League West series, and this particular rivalry keeps tripping people up because the game states are so volatile. Here's how I actually approach it. First, you need to grab the raw play-by-play data. Statcast-level detail matters here. You're not looking for team batting averages over ten games. You're looking for exit velocity distributions, chase rates by pitcher, and which batters are actually making contact against the specific pitchers they're facing in those games. The discrepancy between what the box score says and what actually happened in at least three of those ten matchups was striking enough that I stopped trusting surface stats for this series entirely. The methodology I use starts with isolating each individual game state. Not the final score. The actual sequence of events. I pull pitch-level data from the Baseball Savant API or a similar source, then filter it down to only the games between these two teams. From there, I build two separate datasets: one for every at-bat the Padres had against Dodgers pitching, and one for every at-bat the Dodgers had against Padres pitching. Then I cross-reference them against the actual pitchers who took the mound, not just the team labels.

Here's the part nobody does: I calculate leverage index for each plate appearance within those games. A two-run homer in a rinse-and-repeat situation tells you nothing about actual competitive dynamics. A strikeout with the bases loaded in the seventh inning of a one-run game is a data point that actually moves the needle. Most analysts skip this step and end up with conclusions that sound good but don't predict anything. I encountered a specific problem last season when analyzing a ten-game stretch where the surface stats suggested the Padres' offense was completely dominant against Dodgers pitching. Exit velocities were high. Walk rates were up. But when I broke it down by pitcher identity, two Dodgers starters had taken the ball in three of those ten games combined, and the Padres had faced a heavy concentration of relief pitching. The narrative the raw numbers created was wrong. The workaround was filtering by starter versus reliever appearances and weighting the data by quality of opposition rather than treating every plate appearance as equal. That adjustment shifted the entire read on that series. The tools you need are straightforward. If you're doing this manually, start with MLB Gameday XML files or the Statcast API. For the actual analysis, Python with pandas handles the data wrangling. I use matplotlib for visualization and scipy for the statistical tests. A lot of people try to do this in Excel and it works for small samples, but it gets messy fast when you're breaking down individual pitcher matchups across ten games with varying ballparks and weather conditions.

There are counter-intuitive things you'll notice when you actually dig into this. The Dodgers' pitching depth shows up differently in a ten-game sample than over a full season. Their bullpen tends to regress toward the mean faster than their rotation, which means if you're evaluating recent performance, the starting pitching matchups carry more signal than the relief appearances. Meanwhile, the Padres' smaller payroll means their roster turnover is higher, so player identity matters more. A batter who performed well in games 1 through 4 might have been replaced by someone with a completely different split profile by game 7. Tracking roster changes mid-sample is essential. Another thing that catches people: park factors. Dodger Stadium and Petco Park produce opposite environments. If the ten games aren't split evenly between the two venues, your raw offensive numbers are going to be skewed. I adjust everything back to a neutral park context before drawing conclusions. A .312 batting average in Petco means something different than a .312 batting average in Los Angeles. Failing to account for this is the single most common error I see in matchup analyses. For the actual download and data pipeline, I keep a script repository on GitHub that handles the Statcast API requests, filters for specific team matchups, applies park adjustments, and outputs the cleaned dataset in CSV format. The code itself is fairly standard pandas work. The value is in the filtering logic and the adjustment formulas, which I've refined over several seasons of running these analyses. You can find it by searching for my baseball analysis scripts repo. It's open source and free to use.

Get the Full Details

Analyzing Player Stats from the Dodgers vs Padres Match: Key Takeaways ...
Analyzing Player Stats from the Dodgers vs Padres Match: Key Takeaways ...

The limitations are real and worth stating upfront. A ten-game sample between two specific teams will always have noise. Even with all the adjustments I apply, you're working with roughly 80 to 100 total plate appearances per team. That's not enough to establish genuine skill differences. What this analysis is useful for is identifying trends and anomalies, not predicting outcomes. If you're looking for betting edges or prediction models, this approach alone won't get you there. You'd need to layer in broader season-long data, weather models, and lineup projection systems. The ten-game breakdown is a diagnostic tool, not a crystal ball. Another bottleneck is the delay in Statcast data availability. Real-time access usually requires a paid subscription or a delay of several hours after game completion. If you're trying to do this analysis during a live series, you'll be working with incomplete data. I've adjusted my workflow to pull the data overnight and run the analysis in the morning, which gives me a clean snapshot but removes the ability to react to in-series changes. For anyone serious about this kind of matchup work, I'd also recommend supplementing the quantitative analysis with video review. Numbers can tell you that a Padres hitter had a .450 expected batting average against a particular Dodgers pitcher, but they won't tell you why. Sometimes it's a mechanical adjustment. Sometimes it's a pitch location trend. Watching ten minutes of actual footage after the numbers come in usually explains at least part of what the data is showing.

The bottom line is that analyzing the last ten games between the Padres and Dodgers is more nuanced than running a spreadsheet and calling it a day. The methodology matters. The adjustments matter. And understanding what the data can and can't tell you matters most. I've seen too many people treat small-sample matchup stats as definitive when they're really just a starting point for deeper investigation.