
It has been nearly three years since I publicly revealed a new offensive metric to the universe (okay, more like to the very specific section of the internet that follows me for Cubs prospect content). And in that time, I’ve relied heavily on BASH to alter the way I think about Cubs prospects during their ascension up the ladder to the Major Leagues.
But between my sporadic references to the metric on social media and my inability to produce minor league stats updated daily like in past years, I haven’t done a good job of allowing the public to use BASH in the same way that I use it.
So today, I’m doing a couple things:
- Re-explaining how BASH is calculated, using the primer I wrote a few years back as a starting point but including the updates that have occurred along the way.
- Providing the final BASH leaderboard for the 2025 Cubs minor league season, which includes numbers across the board: BASH, slash lines, “+” stats, and standard counting stats.
In the coming months, I will be providing a historic and complete BASH database dating back to the 2019 season. If a position player spent any time in the Cubs organization between 2019 and 2025, they have a line in the database. You can do things like compare Miguel Amaya’s sensational 2019 campaign with Moises Ballesteros’ 2025 season or find out what prospect that ultimately made the Majors put up the lowest single-season BASH. I’ll report back when this is complete!
Primer
Simply put, BASH measures the offensive value of a prospect.
Acronym: While technically BASH stands for Ballpark Adjusted Standardized Hitting, I’ll admit that a major factor in the four letters is the name itself. It’s undeniable that we are more compelled to say “Moises Ballesteros BASHed 130” rather than “Moises Ballesteros OPS’ed .875.”
Format: Much like many of the already-existing stats that feature a “+” in them, BASH is based on the fact that 100 is an exactly average offensive performer. A player putting up a BASH of 125 is 25% better than average and a guy BASHing 80 is 20% worse than average. Unlike wRC+ and more like OPS+ in terms of the numbers you’ll see, BASH will very rarely hover north of 140 outside of small sample sizes.
The aforementioned Miggy Amaya 2019 campaign is the best season we’ve seen according to BASH, and he logged a 136.
BASH > 130 = ELITE
BASH > 120 = GREAT
BASH > 110 = GOOD
BASH > 100 = ABOVE AVERAGE
BASH < 100 = BELOW AVERAGE
BASH < 90 = POOR
BASH < 80 = BAD
BASH < 70 = AWFUL
For additional context, and as it relates to using this stat as a way to properly evaluate a future Major League player, it appears that a prospect needs to post a BASH of greater than 125 to be considered a legitimate threat of being a good hitter in the bigs.
Run Values: This is where BASH most replicates wRC+. I use run values, much like what we see with wOBA run values, that are ultimately used to calculate wRC+. The basic idea here is that a walk, hit by pitch, single, double, triple, and home run all produce different values when it comes to the likelihood a team scores a run as a result of that way of getting on base. A player isn’t necessarily twice as likely to generate a run by hitting a double vs. a single. While a walk and a single both get a batter a single base, a walk can’t drive a base runner in from second.
As a part of BASH, run values are assigned to each hitting outcome.
League Adjustments: We have grown accustomed to league-adjusted statistics. It allows fans to compare offensive production at the big league level in 2025 to hitting numbers during the steroid era, dead ball era, and every year of baseball in between. An .800 OPS in each of those eras is not the same, so metrics like wRC+ and OPS+ have compared a player’s numbers to that of the rest of the league.
The same can be said for the various leagues throughout the minors. The Southern League (AA) carried a league OPS of .660 in 2025. The International League (AAA) rocked a .750 rate. Simply put, if a batter had an individual OPS of .750 for Knoxville, he was terrific. But if he did it for Iowa, he was merely average.
BASH takes those league-adjusted rates for every offensive number and incorporates them into the stat’s overall value — much like many of the already existing metrics.
Ballpark Factors: Shockingly, wRC+ at Fangraphs and OPS+ at Baseball Reference do not adjust offensive performance depending on the home ballpark of a minor leaguer. BASH does.
Each year, Baseball America publishes park factors for every affiliated minor league stadium. The factors for all four Cubs minor league affiliates in 2025 are posted in the table below. They play a big role in a player’s BASH score. A factor above 1.000 means the ballpark is hitter-friendly compared to other parks in their league, while a factor below 1.000 means the ballpark is pitcher-friendly.
| 2025 | Runs | HR | BABIP | LHH wOBA | RHH wOBA |
| Iowa | 1.045 | 1.083 | 1.020 | 0.994 | 1.045 |
| Knoxville | 0.947 | 0.843 | 0.976 | 1.006 | 0.938 |
| South Bend | 0.945 | 0.940 | 0.978 | 1.010 | 0.969 |
| Myrtle Beach | 1.044 | 0.842 | 1.012 | 1.012 | 0.993 |
Being the prospect follower that you are, you’re aware that year-in and year-out it’s much tougher hitting in South Bend than it is at Principal Park in Des Moines. In BASH, guys like Jefferson Rojas are rewarded for simply playing at that ballpark in 2025, while Jonathon Long gets clipped just a tad.
If Hayden Cantrelle put up identical numbers at both Knoxville and Iowa (he didn’t, of course), his BASH would be higher in Knoxville than at Iowa strictly because it was more impressive at the pitcher’s ballpark, even before accounting for league adjustments.
TLDR: It’s harder to hit in Knoxville and we should account for that.
Additionally, beginning in 2024, Ballpark Factors in the BASH formula have accounted for handedness. Four Winds Field in South Bend has proven to be a more difficult place to hit home runs for righties than lefties, so right-handed hitter Jefferson Rojas is given just the slightest bit more credit for his performance compared to left-handed hitter Edgar Alvarez.
Stolen Bases: When evaluating a player’s offensive production, it’s important to remember that hitting the baseball isn’t the only way to produce results. If Player A produces the exact same hitting stat line as Player B but Player A swipes 20 more bags, he is more valuable offensively. Stats like wRC+ or wOBA don’t take that into account. While BASH doesn’t yet adjust for base running skills such as going first to third (shoutout the GOAT Kris Bryant), it does assign positive values for stolen bases and even greater negative values for the number of times caught stealing.
I’ll admit that this is the one element of BASH that I have considered entirely removing over the years. It’s received the most pushback and feels a bit incomplete without the “other” baserunning elements incorporated into the mix. However, this is an offensive metric — not just a hitting stat. If you want to know how productive a player is on offense (I do) and we have information available to help tell that story (we do) then I see benefit in keeping it around. Plus, it’s not like I have this element weighted enough to drastically change the story we are telling.
Age Adjustments: In my opinion, this is the element that most sets BASH apart from the rest of the advanced stats. I want BASH to be used as a way to truly evaluate a player, not just a season’s worth of numbers. While I’ll be the second person to tell you that the prospect development path is non-linear (Theo Epstein beat me to it), it does carry value if a prospect is performing in a league where they are younger than their peers.
For example, the average batter age in the Southern League (Knoxville’s league) in 2025 was 23.7 years old. Pedro Ramirez spent the entire season in Knoxville and ended the year at 21.2 years old. BJ Murray Jr was Ramirez’s teammate all season long and was 26.0 years old. Using BASH, Ramirez receives some brownie points while Murray gets dinged just a bit for being the elder statesman.
2025 Leaderboard
While I’m providing the simplified version of the BASH leaderboard within this post below, I invite you to visit the full stats spreadsheet by using this link. It has so many additional stats to keep you occupied for a while. The list below is for prospects that logged at least 200 plate appearances this past season, but there’s no threshold for plate appearance in the spreadsheet — if you stood at the plate this year then you’re included.
- Owen Caissie – 135
- Moises Ballesteros – 135
- Pedro Ramirez – 126
- Jefferson Rojas – 124
- Jonathon Long – 121
- BJ Murray Jr – 115
- Kevin Alcantara – 115
- Angel Cepeda – 113
- Cristian Hernandez – 109
- Carter Trice – 108
- Corey Joyce – 107
- Brett Bateman – 107
- Ty Southisene – 107
- Jaylen Palmer – 105
- Cameron Sisneros – 104
- Yahil Melendez – 102
- Jordan Nwogu – 102
- James Triantos – 102
- Christian Olivo – 101
- Pablo Aliendo – 100
- Jose Escobar – 100
- Matt Halbach – 100
- Ariel Armas – 98
- Owen Ayers – 96
- Alexey Lumpuy – 96
- Hayden Cantrelle – 95
- Leonel Espinoza – 95
- Edgar Alvarez – 93
- Chase Strumpf – 92
- Brian Kalmer – 92
- Reivaj Garcia – 91
- Reggie Preciado – 89
- Eli Lovich – 87
- Andy Garriola – 87
- Drew Bowser – 86
- Carlos Perez – 86
- Parker Chavers – 85
- Casey Opitz – 83
- Ethan Hearn – 93
- Rafael Morel – 79
- Miguel Pabon – 72
- Eriandys Ramon – 68
- Dixon Machado – 66
