Pascal Institute
Research appendix · Baseball · Decision Science

Contact Point Methodology

Methods and sources for "Where Home Runs Come From." The study is MLB-03 in the Pascal research repository. It measures what happens when hitters meet the ball further in front of, or deeper than, their own usual contact point, using the 2025 and 2026 MLB regular seasons.

What this analysis is: a description of how contact point relates to hits, home runs and total bases when each hitter is compared with himself, plus a test of whether recent contact point improves a next-game forecast. It is not a claim that moving contact forward causes power, a claim about any hitter's confidence or state of mind, or a test against betting prices.
  1. Data and information boundary
  2. The contact point
  3. Taking the pitch out of it
  4. Five groups of batted balls
  5. The view from above the plate
  6. Ten-game stretches
  7. Next-game forecasts
  8. Registered in advance
  9. Three hitters (examples)
  10. Checks
  11. Where each number comes from
  12. Figures
  13. Replication bundle
  14. Limitations

Data and information boundary

The data covers the 2025 and 2026 MLB regular seasons, pitch by pitch, from Baseball Savant's Statcast search, one request per date. The 2025 season runs from March 18 through September 28 and the 2026 season from March 25 through September 27. Each file is stored once and identified by its SHA-256 fingerprint, with a retrieval receipt. Postseason games are not used.

SeasonRoleGamesPitchesTracked swingsBatted balls
2025Test season, examined only after the tests were written down2,430712,528328,553 (97.3% of swings)119,013
2026Explored first, so reported only as a replication2,424715,450329,019 (97.3% of swings)118,880

A tracked swing is any swing with a recorded contact point, excluding bunts. A batted ball is a tracked swing put in play with a measured exit velocity.

The contact point

Statcast records, for each swing, the distance in inches between the hitter's center of mass (the midpoint between his hips) and the point where bat met ball, measured toward the pitcher. For a miss, it is where the bat passed closest to the ball. Larger values mean contact further in front. The field is intercept_ball_minus_batter_pos_y_inches in Savant's CSV documentation.

As a check that we read the field the way Savant does, we recomputed each 2025 hitter's average and compared it with Savant's published Batting Stance leaderboard. For 99.6 percent of 542 hitter-and-side combinations, our average was within half an inch of Savant's, and the typical difference was 0.04 inches.

Taking the pitch out of it

Where contact happens depends on the pitch. For each season and batting side, we fit a straight-line model of contact point that gives every hitter his own baseline and adjusts for the pitch: how far inside or outside and how high it crossed the plate (with squared terms and their combination), its speed (allowed to work differently for breaking balls and offspeed pitches), its type, whether the pitcher threw from the same side, the balls in the count, and whether there were two strikes.

Under this model, the pitch explains 46.5 percent (left-handed hitters) and 45.0 percent (right-handed hitters) of a hitter's swing-to-swing movement in 2025, and almost exactly the same in 2026. Each extra mile per hour moves contact about 0.46 to 0.48 inches deeper. The adjusted contact point is what remains after the pitch's share is removed, and every hitter is then compared with his own season average of it.

Five groups of batted balls

We sorted 2025 batted balls into five equal groups by adjusted contact point relative to the hitter's own average, using the same cut points for every hitter. Each rate below compares a hitter's batted balls only with his own others, then adds back the league average, so differences between hitters do not drive the pattern.

Group (inches vs. his norm)Hits per 100SinglesDoubles and triplesHome runsTotal bases per batted ball
Deepest (-9.5)32.826.25.41.2.422
Second (-3.2)32.623.36.32.9.480
Middle (+0.3)31.520.66.54.3.515
Fourth (+3.7)31.318.17.16.0.570
Most in front (+9.2)31.315.28.08.1.643

The 2026 season matches within about 1 per 100 in every cell. Out-front swings also missed more often: about 2.5 more misses per 100 swings (likely range 2.1 to 2.9) for each 8.2 inches further in front, which is one standard deviation of contact point across all swings. Across batted balls alone, one standard deviation is 6.7 inches.

The view from above the plate

Figure 2 uses actual contact points, before any pitch adjustment. Depth is the Statcast contact point minus the hitter's average depth in the batter's box from Savant's leaderboard, which gives inches in front of the plate's front edge. Left and right is where the pitch crossed the plate, with left-handed hitters flipped so every hitter stands on the left. Squares are 3 by 3 inches and are shown only when they hold at least 150 batted balls. One 2025 batted ball was dropped because its hitter was missing from the leaderboard.

Ten-game stretches

We split each hitter's season into consecutive 10-game stretches, keeping stretches with at least 2 at-bats, 1 batted ball and 3 tracked swings per game, and hitters with at least 3 such stretches. For each stretch we compared the hitter's average adjusted contact point with his results, again only against his own other stretches. The link is a correlation, which runs from -1 to +1, where 0 means no relationship.

2025, 4,290 stretchesLink with contact pointLikely range
Batting average-0.03-0.06 to 0.00
Isolated power (extra bases per at-bat)+0.10+0.07 to +0.13
Home runs per plate appearance+0.11+0.08 to +0.14

Contact point also persists. After accounting for recent results, a hitter's last 10 games of contact point are linked with his next game's at about 0.24, and with the game 15 games later at about 0.16.

Next-game forecasts

For each hitter's game, we built forecasts using only his earlier games that season: his season-to-date and recent batting average, expected batting average, exit velocity, hard-hit rate, isolated power, home-run rate and plate appearances per game. Season-to-date rates were pulled toward league averages computed from earlier dates only. A second version added his recent contact point, how much it varied, and how far it sat from his norm. Each month from May to September, both versions were trained on earlier months and scored on that month, on 33,580 hitter-games in 2025.

