Every international football match since 1872
49,477 full internationals — from Scotland 0–0 England in 1872 to the 2026 World Cup group stage — one row per match, free under CC0.
What it is
The raw input behind EP 02 is the community-maintained
international football results dataset
(martj42/international_results),
released under CC0 1.0 —
public domain, take it and do what you want. It covers full internationals only: no Olympic
sides, no youth or B teams. Our snapshot is the exact one the episode's engine was built on —
played matches through 2026-06-21, mid group stage, with later fixtures
appearing as null scores. For results updated after every matchday, grab the live
results.csv from the upstream repo.
What's actually in it
The core table, results (parquet 0.4 MB, CSV 3.6 MB), is one row per match:
date, home_team, away_team, home_score, away_score, tournament, city, country,
neutral. Everything else is what our engine derives from it:
enriched — every match since 2008 with the pre-match Elo of both sides
(eh, ea) and the result, the table every model in the episode was
trained and tested on; current-elo — the running Elo for every national team;
current-ad — per-team attack/defense log-rate ratings feeding two Poisson
scoring rates; and calibration_truth — empirical win/draw/loss rates bucketed
by Elo gap, the ground truth every model gets graded against.
What the show found in it
That attack/defense table is the episode's champion engine. Out of sample, its log-loss is 0.8703 against 0.8783 for the Elo-gap baseline — the margin that separates the math from the vibes when a semifinal is on the line. The full bracket machine it powers, and the match where it met the lucky hat, are on the episode receipts page.
Query it yourself
DuckDB reads parquet straight off the URL — no download needed. How often does the higher-Elo side actually win a decisive match?
SELECT round(100.0*avg(((eh > ea) = (result='H'))::int),1) AS fav_won_pct
FROM read_parquet('https://data.mathvsvibes.com/wc/enriched.parquet')
WHERE result <> 'D' AND neutral;
Dataset post · dataset published 2026-07-08, posted 2026-08-06. The first match on record was a nil-nil draw. The dataset peaked early.