Altitude Correction: Reaching New Heights in Prediction Accuracy

A look at how we're improving our marathon predictor by accounting for training altitude.

It’s well known that training at altitude places a different kind of stress on the body compared to sea level [1], [2], [3]. With less oxygen available due to lower atmospheric pressure, runners tend to go slower despite working just as hard. The reduced air pressure at higher altitudes means there are fewer oxygen molecules in each breath. As a result, the body compensates with a higher heart rate to deliver oxygen to working muscles. Importantly, your muscles require the same amount of oxygen to produce power whether you’re at sea level or high in the mountains. So at altitude, your cardiovascular system has to work harder to achieve the same output—meaning workouts at altitude don’t fully reflect your muscular potential.

We’ve noticed this phenomenon in our own athletes, and it’s been subtly impacting the accuracy of our marathon predictor. Anecdotally, we’ve observed that runners who train at altitude often outperform their predictions. The data backs this up.

Altitude Error Trend

We analyzed the relationship between an athlete’s training altitude and the accuracy of their marathon predictions. The training altitude comes from recorded altitudes on athletes' training runs (most running watches have a barometer that allows you to measure the altitude). What we found was a clear trend: as training altitude increases, so does the model’s bias. Specifically, at higher altitudes, the model tends to overpredict finish times—that is, it estimates runners will be slower than they actually are on race-day at sea level.

Ideally, a well-calibrated model should have prediction errors centered around zero. While some noise is inevitable (due to factors we can’t measure), we aim for a balanced spread—some predictions slightly fast, some slightly slow, but on average, no consistent bias. However, when we control for altitude, we see a clear shift. The model becomes increasingly pessimistic the higher the training altitude.

Interestingly, the size of this bias scales seems to scale linearly with altitude. For every 1,000 feet gained, the median model error increases by approximately 0.8%. That just so happens to mirror the well-established rate of oxygen decrease per 1,000 feet of elevation—offering a neat physiological explanation for what we’re seeing in the data.

Armed with this insight, we built a correction function into our predictor. When we backtested it, we found that most sea-level athletes saw no change—because the original predictions were already well-calibrated. But for athletes training at 3,000 feet and above, the improvements were significant: we saw a 10% relative gain in accuracy. For those training above 5,000 feet, the improvements were even larger—up to 13%.

This correction is now live on GetFast. By default, all athletes’ predictions are automatically adjusted for training altitude. If you were happy with the previous model, you can disable this adjustment in the marathon dashboard. This might make sense for athletes who trained at altitude but raced at sea level—a common scenario where a recent tune-up race could already have “normalized” your data.

We’re continuing to improve our models, and one area we’re excited about is handling mixed-altitude training. For now, though, this update should make predictions smarter and fairer for the mountain runners among us.