Sports · Data science · Predict + report
Call the game
Predict the home team's winning margin in an NBA game from the two teams' form and ratings before tip-off.
Cash prizes for the top three. Amounts are announced on Monday 2 November 2026 and paid after the audit. Prizes need a beaten baseline, a filed solution report and a reproducible pipeline — see the rules and terms.
- Metric
- MAE (lower is better)
- Baseline
- 10.619
- Home court +3 (0 on a neutral court)
- Honest model
- 9.472
- Default gradient-boosted tree on the shipped features
- Closes
- 29 Nov 2026, 23:59 UTC
- opens 5 Oct 2026, 00:00 UTC
- Entrants
- 0
- 5/day · select 2
Overview
The problem. Before tip-off, how many points will the home team win by? Every rating system, every broadcaster's graphic and every fair betting line is an answer to this question. FiveThirtyEight's Elo dataset gives you every NBA and ABA game since 1946 with both teams' ratings before the game. Your job: for the 3,944 games of the 2012-13, 2013-14 and 2014-15 seasons, estimate the home margin.
The data. Train: every game from 1946-47 to 2011-12, 59,213 rows. Test: the three seasons after. Each row has the season, league, playoff and neutral-court flags, day of season, opaque team and franchise codes, both teams' pre-game Elo, FiveThirtyEight's pre-game home win probability, each team's game number in the season and days of rest. The target is home points minus away points. Names, dates and scores are withheld.
Scoring. Mean absolute error in points, lower is better. Games are public (30%) or private (70%) by a hash of the game; your standing is the private split.
Baselines (private split). Home court +3 (0 on a neutral court): 10.62. A default gradient-boosted tree on the shipped columns: 9.47.
Why it is here. Sport is the on-ramp: the skills are identical to the other three problems, the data is the cleanest public sports data there is, and the margin of a game is a number everybody already argues about.
How you are graded
70% the metric, 30% the report. Your selected submissions are scored on the withheld private split at close; your rank there becomes metric points (first of the field = 1, last = 0; below the baseline = 0). Your solution report is graded against the five criteria below by three independent, blind judges — two model families and one variant prompt — at temperature 0; each criterion takes the median level, and any spread of more than one level goes to a human. Final points = 70 × metric points + 30 × report score. Medals and prizes need a beaten baseline and a filed report; the top ten are audited by re-running their code from train.csv.
| Criterion | Level 2 — Solid | Level 3 — Exemplary |
|---|---|---|
| Problem framing and impact | States the decision, the user and what a given error costs them. | As 2, and quantifies the value of the improvement over the baseline in the user's terms. |
| Data understanding and validation | A split that mirrors the test split; leakage risks named and handled. | As 2, with evidence the local validation tracks the public score, and a data finding that changed the approach. |
| Method and rigour | Choices justified, compared against both pinned baselines, at least one thing that failed reported honestly. | As 2, with an ablation or sensitivity check that shows which parts matter. |
| Error analysis and limitations | Shows where the model fails (segments, conditions) and gives a plausible reason. | As 2, and states the deployment risks: who is harmed if it is over-trusted, what would have to be monitored. |
| Reproducibility and clarity | Code, environment and steps that a reader could run; prose is clear and within length. | As 2, with fixed seeds, a one-command run, and results that match the report. |
All four levels, the judge prompts, model ids and the calibration statistics are published with the results. Rules and terms.
Timeline
- Mon, 5 Oct 2026OpensData released; submissions accepted.
- Mon, 2 Nov 2026Mid-pointPrize pool announced; first clinic.
- Sun, 29 Nov 2026ClosesReport and selections frozen; final 48 hours are the quiet period.
- Mon, 7 Dec 2026ResultsPrivate standings, medals and the transparency pack. Seven days to appeal.
Data
Sources and licences
- FiveThirtyEight NBA Elo (nbaallelo.csv) — Creative Commons Attribution 4.0 International (CC BY 4.0) · retrieved 2026-09-21
Data: FiveThirtyEight, 'The Complete History Of The NBA' (nba-elo), CC BY 4.0
Split. Seasons through 2011-12 are train; 2012-13, 2013-14 and 2014-15 are test. Within the test seasons each game is public (30%) or private (70%) by a hash of its id.
Changes made. Two-sided rows collapsed to one row per game; home/away derived from game_location; rest days and day-of-season computed from the dates; team, franchise and game ids replaced by opaque codes; dates, points and post-game Elo removed from the shipped files.
Withheld. Team and franchise names; Game dates; Points scored; Post-game Elo (elo_n, win_equiv).
Rows: train 59,213 · test 3,944 (public 1,185, private 2,759).
Artefact audit passed: No duplicate rows across train and test (0 of 3944 test rows have an identical feature row in train); 1-NN does not beat the honest model (1-NN mae 13.6775 vs honest 9.5181); No single feature encodes the target (strongest |corr| 0.409 (home_forecast)); Row order is uncorrelated with the target (spearman(row index, target) = -0.023); The id does not encode the target (spearman(id number, target) = -0.005).
The listed 'home' side on a neutral court is the first-listed team in the source; the neutral flag tells you which rows those are.
| id | Row id. Use it in your submission. |
| season | Season, by the year it ended (1947 = 1946-47). |
| league | NBA or ABA. |
| playoffs | 1 if a playoff game. |
| neutral | 1 if played on a neutral court; the first-listed team is still called 'home'. |
| season_day | Days since the first game of that season. |
| home_team | Home team code (consistent across files; names withheld). |
| away_team | Away team code. |
| home_franchise | Franchise code — a franchise keeps its code across relocations and renames. |
| away_franchise | Away franchise code. |
| home_elo | Home team's Elo rating before the game (FiveThirtyEight's method). |
| away_elo | Away team's Elo rating before the game. |
| home_forecast | FiveThirtyEight's pre-game probability that the home team wins, from the two Elos and home court. |
| home_seasongame | The home team's game number in that season (1 = opener). |
| away_seasongame | The away team's game number in that season. |
| home_rest | Days since the home team's previous game; -1 if unknown. |
| away_rest | Days since the away team's previous game; -1 if unknown. |
| home_margin | Target. Home points minus away points (train only). Negative when the away team won. |
Sign in to download the data once the competition opens.
Rules
- One entry per person; your handle is fixed once you join. Entering means you accept the competition rules and terms.
- Up to 5 submissions a day (resets 00:00 UTC). Select up to 2 for final scoring; if you select none, your best public score's file is used.
- Train on the shipped data only. No external data beyond what the data card lists, and never the withheld targets from any source — looking them up is disqualification.
- Your solution report (30% of your points) is written on this page and graded as it stands at close. Medals and prizes need a filed report and a beaten baseline; the top ten are audited by re-running their code from train.csv.
- Sharing code or ideas publicly is fine; sharing a submission file is not (identical files are detected). One account per person. Text aimed at the grader scores zero.
- The final 48 hours are the quiet period: the public board freezes for viewers while you still see your own scores. Results are published once, after the audit, and are final subject to appeal.
The full competition terms apply to every entry.
