Picks a real game, pulls the lineup and the weather, and runs a Monte Carlo of where the home runs would land. Everything below happens in this tab — the schedule, the forecast and the physics. Nothing about what you look at reaches a server of mine, because there isn't one.
Re-scored on 4,997 real home runs in 1,910 completed regular-season games at all 30 parks, 25 March through 10 September 2026. Same games, two models. No peeking at the day’s contact.
| Picking the right section | top‑1 | top‑3 |
|---|---|---|
| This page (park history + two-lobe spray) | 23.2% | 51.2% |
| The August model (everyone a righty) | 21.1% | 48.0% |
| Monte Carlo only (bimodal, no park table) | 18.3% | 48.2% |
| How big those shipped sections just are | 15.2% | 39.3% |
| Batter handedness, and nothing else | 17.4% | 61.4% |
Two-lobe spray made the angles better: mean error 26.6° → 17.3°, and the predicted lefty-minus-righty split went from 0.49° to 46.6° against a real 39.2° (the point estimate is the pull peak, so it overshoots a little). It did not make the Monte Carlo’s single section better — that is still 18.3%, a mixed lineup’s two lobes smeared into one pick. So the one-seat recommendation this page ships is the park table. That is why the first row matches “where they landed here before,” and why it now beats its own area share (23.2% vs 15.2%) instead of tying it.
A missing hydrate=person(batSide) on the roster endpoint
labelled 11,065 of 11,069 cached batters right-handed. The confirmed-lineup
boxscore had the same hole. The live feed used to score games never puts
batSide on person at all — only the play-by-play
matchup does. And even with a correct label, the Monte Carlo drew the
empirical chart and ignored the bit, so lefties and righties were
separated by −0.35° where real home runs separate them
by 40.3°. It could not tell which way anyone pulls.
The roster and boxscore requests now ask for handedness. Historical scoring reads it from the play-by-play when the boxscore person is bare. The spray is a two-lobe mixture (pull + opposite field), not a unimodal chart slid onto one mean. The one-seat recommendation is the prospective park table — where balls have already landed here. The next two seats are the pull sides: left field for right-handed power, right field for left-handed power. The live loop now keeps scoring through six hours after first pitch, so late innings are no longer dropped.
The prior and the park table are available on opening day, when most charts are thin. This page already recommends both pull sides and the boring park-history seat. What this season proved is that a two-lobe spray is the right shape and still a bad one-section pick. The physics is no longer the thing pretending lefties pull left.
The two-lobe spray, the climatology one-seat pick, the late-inning
capture, and calling the radius mode-local instead of cep50
are in this build. Still open: per-batter spray when the chart is
thick enough to trust over the lobe prior, and the metric a person
actually buys — probability per seat, per real game, not per recorded
home run. Scoring keeps reporting area share, park history, and
handedness. It does not treat “uniform over sections” as the thing to
beat.
The first public table was 879 home runs over 35 days. That sample was about 87% complete, captured nothing beyond 180 minutes from first pitch, and 96% of its section ranks were self-reported. It said the model hit top-1 / top-3 at 14.4% / 44.6% and lost to area share, park history, and handedness. The cause above is from that writeup. This season’s table is a fresh, independent score of finished games — not a continuation of those 879 rows.
Handedness-only is scored given the batter who already hit the ball. A fan choosing a seat before first pitch cannot use that; it is a test of whether the model used the hand bit, not a seating strategy. Park climatology is a real pregame rule (only earlier games at that park). Weather was held identical across the two model arms so the comparison is about pull side, not aero.
A browser build of a local tool that runs on one Mac. It ships 30 park geometries, 306 seating polygons and 452 batter profiles; the schedule, the lineup and the forecast are fetched live from MLB Stats and Open‑Meteo by your browser, directly.
The physics is checked against the Python it was ported from on 106,314 comparisons with no tolerance band — every density cell, not a sample.