The wind was worth more than we said: an update to the Wrigley fix
A three-season walk-forward found the Lake Michigan wind moves Wrigley run scoring several times harder than our first correction credited, and confirmed it is the wind doing the work, not the warm afternoon it arrives on.
Last month we published a piece about the wind off Lake Michigan and what it does to run scoring at Wrigley Field. The thesis was that a run projection is a guess about the air as much as the bats, and that our projection had been guessing about the bats while the air did whatever it wanted. We put the wind into the model, credited it with about a run on the windiest days, and called the blind spot fixed.
The instinct was right. The number was timid. This is the update where we admit the correction we were proud of was itself under-projecting, by a lot.
What the fuller test found
After tightening the park factors elsewhere in the model, we came back to Wrigley with a season-by-season, point-in-time walk-forward across 2024, 2025, and 2026, scoring every Cubs home game against the wind that actually blew that afternoon. Before any correction, the projection had been treating the park as very nearly windless. It produced roughly the same run total no matter what the flags were doing. The flags were not doing roughly the same thing.
Fig. 1 · Same matchup, different air
How far a hard Lake Michigan wind can move one Wrigley run projection · white ticks mark the original one-run fix
Here is the part we understated. On a hard day with the wind screaming in off the lake, the park can pull as many as five runs off the total two teams would otherwise be expected to score. On a hard day blowing the other way, out toward the bleachers, it can put as many as five runs on. Between those two versions of the same matchup, same lineups, same pitchers, different air, sits close to a ten-run spread. Our original one-run adjustment was moving the number in the right direction and stopping a small fraction of the way there.
An ordinary breeze still only moves the projection a run or two. The correction scales with the wind and is capped, so even a gale cannot run away with the number. But the ceiling is no longer a single run. It is most of a crooked number.
Wind, not warmth
The more interesting thing the test settled is why the park scores the way it does on those days. The obvious suspect is heat. Wrigley’s blowing-out days tend to be warm summer afternoons, and warm air carries the ball, so maybe the wind term was quietly taking credit for a temperature effect.
Fig. 2a · Hold temperature fixed
The wind’s effect barely moves
The wind is the cause. Strip the warm afternoons out and the wind still moves Wrigley scoring nearly as hard.
Fig. 2b · Hold wind fixed
The heat’s effect all but vanishes
The warmth was riding along. Hot days score more because they are blowing-out days, not because they are hot.
It was not. When we held the temperature fixed and looked only at the wind, the wind’s effect barely moved. When we did the reverse, held the wind fixed and looked at the temperature, the temperature’s effect all but vanished. Hot days at Wrigley score more because they are blowing-out days, not because they are hot. The wind is the cause. The warmth was riding along with it. That told us the lever to pull was the wind itself, not a general summer-heat term.
Same shape, bigger number
Nothing about the mechanism changed. Direction still sets the sign: out adds runs, in subtracts them. Speed still sets the magnitude. The whole thing is still capped, still gated so a calm day does nothing, and still deliberately narrow: one park, Cubs home games only, and only when there is genuine wind to read. What changed is how far a real wind is now allowed to move the number. The exact coefficient stays part of the live model behind the paywall, as before. The shape is public; the recipe is not.
Sized across three seasons, not one
The size of the effect varies from season to season, so we did not tune the correction to the single strongest year and call it settled. We set it to the level that held up across all three seasons, then checked it on the ones it was not fit to. It improved the projection’s accuracy in every season we looked at, including the mildest. The park that was our most consistent blind spot, and then briefly a fix that undershot, is now carrying a wind term sized to what three years of weather and run scoring actually did. The record keeps accumulating from here.
Accuracy improvedScored point-in-time, out of fit
Accuracy improvedScored point-in-time, out of fit
Accuracy improvedIncluding the mildest wind year
Fig. 3 · The correction was set to the level that held across all three seasons, then checked against the ones it was not fit to. It improved every one.
Sometimes the thing most in need of an honest fix is your own earlier one.
The lesson, one turn deeper
The original piece closed on the idea that the honest fix is small, narrow, and tested in advance rather than a sweeping new system. That still holds. This update just adds the uncomfortable corollary: sometimes the thing most in need of an honest fix is your own earlier one. The wind off the lake was never noise, and it turns out it was never small either. The projection is still a guess about the air as much as the bats. We just stopped low-balling the air.
