The engine room is part of premium: the model competition, the backtests and the calibration.
Elo model comparison teammate head-to-head, out-of-sample
Run python -m f1t.engine.experiment to populate.
Strength model internals
Walk-forward backtest
Model competition - 2026 holdout
Run python -m f1t.engine.compete to populate.
Promotion history the loop's own decisions - promotions and holds
No post-race cycle has run yet.
Free prediction
Finishing position odds
The full finishing-position grid for every race, the next one, later ones and every round back to 2024, is part of premium.
Finishing position odds
How to read this
Each row is a driver. Next to each name is the expected finish - the driver's average finishing position over the simulated races they finish - and beside it, in its own column, DNF: the chance they do not finish at all (retirement, crash, or mechanical failure). The columns after it are the finishing positions, P1 (the win) through last place. Each cell shows the model's estimated chance of that exact result, from thousands of simulated runs of the race; darker cells are more likely, and the rows run from the best expected finish down.
Hover any cell or column header for exact figures. For finished rounds, the grid is the round reconstructed with today's model as of the race start, the outlined cell in each row marks where the driver actually finished, the season table below scores every finished round the same way, and, where the board was running at the time, a panel shows what it actually served and settles its market calls against the real result.
The verdict numbers, in plain words: log-loss is how surprised the model was by the result (lower is better, and under our ~3.0 season average is a good round). A Brier score is the squared gap between a probability and what happened, from 0 (said it, and it happened) to 1 (ruled it out, and it happened); a coin flip scores 0.25. Podium overlap counts how many of our three most likely podium finishers really got there, and Spearman asks whether the whole field finished in the order we ranked them (1.0 exact, 0 none). "As served" grades what the app actually displayed before the race, by the model that was running then. Hover any metric for its own explanation.
Season complete - no remaining rounds to predict.
Prediction versus outcome
No settleable market calls were recorded for this round.
Season accuracy so far
Every other market, the filters and the exchange links are part of premium.
Prediction markets model price versus market price
Nothing matches these filters.
Race sim
The odds behind every card and driver, past rounds and later races are part of premium.
Show
Model versus market
The model's record against Polymarket and Kalshi, and its download, are part of premium.
Model versus market
Model
Polymarket
Kalshi
Model versus outcome
Download the record
Season All seasons
Team builder entertainment only
Engine Era
Team
Driver
Co-Driver
Spin era + team to start building your fantasy team.
Loading the leaderboard.
Competition result
Replay settings
Everyone here runs at their career peak. Whoever you land, you get the best version of them that ever raced.
The reels play real odds. Solid teams land most often, all-time greats are rare jackpots, and deep obscurities turn up just often enough to stay interesting.
Your engine era sets a bonus or a penalty from how that era's teams actually performed. Reliability is fair: everyone in the field retires at the rates of the season you race in.
Seasons are deterministic, so the same lineup in the same competition always plays out the same way. Submit a season and it takes its own seat on the leaderboard.
In race replays your own cars glow red. Seat one wears a white ring, seat two a black ring. The gear button saves your default replay speed and laps.
Just for fun - simulated results, not predictions.
Account
A one-time $1 unlocks the whole dashboard, for good.
Reading the track record
Everything on this page answers one question: when the model and a prediction market disagreed, who turned out to be right, and was it worth acting on? Each term below comes with a small example.
Positions
Every market the model priced is a yes-or-no question on Kalshi or Polymarket, such as "Will Verstappen win the race?". When the model's chance and the exchange's price disagree by at least the minimum edge, the record takes a position on the side the model favours: YES when it thinks the price is too low, NO when it thinks the price is too high.
First signal is the first moment the disagreement appeared. At the close is the last price before the market left the board (qualifying for pole, the race start for everything else). Once the result is known, a position is a hit or a miss. A market that cannot be settled (no result stored) is void and counts in neither.
Edge
The distance from the model's chance to the price, in points.
Example: the model gives a driver a 30% chance of the fastest lap, and YES sells at 22 cents. That is an 8-point edge in favour of YES.
Return per dollar and profit
Each position buys one contract that pays $1 if it hits and nothing if it misses. Return per dollar is the profit after the exchange's fee, divided by what was paid. A miss always loses the whole stake, so one hit can pay for several misses when the price was low.
Illustration, not from the record: a YES bought at 22 cents that hits pays 78 cents of profit on 22 cents staked, a profit of about $3.55 per dollar staked, before fees. A miss loses the 22 cents.
Win rate and its likely range
The share of positions that hit. Each one is a plain yes or no, so a few results can swing the rate a lot. That is why every win rate comes with a likely range: where the true rate probably sits, 95 times in 100.
Example: 4 hits in 20 is 20%, but the likely range runs from 8% to 42%. With 200 positions at the same 20% it narrows to about 15% to 26%. The wider the range, the less the number proves.
The range is a Wilson interval, which stays sensible with tiny samples and at 0% or 100%, unlike a plain plus-or-minus. Groups with fewer than 5 positions are faded and marked waiting for data. Groups with 5 to 9 are marked preliminary.
Calibration
Takes every settled market the model priced, groups them by the chance the model gave, and checks how often they really happened. A well-calibrated model sits on the diagonal. A market listed on both exchanges is one question with one answer, so the model's side counts it once.
Example: of all the markets the model put at 10 to 20%, about 15% should have happened. If 30% did, the model was too cautious there. If 5% did, it was too hopeful.
The market's own prices are plotted the same way, so you can see which of the two read that range more accurately. Each exchange's book counts on its own there, so a market listed on both exchanges can count twice. The market's price is the middle of a two-sided book, with both a bid and an ask no more than 20 points apart. A listing price alone, a book with one side or none, and a wider book say what a trade would cost, not what the market believes, so those listings are left out of the market's side and counted under the chart.
The Brier score sums it up in one number: the average squared gap between the chance given and what happened (1 for yes, 0 for no). Lower is better. Compare the model's with the market's own Brier score: both are scored on exactly the same exchange listings, the ones with a two-sided book, so a market with a usable book on both exchanges is scored once for each.
Model versus market
One dot per position. Across is the price paid, up is the model's chance for that side. Dots above the diagonal are where the model saw value. Green dots hit, red dots missed. A dot's size follows its return per dollar: a hit bought cheap pays several times its stake and draws large, while every miss loses exactly its stake and draws at one small size. Click a dot to open its market.
Return by edge size
Groups positions by how big the edge was at entry. If the model really knows something, bigger disagreements should pay more often. Each group also shows how often it won against how often the model expected to win and how often the price implied.
Confidence rating
Every prediction carries a 1 to 99 rating of how much to trust it. It is lower early in a season, when the simulation is noisy, when the model disagrees hard with a deep market, when the market is thin, and when news has flagged the driver or team.
The chart pools every position at or above each rating and asks two things: do the higher-rated ones win more often, and do they beat the price paid? The table calls a threshold beats the market only when its whole likely range sits above the average price paid, below the market when the whole range sits under it, and inconclusive otherwise.
Illustration, not from the record: say 150 positions are rated 70 or higher, are bought at an average of 40 cents and win 55% of the time, with a likely range of 47% to 63%. The whole range is above 40%, so that group reads beats the market.
Fees are not part of this verdict. It compares the win rate's likely range with the average price paid only. A group can therefore read beats the market while its return after fees is still negative, so always read the return beside it.
Rebuilt rounds
The live record began on 6 October 2026. Earlier rounds can be rebuilt after the fact, but only from what was really stored at the time: the prices the app actually served, and the exchange prices it actually saved at that moment, on the same schedule and rules as the live record.
A slot that lacks either one stays a gap rather than being filled in. So does a slot with no stored order book: an exchange price saved as a listing price alone (every Polymarket price stored until 25 September 2026) is not a price anyone could trade at, so no position is ever taken at it.
Rebuilt positions are marked where a single position or market is shown: hovering a dot in Model versus market says rebuilt, the market list marks each market holding rebuilt snapshots, the best-hit example above says so, and the download names every row's origin. The line above the tiles names the rebuilt rounds. The tiles, the profit curve and the other views count rebuilt and live positions together.