We scored the forecasts with log loss, which penalizes confident wrong forecasts most, so lower is better. Adding contact point made all three forecasts slightly worse: log loss rose by 0.0006 for at least 1 hit, 0.0004 for at least 2 total bases, and 0.0008 for at least 1 home run, and each likely range sat above zero. In the 2026 late-season holdout, contact point made no measurable difference. No betting prices were used.

Registered in advance

The question, data, tests, pass marks and wording rules were written down and fingerprinted with a SHA-256 hash before any 2025 league data was requested. The preregistration's SHA-256 is 3b8f087bef2ca132af384dd8feac5c0642ae8c15bbe722df94f2329f6c1b6f7a, frozen at 17:00 UTC on October 15, 2026; the 2025 data was requested from 17:01 to 17:29 UTC that day. Because we had already explored 2026, 2025 is the test season. The seven main tests used a Holm correction, a standard way of raising the bar when several tests are run at once, and each also had to clear a minimum size that would matter.

Test (2025)ResultVerdict
Fewer hits per batted ball out frontMost in front minus middle: -0.1 per 100 (likely range -0.95 to +0.65)Failed (needed at least 1.0 fewer)
More home runs per batted ball out front+3.8 per 100 (likely range +3.3 to +4.2)Passed
Batting average over 10-game stretches-0.03 (likely range -0.06 to 0.00)Failed
Isolated power over 10-game stretches+0.10 (likely range +0.07 to +0.13)Passed
Next-game forecast, at least 1 hitSlightly worse with contact pointFailed
Next-game forecast, at least 2 total basesSlightly worseFailed
Next-game forecast, at least 1 home runSlightly worseFailed

Ten implementation choices that the preregistration left open were written down before any result was seen. One of them came from a test that caught a small leak: an early version pulled rates toward full-season league averages, which include later games. It was fixed to use only earlier dates before any result was viewed. The 2026 exploration that came first is published in the bundle and labeled as exploratory.

Three hitters (examples)

Ty France, Cal Raleigh and Shohei Ohtani were chosen as examples after the main test, and the rules for measuring them were written down before their contact points were computed. The shift is the change in each hitter's average adjusted contact point relative to the league, with a likely range from rerunning on reshuffled samples of his own games. They carry no test, and three hitters cannot confirm or refute a league-wide pattern.

HitterHome runs, 2025 to 2026Isolated powerContact point shift (inches)Within-season link with power
Ty France7 to 21.104 to .207+1.1 (+0.1 to +1.9)+0.22 (-0.04 to +0.47)
Cal Raleigh60 to 23.342 to .188-1.4 (-2.2 to -0.6)+0.24 (-0.03 to +0.49)
Shohei Ohtani55 to 30.340 to .237-2.2 (-2.9 to -1.5)-0.17 (-0.39 to +0.11)

Checks

Where each number comes from

All paths are in research/mlb03/ in the private pascal-abs-research repository and are included in the replication bundle. The research claim ledger, CLAIM_LEDGER.md, maps each statement to its source, and the publishing ledger is content/pieces/contact-point-home-runs/ledger.md in the pascal-site repository.

Article statementValueSource
Share of movement explained by the pitchnearly half (45.0% to 46.5%)output/run1/results.json (adjustment)
Contact depth per mile per hourabout half an inchoutput/run1/results.json (adjustment)
Average contact vs. the plateabout 2 inches in frontoutput/figures_meta.json
Hits, singles, home runs by group32.8 to 31.3; 26 to 15; 1 to 8 per 100output/run1/results.json (H1, H2, secondary)
Total bases per batted ball.422 to .643output/run1/results.json (secondary)
Misses2.5 more per 100 swings per 8 inchesoutput/run1/results.json (swing_whiff)
10-game link with isolated powerabout +0.10output/run1/results.json (H3)
Persistence of contact point0.24 next game, 0.16 at 15 gamesoutput/run1/results.json (horizons)
Forecast testsall three slightly worseoutput/run1/results.json (H4)
Three hittersas aboveoutput/case_studies.json

Figures

The three figures are generated by research/mlb03/figures.py from the outputs above, and no figure value is typed by hand. The files on this page match the research figure manifest (figures/FIGURES_MANIFEST.json) by SHA-256. Figure 1 shows the five groups, Figure 2 the view from above the plate, and Figure 3 the three hitters. Two renders of each figure were byte-identical.

Replication bundle

The research repository is private, so the material behind this page is published as a replication bundle (about 690 KB). It contains the charter, the frozen preregistration with its SHA-256, provenance, the validation plan, implementation notes, owner decisions, results and the claim ledger, the acquisition, analysis, example and figure code with its tests, the earlier 2026 exploration, the figures, and the aggregate outputs. MANIFEST.txt lists the SHA-256 of every file, and README.txt names the source commit. Raw Statcast files and row-level tables are not redistributed.

Limitations

Two seasons is a short record; every-swing bat tracking began in 2024, and 2024 was not used. The batted-ball results count only balls put in play. Earlier contact tends to mean more lift and more pull, so part of the link between contact point and power is mechanical, and nothing here shows which way cause runs. The pitch model gives every hitter the same adjustment for speed and location. The forecasts did not include the opposing pitcher, the park or the batting order, and no betting prices were tested. A small link between recent contact point and next-game home runs, about +0.02 in both seasons, did not survive the forecast test and is not a finding. In the research ledger, one number was corrected before publication: the miss rate is per 8.2 inches of contact point, not 6.7.

Return to "Where Home Runs Come From"