Signals & sources
More data is only better if it carries signal the model does not already have. Every candidate is tested the same way: take it out, re-run the walk-forward backtest, and see whether the predictions got worse. Signals that do not earn their place are listed here anyway, with the evidence.
After qualifying: what each signal is worth
108 races, 2022–nowBar = how much worse out-of-sample log-loss gets when the signal is removed (×1000). Right of zero: it helps. Near zero: redundant with something else. Left: it was adding noise. Signals marked off were switched off by feature selection on the 2018–21 validation window, before these test races were scored; the bar shows what the test window says about that decision.
Before qualifying: what each signal is worth
108 races, 2022–nowBar = how much worse out-of-sample log-loss gets when the signal is removed (×1000). Right of zero: it helps. Near zero: redundant with something else. Left: it was adding noise. Signals marked off were switched off by feature selection on the 2018–21 validation window, before these test races were scored; the bar shows what the test window says about that decision.
Hunches, tested
places gained vs grid, finishers 2018–now| Signal | Correlation | p-value | n | Verdict |
|---|---|---|---|---|
| Practice one-lap gap | +0.190 | 6.1e-20 | 2278 | Real, worth modelling |
| Team-mate qualifying delta | +0.067 | 1.3e-04 | 3221 | Real, worth modelling |
| Speed-trap vs field | -0.079 | 1.8e-04 | 2272 | Real, worth modelling |
| History at this circuit | +0.052 | 0.003 | 3221 | Real, worth modelling |
| Energy derate vs field (2026) | -0.123 | 0.042 | 275 | Weak evidence |
| Days since last race | +0.030 | 0.092 | 3221 | No detectable effect |
| Air temperature | -0.021 | 0.229 | 3221 | No detectable effect |
| Time-zone shift since last race (h) | +0.020 | 0.252 | 3221 | No detectable effect |
| Rain | -0.020 | 0.260 | 3221 | No detectable effect |
| Practice long-run gap | +0.024 | 0.273 | 2120 | No detectable effect |
| Wet skill (any weather) | +0.011 | 0.547 | 3221 | No detectable effect |
| Experience | -0.007 | 0.709 | 3221 | No detectable effect |
| Home race | +0.006 | 0.733 | 3221 | No detectable effect |
| Track temperature | +0.003 | 0.891 | 2287 | No detectable effect |
Spearman correlation with places gained from the grid. Positive = associated with moving forward. With thousands of rows almost anything is "significant"; the size of the correlation is what matters.
Data sources
Schedule, results, qualifying, sprints, 1950-now. The backbone every other source joins onto.
Hours after a session · 6,375 rows · latest 2026 R17Lap timing for practice, qualifying and race since 2018: one-lap and long-run pace, speed traps, tyres, track status, lap-by-lap positions, track weather.
~30 min after a session · 3,928 rows · latest 2026 R17Fast path for the grid (classification minutes after qualifying) and 3.7 Hz car telemetry, used to measure 2026 energy derating at full throttle.
Minutes after a sessionHourly weather for the race window at the circuit: forecast with rain probability before, ERA5 reanalysis after.
Forecast refreshed every 3 h · 309 rows · latest 2026 R18Pre-race winner prices. Scored against the model, never fed into it; a model trained on the market can only echo it.
Live order book · 132 rows · latest 2026 R17Time-zone shift and days since the previous race per driver (jet lag, back-to-backs), home race flag.
-e.g. a driver streaming iRacing late the night before. Twitch keeps VODs 60 days and needs app credentials, so there is no back-history to test it on; collector design is in docs/SOURCES.md. Not modelled until it can be backtested.
-Which three compounds each race uses. Press releases only, no API; partly captured by FastF1 compounds.
-Grid penalties and power-unit element usage. Grid penalties already arrive through the OpenF1 starting grid; PDF scraping for component counts is next.
-