How we predict
We do not pick winners. We assign probabilities. When we say a driver has a 28% chance of winning, we mean that across many similar situations, that outcome would occur roughly 28% of the time.
Our system connects directly to primary F1 data sources, engineers 52 predictive features, fuses four distinct signals (Elo, ensemble model, recent form, team performance), and runs 10,000 Monte Carlo simulations. Every prediction is published before the race and scored after.
↓Tap any stage to explore the detail
Each feature is normalised, validated against outliers, and weighted by recency. The feature store regenerates completely before each race weekend.
- Qualifying pace delta vs teammate
- Race pace & tyre degradation curve
- Circuit-specific historical performance
- Weather conditions & forecast accuracy
- Safety Car & VSC probability
- Constructor development trajectory (R-squared slope)
# 52 features per driver-race combinationdef build_features(driver, race): features = {} features['quali_pace_delta'] = quali_delta(driver, race) features['tyre_degradation'] = deg_curve(driver, race, compound) features['circuit_history'] = track_score(driver, race.circuit) features['dev_slope'] = constructor_trend(driver.team, n=5) return normalise(features) # 52 keysPrimary Data
Official classifications come directly from formula1.com and the FIA. Historical OpenF1 data enriches post-session analysis only, with attribution. Every data point is traceable to its origin.
- formula1.com (official results, qualifying, standings)
- FIA (stewards decisions, regulations)
- Historical archive (1950–2024, one-time import)
- OpenF1 historical API (attributed enrichment, CC BY-NC-SA 4.0)
Feature Engineering
Raw session data is transformed into 52 predictive features for each driver-race combination.
- Qualifying pace
- Race pace & tyre degradation
- Circuit history
- Weather conditions
- Safety Car probability
- Constructor development trajectory
Model Inference
An Elo rating system combined with recent form and team performance generates calibrated probabilities, validated by 10,000 Monte Carlo simulations.
- Elo ratings with regulation resets
- Recent form + team car performance signals
- Monte Carlo simulation (10,000 paths)
- Dynamic weighting as season data grows
Race Winner
Win probability for each driver, combining Elo ratings with recent form and car performance
Podium
P(podium) for each driver via Monte Carlo position distribution
Safety Car
Probability of Safety Car, VSC, or red flag during a race
Monte Carlo
10,000 race simulations producing full position distributions and expected points
Championship
Season-long points simulation and title probability
Calibration
Probability calibration and scoring against standard baselines
Every prediction we publish is scored against reality. No cherry-picking, no retroactive adjustments. The full history is public.
What is a Brier score?
The Brier score measures the accuracy of probabilistic predictions. It is the mean squared difference between predicted probabilities and actual outcomes. A perfect score is 0.000. A coin flip on a 20-driver field scores approximately 0.090.
We also compute a skill score: how much better (or worse) our predictions are compared to naive baselines like grid position or championship standings. A positive skill score means our model adds value over simpler approaches.
The same scoring system is used in meteorology, epidemiology, and quantitative finance. It penalises overconfidence and rewards honest uncertainty.
243
Win probabilities scored
across 11 live races
—
Accuracy
0.038
Brier score
Official results, qualifying and championship standings come only from formula1.com. Historical OpenF1 data enriches post-session analysis under CC BY-NC-SA 4.0: it is attributed, labelled as non-official, and never used to set or overwrite a result. No live timing feed is used.
formula1.com
Authoritative source for race results, qualifying, championship standings, drivers, teams and calendar
FIA
Stewards decisions, technical directives, regulations, penalty points
Historical archive
Race data from 1950 to 2024, imported once from an audited archive and normalised
OpenF1 historical API
Post-session laps, stints, weather and race control. Non-official enrichment under CC BY-NC-SA 4.0, attributed in every row
The same methodology, adapted per series. Our architecture is designed to support multiple motorsport championships from a single platform, but planned coverage stays off the page until it is verified and live.
Formula 1
Active
Since 1950