A few days ago, I took a microscope and a fine comb to some Cactus League stats for the San Francisco Giants hitters. Today it’s time to do the same thing, except for the pitchers.
The goal is simple: take data that’s already too small to be meaningful, and split it into even smaller, less meaningful segments. Because isn’t that fun?
Advertisement
More seriously, it’s to look at how the team’s pitchers have performed against different talent levels. To break that down, I’ve sorted every batter the Giants have faced this spring into four categories: MLB regulars (think Heliot Ramos); non-regulars who are on the 40-man roster (Luis Matos); non-roster invitees (Jared Oliva); and players from Minor League camp (Josuar González).
It’s at times an inexact science. Bryce Eldridge isn’t a regular, but he’s certainly a better hitter than many who are. But for the most part, it puts things into buckets so we can see how pitchers are performing against players they would see in a Major League game, versus players that they won’t. And it also shows us how they’re being deployed.
Additionally, I’ve looked at every ball put in play that the Giants pitchers have allowed, and tracked the exit velocities. I’ve included the data for both average exit velocity (the average of every ball in play), and EV50 (the average of the lowest 50% of that data set). For context, I’ve added what percentile that average EV would have been in 2025, and a ranking for the EV50 based on the 447 MLB pitchers with at least 100 batted balls in 2025, since percentiles aren’t available for that stat.
Well, dig in, folks. And nerd out. All of the data is through Thursday’s game.
Advertisement
Tristan Beck
vs. regulars: 11 batters faced, 3 hits, 1 home run, 1 triple, 1 walk, 2 strikeouts
vs. 40-mans: 4 batters faced, 2 hits, 1 triple, 1 walk
vs. NRIs: 7 batters faced, 1 hit, 1 walk, 1 hit by pitch, 1 strikeout
vs. MiLBs: n/a
Totals: 4.2 innings, 6 hits, 1 home run, 2 triples, 3 walks, 1 hit batter, 3 strikeouts, 5.79 ERA, 7.70 FIP
Also: 1 runner caught stealing
Exit velocities (15 balls in play)
Avg EV: 92.3 (1st percentile)
EV50: 82.0 (434th out of 447)
It hasn’t been a good spring for Beck. He’s been struggling to miss bats, and hitters have been teeing off on his pitches, with seven of the 18 balls put in play against him hitting triple figures. He hasn’t pitched for the Giants that much, since he was in the WBC, but he certainly seems to be loosing ground on the rest of the swing man and middle relief competition. Luckily, he has an option remaining, which I hadn’t realized. So he seems ticketed for Sacramento.
Advertisement
Will Bednar
vs. regulars: n/a
vs. 40-mans: 1 batter faced
vs. NRIs: 8 batters faced, 1 hit, 3 walks
vs. MiLBs: 10 batters faced, 1 hit, 1 walk, 1 hit by pitch, 3 strikeouts
Totals: 4 innings, 3 hits, 4 walks, 1 hit batter, 3 strikeouts, 2.25 ERA, 5.88 FIP
Also: 1 error
Exit velocities (11 balls in play)
Avg EV: 85.5 (99th percentile)
EV50: 74.2 (21st out of 447)
Bednar, who is an NRI (as well as the team’s first-round pick in 2021), was in the first group of camp cuts on Thursday. And it’s clear from this breakdown of his opponents that the Giants never viewed him as a candidate to earn an Opening Day role … he faced 19 batters, and only one of them was a rostered player. But It was certainly a valuable experience for the righty, and one that was in line with his 2025: very good things happened when batters swung at his pitches, but very bad things happened when they did not.
Advertisement
Hayden Birdsong
vs. regulars: 8 batters faced, 4 hits, 1 double, 1 walk, 2 strikeouts
vs. 40-mans: 5 batters faced, 1 hit, 1 home run, 1 walk
vs. NRIs: 5 batters faced, 3 hits, 1 home run, 1 double, 1 walk
vs. MiLBs: n/a
Totals: 2.1 innings, 8 hits, 2 home runs, 2 doubles, 3 walks, 2 strikeouts, 30.86 ERA, 16.91 FIP
Also: 1 runner caught stealing
Exit velocities (13 balls in play)
Avg EV: 92.2 (1st percentile)
EV50: 83.4 (446th out of 447)
There’s no need to dwell on Birdsong’s rough spring, especially given the news that came out on Thursday: he has a sore elbow. We’ll all hold our breaths. It’s been a disaster of a preseason for him, but nothing that he can’t turn around … if healthy.
Advertisement
Spencer Bivens
vs. regulars: 14 batters faced, 3 hits, 1 walk, 2 strikeouts
vs. 40-mans: 6 batters faced, 1 hit, 1 home run, 1 walk, 2 strikeouts
vs. NRIs: 9 batters faced, 4 hits, 1 walk, 2 strikeouts
vs. MiLBs: 2 batters faced, 1 strikeout
Totals: 6.2 innings, 9 hits, 1 home run, 3 walks, 7 strikeouts, 1.35 ERA, 4.83 FIP
Also: 3 stolen bases allowed
Exit velocities (21 balls in play)
Avg EV: 95.3 (worse than the highest mark of 93.2)
EV50: 80.1 (362nd out of 447)
It sneakily hasn’t been a very strong spring for Bivens. He’s done an excellent job limiting damage, but betters are absolutely spanking the ball when he throws it. He’s already given up six balls in excess of 106 mph, and he’s also had a fair amount of walks. But he’s proven, and valuable, and we know the team likes him, so I’d be surprised if he’s not on the Opening Day roster.
Advertisement
JT Brubaker
vs. regulars: 8 batters faced, 3 hits, 1 home run, 1 double, 2 walks, 1 strikeout
vs. 40-mans: 7 batters faced, 1 hit, 1 walk, 2 strikeouts
vs. NRIs: 6 batters faced, 1 hit, 1 double
vs. MiLBs: 3 batters faced, 1 walk, 1 strikeout
Totals: 6 innings, 5 hits, 1 home run, 2 doubles, 4 walks, 4 strikeouts, 4.50 ERA, 6.46 FIP
Also: 1 runner caught stealing
Exit velocities (16 balls in play)
Avg EV: 91.0 (7th percentile)
EV50: 79.5 (305th out of 447)
Brubaker has also had a fairly mediocre spring, and has been hit especially hard by MLB regulars. He was somewhat surprisingly tendered a contract in arbitration this winter, and he can’t be feeling too comfortable about his job status as March 25 draws nearer.
Advertisement
José Buttó
vs. regulars: 6 batters faced, 1 hit
vs. 40-mans: 4 batters faced, 1 hit, 1 double, 1 walk
vs. NRIs: 7 batters faced, 3 hits, 1 triple, 2 strikeouts
vs. MiLBs: n/a
Totals: 4 innings, 5 hits, 1 triple, 1 double, 1 walk, 2 strikeouts, 2.25 ERA, 3.38 FIP
Also: 0-for-1 on ABS challenges
Exit velocities (14 balls in play)
Avg EV: 92.3 (1st percentile)
EV50: 83.0 (443rd out of 447)
We’re noticing an unfortunate theme here: the pitchers with “B” surnames are allowing a lot of hard contact, Bednar notwithstanding. But we’re dealing with very small sample sizes, and Buttó has been completely fine, especially against the best talent.
Advertisement
Michael Fulmer
vs. regulars: 2 batters faced, 1 strikeout
vs. 40-mans: 9 batters faced, 1 hit, 1 home run, 3 strikeouts
vs. NRIs: 10 batters faced, 1 hit, 1 home run, 3 walks, 2 strikeouts
vs. MiLBs: 8 batters faced, 6 strikeouts
Totals: 8 innings, 2 hits, 2 home runs, 3 walks, 12 strikeouts, 2.25 ERA, 5.00 FIP
Also: 1 stolen base allowed
Exit velocities (14 balls in play)
Avg EV: 78.9 (better than the lowest mark of 84.1)
EV50: 63.8 (better than the lowest mark of 70.7)
What a funny spring Fulmer has had. He’s limited batters to comically low exit velocities, yet the only hits he’s allowed have been home runs. He’s thrown with fairly soft velocity, but earned a lot of strikeouts. The splits certainly paint a story of a player who should be in Sacramento this year, at least at the start. He hasn’t had all that much of an opportunity against MLB players, and has done the bulk of his damage against Minor Leaguers.
Advertisement
Matt Gage
vs. regulars: 9 batters faced, 2 hits, 1 home run, 1 double, 2 strikeouts
vs. 40-mans: 7 batters faced, 1 hit, 4 strikeouts
vs. NRIs: 2 batters faced, 1 strikeout
vs. MiLBs: n/a
Totals: 5 innings, 3 hits, 1 home run, 1 double, 6 strikeouts, 3.60 ERA, 3.43 FIP
Exit velocities (11 balls in play)
Avg EV: 93.5 (worse than the highest mark of 93.2)
EV50: 83.6 (446th out of 447)
Gage has benefitted from two things. First, in this article, he’s benefitted from the fact that the stats in San Francisco’s exhibition game against Team USA don’t count, since he not only got roughed up, but was roughed up by a group of Giants Minor Leaguers on loan to the American squad. Second and more importantly, he’s benefitted from the fact that Erik Miller, Reiver Sanmartin, and Sam Hentges also suffered injuries. Miller is still hoping to be ready by Opening Day, though that’s a big question mark, while Sanmartin and Hentges have already been ruled out. A pathway has opened for Gage to make the Opening Day roster, despite so-so results thus far.
Advertisement
Trent Harris
vs. regulars: 3 batters faced, 3 hits
vs. 40-mans: 6 batters faced, 2 hits, 1 walk, 1 strikeout
vs. NRIs: 10 batters faced, 4 hits, 2 home runs, 1 double, 1 walk, 1 strikeout
vs. MiLBs: 4 batters faced, 2 strikeouts
Totals: 4.2 innings, 9 hits, 2 home runs, 1 double, 2 walks, 4 strikeouts, 9.64 ERA, 8.77 FIP
Also: 1 stolen base allowed
Exit velocities (17 balls in play)
Avg EV: 93.2 (0th percentile)
EV50: 87.1 (worse than the highest mark of 84.1)
Harris’ first time in Major League camp went similarly to his 2025 season, in that he was excellent against the lowest-level talent he faced, and struggled against the higher-level talent. Last year, he mowed through AA, but ran into a wall in AAA, and that’s reflected in the splits above, where he retired all four Minor Leaguers he faced, with two strikeouts, while allowing 11 of the 19 other batters he faced to reach base, with just two more strikeouts. He was among the first group of camp cuts, and will head to AAA to work on some stuff — hopefully we can see the curveball a little more.
Advertisement
Adrian Houser
vs. regulars: 9 batters faced, 2 hits, 1 home run, 1 walk
vs. 40-mans: 1 batter faced, 1 hit, 1 double
vs. NRIs: n/a
vs. MiLBs: n/a
Totals: 2 innings, 3 hits, 1 home run, 1 double, 1 walk, 0 strikeouts, 4.50 ERA, 11.63 FIP
Exit velocities (9 balls in play)
Avg EV: 93.4 (worse than the highest mark of 93.2)
EV50: 85.9 (worse than the highest mark of 84.1)
The main takeaway from Houser’s spring is that he’s only officially pitched once (he also pitched against Team USA, which didn’t go all that well). We’re gonna see a lot of the young arms this year, methinks, though Houser is certainly in the rotation if healthy.
Advertisement
Caleb Kilian
vs. regulars: 9 batters faced, 5 hits, 1 double
vs. 40-mans: 6 batters faced, 1 walk, 2 strikeouts
vs. NRIs: 9 batters faced, 1 hit, 3 strikeouts
vs. MiLBs: 1 batter faced, 1 strikeout
Totals: 6.1 innings, 6 hits, 1 double, 1 walk, 6 strikeouts, 1.42 ERA, 2.20 FIP
Also: 1 runner caught stealing
Exit velocities (17 balls in play)
Avg EV: 84.3 (1st percentile)
EV50: 70.2 (better than the lowest mark of 70.7)
Kilian has, in many ways, been the pitching version of Victor Bericoto this spring. He’s been one of the best performers, but if you peel things back a little bit, it’s notable that he’s doing his best work against his worst competition. The sample sizes are tiny, but if you want to overanalyze, there’s an opportunity to do so. Still, he’s throwing gas, and making quite an impression. He very well could find himself on the Opening Day roster. He’s also been a bit of an all-or-nothing guy with exit velocities: six of the 17 balls put in play against him have been below 75 mph, while four have been hotter than 104.
Advertisement
Tyler Mahle
vs. regulars: 14 batters faced, 1 hit, 1 double, 5 walks, 4 strikeouts
vs. 40-mans: 5 batters faced, 1 walk, 1 strikeout
vs. NRIs: 5 batters faced, 1 walk, 2 strikeouts
vs. MiLBs: 2 batters faced
Totals: 6 innings, 1 hit, 1 double, 7 walks, 7 strikeouts, 0.00 ERA, 4.79 FIP
Also: 1 stolen base allowed
Exit velocities (12 balls in play)
Avg EV: 84.3 (1st percentile)
EV50: 71.7 (2nd out of 447)
26 batters faced, and only 12 balls in play. Mahle is living off of strikeouts, but dying due to walks. There shouldn’t have been any doubt that his stuff plays against top competition, but if there was … well, there isn’t anymore. As long as he can find the strike zone and stay healthy, he’ll be golden.
Advertisement
Nick Margevicius
vs. regulars: 3 batters faced, 1 hit, 1 double
vs. 40-mans: 2 batters faced, 1 hit, 1 double
vs. NRIs: 19 batters faced, 7 hits, 2 doubles, 1 walk, 2 strikeouts
vs. MiLBs: 9 batters faced, 2 hits, 1 strikeout
Totals: 8 innings, 11 hits, 4 doubles, 1 walk, 3 strikeouts, 5.63 ERA, 3.25 FIP
Also: 2 runners caught stealing, 1 stolen base allowed
Exit velocities (29 balls in play)
Avg EV: 92.3 (1st percentile)
EV50: 82.0 (434th out of 447)
Margevicius, a non-roster invitee, is another player whose splits inform us less about his abilities, and more about the organization’s view of him. Despite being a 29-year old with MLB experience, it’s clear that the Giants view him as bullpen depth in AAA, given that he’s faced 33 batters, and only five of them have been rostered players.
Advertisement
Trevor McDonald
vs. regulars: 21 batters faced, 3 hits, 1 home run, 1 double, 2 walks, 6 strikeouts
vs. 40-mans: 8 batters faced, 2 hits, 1 home run, 1 hit by pitch, 3 strikeouts
vs. NRIs: 9 batters faced, 1 hit, 2 strikeouts
vs. MiLBs: n/a
Totals: 10 innings, 6 hits, 2 home runs, 1 double, 2 walks, 1 hit batter, 11 strikeouts, 1.80 ERA, 4.93 FIP
Also: 1 runner caught stealing
Exit velocities (24 balls in play)
Avg EV: 88.4 (73rd percentile)
EV50: 79.1 (277th out of 447)
McDonald has unequivocally been one of the stars of Spring Training, and things look even rosier when account for competition. In 10 innings he’s yet to face a batter from Minor League camp, and more than half of his opponents have been MLB regulars, while his numbers have held — or arguably gotten better — against those players. He’s played himself into being the favorite not just for the first name called when the rotation needs a sixth arm, but also for a spot in the Opening Day bullpen.
Advertisement
Robbie Ray
vs. regulars: 13 batters faced, 1 hit, 3 walks, 4 strikeouts
vs. 40-mans: 12 batters faced, 2 walks, 1 hit by pitch, 3 strikeouts
vs. NRIs: 11 batters faced, 3 hits, 2 triples, 3 walks
vs. MiLBs: n/a
Totals: 9.2 innings, 4 hits, 2 triples, 8 walks, 1 hit batter, 7 strikeouts, 1.86 ERA, 4.97 FIP
Also: 1 runner picked off, 1 stolen base allowed
Exit velocities (20 balls in play)
Avg EV: 85.2 (99th percentile)
EV50: 69.1 (better than the lowest mark of 70.1)
Ray is the funny case of an established veteran who is performing much worse against lower competition. It certainly means nothing, but it’s funny, and I remember Wilmer Flores being the same last Spring: he was feasting against established Major Leaguers, and struggling mightily against Minor Leaguers and NRIs. Either way, the positive with Ray’s spring has been that he’s kept his exit velocities very much in check (though it’s a small enough sample size that a 24.9-mph bunt is skewing things a little). The negative is that he’s faced 36 batters and given a free base to nine of them.
Advertisement
Wilkin Ramos
vs. regulars: 5 batters faced, 2 hits, 1 double
vs. 40-mans: 6 batters faced, 2 hits, 1 home run
vs. NRIs: 14 batters faced, 2 hits, 6 walks, 1 strikeout
vs. MiLBs: 7 batters faced, 4 hits, 1 strikeout
Totals: 5.1 innings, 10 hits, 1 home run, 1 double, 6 walks, 2 strikeouts, 11.81 ERA, 8.69 FIP
Also: 1 runner caught stealing, 3 stolen bases allowed
Exit velocities (24 balls in play)
Avg EV: 90.7 (11th percentile)
EV50: 78.8 (262nd out of 447)
Ramos, who only recently turned 25 and was added to the system over the offseason, faced an uphill battle to make the Opening Day roster, and it’s been evident why. He’s got some funk, but he’s really struggled to miss bats, and has allowed some loud contact (including two balls in excess of 113 mph). He’ll be a fun one to monitor in AAA this year.
Advertisement
Landen Roupp
vs. regulars: 11 batters faced, 1 hit, 1 double, 1 walk, 2 strikeouts
vs. 40-mans: 5 batters faced, 2 strikeouts
vs. NRIs: 6 batters faced, 1 hit, 1 walk, 1 strikeout
vs. MiLBs: n/a
Totals: 6 innings, 2 hits, 1 double, 2 walks, 5 strikeouts, 1.50 ERA, 2.63 FIP
Exit velocities (13 balls in play)
Avg EV: 87.4 (91st percentile)
EV50: 78.3 (223rd out of 447)
Roupp has looked good, and he’s done it without the competition being watered down at all. He certainly looks ready to resume his role as a mid-rotation starter. All good signs from him thus far.
Juan Sánchez
vs. regulars: 1 batter faced, 1 strikeout
vs. 40-mans: 3 batters faced
vs. NRIs: 12 batters faced, 1 hit, 3 walks, 4 strikeouts
vs. MiLBs: 6 batters faced, 1 hit, 2 walks, 2 strikeouts
Advertisement
Totals: 5.1 innings, 2 hits, 5 walks, 7 strikeouts, 0.00 ERA, 3.81 FIP
Also: 3 stolen bases allowed
Exit velocities (10 balls in play)
Avg EV: 89.7 (38th percentile)
EV50: 79.7 (324th out of 447)
Given the injuries to Miller, Hentges, and Sanmartin, and Gage’s mediocrity, the door might have been open for Sánchez to earn an Opening Day role had he pitched a little closer to how he did during 2024 Spring Training, when he nearly walked away with a job. Then again, the Giants haven’t given him quite as much of an opportunity to win that role, with 18 of the 22 batters he’s faced being non-roster invitees and Minor League camp hitters. There’s a little issue with command at the moment, which isn’t surprising since he’s returning from Tommy John surgery. I fully expect him to play a big role in the bullpen at some point this year, though.
Advertisement
Reiver Sanmartin
vs. regulars: 2 batters faced
vs. 40-mans: 3 batters faced, 2 strikeouts
vs. NRIs: 3 batters faced, 2 hits, 1 home run, 1 double
vs. MiLBs: n/a
Totals: 2 innings, 2 hits, 1 home run, 1 double, 2 strikeouts, 4.50 ERA, 8.13 FIP
Exit velocities (6 balls in play)
Avg EV: 81.8 (better than the lowest mark of 84.1)
EV50: 67.8 (better than the lowest mark of 70.7)
Sanmartin was pitching well in a very small sample size against rostered players, but suffered a hip flexor injury in the WBC. He’s out until the summer, unfortunately.
Gregory Santos
vs. regulars: 2 batters faced, 1 walk
vs. 40-mans: 4 batters faced, 3 hits, 1 double, 1 walk
vs. NRIs: 4 batters faced, 1 strikeout
vs. MiLBs: n/a
Totals: 2 innings, 3 hits, 1 double, 2 walks, 1 strikeout, 0.00 ERA, 5.63 FIP
Exit velocities (7 balls in play)
Avg EV: 92.3 (1st percentile)
EV50: 84.0 (446th out of 447)
The raw numbers haven’t been notable for Santos, but he has looked both nasty and fearless, even against the best hitters. He’s regularly hitting 100 mph, and I’m not backing off my prediction that, despite being a non-roster invitee, he’s the best reliever on the team.
Carson Seymour
vs. regulars: 14 batters faced, 2 hits, 2 doubles, 1 walk, 3 strikeouts
vs. 40-mans: 13 batters faced, 2 hits, 1 walk, 3 strikeouts
vs. NRIs: 13 batters faced, 4 hits, 2 doubles, 1 walk, 2 hit by pitches, 2 strikeouts
vs. MiLBs: 1 batter faced
Totals: 9.1 innings, 8 hits, 4 doubles, 3 walks, 2 hit batters, 8 strikeouts, 3.86 ERA, 3.52 FIP
Also: 2 stolen bases allowed
Exit velocities (28 balls in play)
Avg EV: 86.8 (94th percentile)
EV50: 73.7 (13th out of 447)
Seymour has done well against all competition levels this spring, largely because he’s earned a ton of soft contact. Of the 28 balls in play that he’s allowed, a whopping 10 have been hit softer than 80 mph. That’s impressive, especially for a power pitcher. He hasn’t been as good as McDonald, so he probably doesn’t have a path to the Opening Day roster. But he might be next in line.
Blade Tidwell
vs. regulars: 10 batters faced, 4 hits, 1 triple, 1 double, 2 walks, 3 strikeouts
vs. 40-mans: 6 batters faced, 2 hits, 1 triple, 1 walk
vs. NRIs: 9 batters faced, 1 hit, 1 walk, 6 strikeouts
vs. MiLBs: n/a
Totals: 4.2 innings, 7 hits, 2 triples, 1 double, 4 walks, 9 strikeouts, 11.57 ERA, 2.34 FIP
Also: 2 stolen bases allowed
Exit velocities (12 balls in play)
Avg EV: 91.9 (1st percentile)
EV50: 82.9 (442nd out of 447)
Like many players on this list, Tidwell’s spring performance has mirrored his 2025. He’s been dominant against NRIs, after having a 3.62 ERA in AAA last year. But he’s really struggled to put away Major League regulars, with six of the 10 that he’s faced reaching base (which is compounded by his showing against Team USA) … not a far cry from his MLB debut last year, which resulted in 15 earned runs in 15 innings pitched. He’s throwing gas, and he looks like the real deal. But he also doesn’t look nearly as ready as McDonald or Seymour.
Ryan Walker
vs. regulars: 6 batters faced, 2 hits, 1 double, 3 strikeouts
vs. 40-mans: 4 batters faced, 1 hit by pitch
vs. NRIs: 6 batters faced, 1 hit, 3 strikeouts
vs. MiLBs: n/a
Totals: 4 innings, 4 hits, 1 double, 1 hit batter, 6 strikeouts, 0.00 ERA, 1.38 FIP
Also: 1-for-1 on ABS challenges
Exit velocities (9 balls in play)
Avg EV: 93.0 (1st percentile)
EV50: 87.4 (worst than the highest mark of 84.1)
With Walker, we’re all just waiting to see how the regular season looks. So far, so good, in Spring Training. The bad exit velocities are too small of a sample to worry about (and it’s more the result of giving up consistently mid-level EVs, rather than lots of hard-hit balls), and he’s finding the zone, getting in good counts, putting hitters away, and avoiding walks. That’s what we’re all looking for.
Logan Webb
vs. regulars: 5 batters faced, 2 strikeouts
vs. 40-mans: 7 batters faced, 1 hit, 4 strikeouts
vs. NRIs: 5 batters faced, 1 hit, 1 hit by pitch, 1 strikeout
vs. MiLBs: n/a
Totals: 5 innings, 2 hits, 1 hit batter, 7 strikeouts, 1.80 ERA, 1.43 FIP
Also: 1 stolen base allowed
Exit velocities (8 balls in play)
Avg EV: 82.3 (better than the lowest mark of 84.1)
EV50: 62.5 (better than the lowest mark of 70.1)
We haven’t gotten to see much of Webb, since he’s been with Team USA in the WBC. But he’s been everything we expect out of him: extremely soft contact, tremendous control, and even some of those strikeouts that he showed off in 2025. Add in his strong appearance against Brazil (he’s pitching again as we speak, so we’ll see how he does) and he looks ready for the season to start.
Carson Whisenhunt
vs. regulars: 15 batters faced, 3 hits, 1 double, 2 walks, 5 strikeouts
vs. 40-mans: 9 batters faced, 2 hits, 1 double, 1 walk, 3 strikeouts
vs. NRIs: 5 batters faced, 2 hits, 1 double, 2 walks
vs. MiLBs: n/a
Totals: 5.2 innings, 7 hits, 3 doubles, 5 walks, 8 strikeouts, 14.29 ERA, 3.45 FIP
Also: 1 stolen base allowed
Exit velocities (16 balls in play)
Avg EV: 95.3 (worst than the highest mark of 93.2)
EV50: 85.8 (worst than the highest mark of 84.1)
The Giants have challenged Whisenhunt this spring, giving him primarily rostered. hitters to face off against. His first two outings went fully sideways, but he was tremendous in his third showing. We’ll see how the fourth goes tonight. Whisenhunt has shown notably improved velocity with the fastball, and that’s resulted in more strikeouts than usual, which is great to see. But it also seems to be an exceptionally hittable pitch: a full 50% of the balls in play he’s allowed have been hit at at least 99.8 mph.
Keaton Winn
vs. regulars: 4 batters faced, 1 hit, 1 walk, 1 strikeout
vs. 40-mans: 6 batters faced, 1 walk, 1 strikeout
vs. NRIs: 13 batters faced, 3 hits, 1 triple, 4 strikeouts
vs. MiLBs: n/a
Totals: 6.1 innings, 4 hits, 1 triple, 2 walks, 6 strikeouts, 1.42 ERA, 2.68 FIP
Also: 1 runner caught stealing
Exit velocities (14 balls in play)
Avg EV: 82.9 (better than the lowest mark of 84.1)
EV50: 63.5 (better than the lowest mark of 70.1)
Winn has looked completely fantastic, regardless of the level of competition. The other-worldly EV marks will course correct with a larger sample — four of his 14 balls in play have been hit softer than 60 mph — but he’s looked extremely impressive, and he’s throwing heat. After losing much of 2025 to injuries, and never getting to really find a rhythm, he could break camp with the team.
Minor Leaguers
There’s no need to deep dive into the pitchers from Minor League camp who have appeared in games, but here are the ones who have played, and how they’ve fared.
John Michael Bertrand: 1 inning, 3 walks, 0.00 ERA, 12.63 FIP
Jack Choate: 0.2 innings, 0.00 ERA, 3.63 FIP
R.J. Dabovich: 1.1 innings, 1 hit, 1 walk, 2 strikeouts, 0.00 ERA, 2.88 FIP
Cody Delvecchio: 1 inning, 2 hits, 2 strikeouts, 0.00 ERA, -0.37 FIP
Hunter Dryden: 0.1 innings, 0.00 ERA, 3.63 FIP
Greg Farone: 2 innings, 1 hit, 2 strikeouts, 0.00 ERA, 1.63 FIP
Marques Johnson: 3 innings, 2 hits, 5 strikeouts, 3.00 ERA, 0.29 FIP
Gerelmi Maldonado: 1 inning, 2 hits, 1 home run, 3 walks, 1 strikeout, 27.00 ERA, 23.63 FIP
Ben Peterson: 1 inning, 1 hit, 1 walk, 0.00 ERA, 6.63 FIP
Braxton Roxby: 3 innings, 1 hit, 2 walks, 0.00 ERA, 5.63 FIP
Darien Smith: 2 innings, 1 hit, 1 walk, 1 strikeout, 0.00 ERA, 4.13 FIP
Ryan Vanderhei: 2 innings, 2 strikeouts, 0.00 ERA, 3.13 FIP
Cade Vernon: 0.1 innings, 0.00 ERA, 3.63 FIP
Tyler Vogel: 1.2 innings, 3 hits, 1 walk, 2 strikeouts, 5.40 ERA, 3.03 FIP
Trystan Vrieling: 3 innings, 3 hits, 1 walk, 3 strikeouts, 0.00 ERA, 2.63 FIP
Nick Zwack: 4 innings, 3 hits, 1 home run, 2 walks, 4 strikeouts, 4.50 ERA, 6.38 FIP
Read the full article here

