New to these reports? Start here
- Dotted-underlined words have a plain-English definition — hover or tap them. Every term is also on the glossary page.
- "Null" means we found nothing, not that something broke. Most reports here are negative results, on purpose — knowing an idea doesn't work is the point.
- Two questions get asked separately. First, is the effect real? Second, is it already priced into the betting odds? An effect can be completely real and still useless to bet on.
- A "calibration" row is a self-check. It runs the same method on something already known to be true. If that fails, the whole report is unreliable — so it's reported alongside the findings.
- If a confidence interval includes zero, the real effect might be nothing at all, so no claim gets made.
March Madness Bracket Strategy vs the Real ESPN Field
Study, 2026-10-29. Men's tournament, 2023-2026. Question: which bracket strategy wins pools most often, given how the public actually picks?
Verdict (revised same day after the stress tests below): pick the most likely winner of every game. Popular first-round upsets always hurt. The contrarian-champion advice for big pools holds only if our title odds beat the public's; if the public is right, it turns from the best strategy into the worst. Settle that with historical title futures before trusting it.
Original verdict: pick the most likely winner of every game, except the champion. In pools of about 10-25, take the most likely champion too. From about 100 entrants up, take a strong team the public is under-picking as champion; that roughly doubled pool-winning chances in the sim. Picking popular first-round upsets (10/11/12 seeds) always hurt.
Data
- Public picks: ESPN Tournament Challenge, public API
(
collect.py->data/espn_brackets.json). For all 63 games, the share of ~20 million brackets that picked each team to win that game, plus results. Available for 2023-2026 only; 2022 and earlier return not found. - Win probabilities: ratings fit to every game score before Selection
Sunday (
ratings.py): ridge least squares on margin with home court, 60-day half-life, p = Phi(rating gap / 12.03). Settings were chosen on Feb 15 to Selection Sunday games of 2021-2026 (tune_ratings.py), not on tournaments.
Are the ratings good enough? (check_tournament.py)
All 252 tournament games, 2023-2026, ratings frozen before the bracket:
| Log losslog lossA score for probability forecasts that punishes confident wrong answers harshly. Lower is better. | Brier | |
|---|---|---|
| Ratings | 0.514 | 0.172 |
| Seed difference (fit in-samplein-sampleMeasured on the same data used to build or tune the idea. Nearly always looks better than reality., so generous) | 0.531 | 0.178 |
| ESPN betting line, 2024-26 only (189 games) | 0.474 | — |
| Ratings on those same 189 | 0.476 | — |
About as good as the betting line on single games and better than seeds. The ratings sit about 2.6 points per game from the line, so the sim adds per-team rating noise of 1.8 points to every simulated tournament.
The sim (sim.py)
- 10,000 tournaments per year from the ratings (plus rating noise).
- Rivals: 40,000 brackets per year sampled from ESPN's public shares, champion first, then each other game consistent with picks already made. Sampled title shares match ESPN's to within a point.
- ESPN scoring (10-20-40-80-160-320), winner take all, ties split.
- Equity = chance of winning the pool x (entrants). 1.0 = fair share.
- The champion search picks its champion on half the sims and is scored on the other half.
Average equity, 2023-2026
| Pool size | Copy the public's favourite picks | Most likely winner every game | Same + 10/11/12-seed upsets | Best champion (held-out) |
|---|---|---|---|---|
| 10 | 2.04 | 2.43 | 1.99 | 2.42 (same as most likely) |
| 25 | 1.94 | 2.52 | 1.93 | 2.57 |
| 100 | 1.66 | 2.43 | 1.68 | 4.24 |
| 500 | 0.99 | 1.93 | 1.06 | 5.73 |
Champions the search chose: N=10: ALA, HOU, DUKE, DUKE (the model's favourite each year). N=500: TENN (4 seed, 2023), AUB (4 seed, 2024), ISU (2025), ILL (2026), all teams whose model title chance was about twice their public share.
What actually happened (4 tournaments, too few to judge)
| Year | Champion | Most likely bracket beat | Big-pool bracket beat |
|---|---|---|---|
| 2023 | UConn (4 seed) | 55% of field | 55% (TENN) |
| 2024 | UConn | 68% | 33% (AUB lost round 1) |
| 2025 | Florida | 84% | 61% (ISU) |
| 2026 | Michigan | 82% | 87% (ILL) |
The contrarian champion is a long shot by design: it loses most years and wins the pool in the years it hits.
Caveats
- The sim's truth is our ratings. Every strategy's edge over the public assumes the ratings are closer to reality than the crowd. They match the betting line on single games, but title odds compound six rounds and were not checked against futures prices.
- The absolute equity levels depend on the rival model. Sampled rivals pick each game independently; real people are more correlated (chalky people stay chalky), which makes the field stronger than sampled. Trust the ranking of strategies more than the numbers.
- ESPN's public is one field. An office pool of fans of one school, or a paid pool of sharper players, picks differently.
- Four tournaments; men's only. Women's shares exist (2023-2026) but there is no women's game data in the DB yet.
Stress tests (added 2026-10-29)
Is the simulated public as strong as the real one? (validate_field.py)
ESPN's featured entries (analysts, celebrities; 187 brackets, 2024-2026) show each bracket's real score and percentile in the full field. Scoring the simulated public on the actual tournaments:
| Year | Real 90th pct score | Sim 90th pct | Real median | Sim median |
|---|---|---|---|---|
| 2024 | 1203 | 1180 | 668 | 740 |
| 2025 | 1372 | 1380 | 892 | 950 |
| 2026 | 1164 | 1190 | 749 | 770 |
From the median up the sim matches the real field closely, and that's the part that wins pools. The real field also has a tail of abandoned or broken brackets (5-10% scoring under ~450) that the sim lacks; those never win.
What if the public is right? (stress_truth.py)
"Public ratings" were fit so their advancement odds reproduce ESPN's pick shares. The truth was then set partway from our ratings to those (w = 0, 0.5, 1). Brackets were still built from our ratings, and the contrarian champion was still chosen in the w = 0 world. Pick shares overstate favourites, so w = 1 is a harsh case. Average equity, 2023-2026:
| Truth | Pool | Copy public | Most likely every game | Contrarian champion |
|---|---|---|---|---|
| Our ratings | 100 | 1.47 | 2.47 | 4.26 |
| Our ratings | 500 | 1.10 | 1.67 | 5.63 |
| Halfway | 100 | 2.22 | 2.78 | 3.28 |
| Halfway | 500 | 1.65 | 2.35 | 3.67 |
| Public right | 100 | 3.01 | 2.66 | 1.68 |
| Public right | 500 | 2.91 | 2.51 | 1.77 |
| Any truth | 10 | 2.0-2.7 | 2.3-2.4 | same as most likely |
Where the title odds disagree most: UConn 2024 (ours 15%, public 27%), Arizona 2026 (15% vs 24%), Auburn 2024 (9% vs 3%), Tennessee 2023 (6% vs 2%). The contrarian picks live exactly in those gaps. Our ratings matched the betting line on single games, but nobody has checked them against title futures; that is the deciding test.
Files
collect.py, ratings.py, tune_ratings.py / tune_results.json,
check_tournament.py / tournament_check.json, sim.py / sim_results.json,
validate_field.py / field_validation.json, stress_truth.py / stress_results.json,
data/espn_featured_percentiles.json (scores and percentiles only, no names),
data/espn_brackets.json.