Independent · Python · 2025
Formula 1 race predictions, tested on 2014-2026

F1
Predict.

Predicting Formula 1 races using only what was known before each race, and showing how likely every result really is.

75
Things it measures for each race
5
Models blended into one
50k
Races simulated per second
2014-26
Seasons it was tested on
Area
Independent
Stack
Python · LightGBM · Monte Carlo · Streamlit
What it is

What it
is.

F1Predict predicts Formula 1 races: who is likely to win, reach the podium or score points, and how likely each outcome really is.

It follows one strict rule: to predict a race, it may only use information that existed before that race. That sounds obvious, and it is the easiest rule in machine learning to break by accident.

How it works

How it
works.

Learn from history, carefully

About 75 measures of driver form, team trajectory, track history and weather, each built only from races that had already happened.

Five models, one answer

Five different models read the same race, and a final step blends where they agree and disagree into one probability.

Run the race 50,000 times

Simulating 50,000 races in under a second turns one prediction into a full picture of what could happen.

Interactive · Live in Your Browser

The
What-If Lab.

F1Predict's CLI has a command for exactly this: whatif --driver … --grid … --weather … --recent-form-boost …. This is that command, made visual: move the sliders and watch the starting grid recompute its odds live, seeded with the model's real Bahrain GP 2024 baseline probabilities.

P1
Dry
1.00×
-
P(Win)
-
P(Podium)
-
Expected Points
Real Bahrain GP 2024 baseline probabilities, scaled live by a grid-position decay curve, a per-driver weather table, and your form multiplier, then renormalised across the six selectable drivers. A browser-scale approximation of the real pipeline, not the Python model itself.
What I learned

What I
learned.

Never let the model see the future

My first test scored suspiciously well. One feature, a season-end team ranking, had quietly looked ahead. I rebuilt everything around one rule: if it could not have been known on race morning, it does not exist yet. The honest score was lower, and it was the first one I could trust.

Complexity has to earn its place

It started as one model. Each new model had to prove it improved the results before it could stay, and two that did not are not in it.

A range is more honest than a guess

A single predicted finishing order sounds confident and hides its uncertainty. Thousands of simulated races show that the front row is close to certain and the midfield is close to a coin flip.