NCAA Wrestling Atlas: analysis of the supplied championship archive
Snapshot: 1928–2025. Analysis produced September 13, 2026. Match-result findings derive from the supplied workbook plus the two corrections in data/corrections.json. Championship counts also use the 15 sourced historical awards in data/historical_awards.json, and bracket-topology metrics use the separately reviewed NWHOF evidence recorded in data/curation/bracket_formats.json. Every section has reusable CSV output under data/processed/analysis and runnable SQL in sql/analysis.sql. The database also contains analysis_metric and the analytical views.
Findings to start with
- Historical formats change the answer. A query for source round 1st yields 884 finals and omits every champion in 1936 and 1948. Adding explicitly sourced award records raises the total to 899 without adding invented matches.
- The leading program depends on the era. Oklahoma State leads the full snapshot with 144 individual titles. In 2010–2025, Pennsylvania State took 40 of 150 available titles (26.7%). Raw cumulative totals and share within an era answer different questions.
- Carter Starocci has five title awards in the archive. The identity-linked champion table supports repeated-title and cross-weight questions without interpreting an athlete's entire career.
- Seeded upsets are common but denominator-sensitive. The conditional rate is 30.1%, restricted to two distinct positive recorded seeds. It says nothing about the many historical zero-seed rows.
- Recent scoring changed sharply. Average total points in scored DEC/MD/SD/TF outcomes moved from 9.24 in 2023 to 11.46 in 2024. The rule change altered the scoring scale and other conditions, so this is not a causal estimate.
- Data quality can change a historical title. The reversed 1928 135-pound final shifts a title from Oklahoma State to Iowa State. Raw preservation plus cited overlays makes that change inspectable.
What the data supports
The source contains 39,395 result rows, 39,371 single recorded outcomes with named competitors, and 94 tournament years. The analysis identifies 899 individual championship awards: 884 from source finals and 15 supplemented from archived 1936/1948 placement lists. It represents 323 normalized program labels, 24,564 observed tournament entries, and 13,167 conservatively separated wrestler entities. The 13,157 distinct nonblank source wrestler IDs are not a fully resolved people registry.
The calendar gaps are 1943, 1944, 1945, 2020. These years have no source rows and must appear as gaps, not zero-title tournaments. No 2026 results are present. Having a record for each year and weight does not independently prove that every historical bout is complete.
Bracket topology is separately reviewed rather than inferred from result order. Verified production graphs cover 2025 at 125 pounds, 2025 at 133 pounds, 2025 at 141 pounds, 2025 at 149 pounds, 2025 at 157 pounds, 2025 at 165 pounds, 2025 at 174 pounds, 2025 at 184 pounds, 2025 at 197 pounds and 2025 at 285 pounds: 950 nodes, 1900 slots, and 1260 advancement routes, including 310 byes without creating match rows. Every other competition retains results-by-round until its source page is audited.
Program history and concentration
The table counts individual weight-class titles, not team championships. Titles are less affected by changing field sizes than raw win totals, but each era offered a different number of weight classes. Use era_titles.csv and title_concentration.csv to compare shares of available titles.
| school | individual_titles | recorded_wins | recorded_losses | falls | observed_entries |
|---|---|---|---|---|---|
| Oklahoma State | 144 | 2381 | 1121 | 349 | 829 |
| Iowa | 85 | 1937 | 887 | 266 | 626 |
| Iowa State | 72 | 1682 | 944 | 246 | 636 |
| Oklahoma | 68 | 1585 | 973 | 235 | 657 |
| Pennsylvania State | 61 | 1502 | 833 | 182 | 574 |
| Lehigh (PA) | 28 | 1035 | 837 | 145 | 523 |
| Illinois | 25 | 844 | 661 | 95 | 419 |
| Michigan State | 25 | 814 | 649 | 123 | 416 |
| Ohio State | 25 | 808 | 581 | 101 | 354 |
| Cornell (NY) | 25 | 664 | 484 | 77 | 286 |
| Michigan | 24 | 1167 | 793 | 151 | 493 |
| Minnesota | 24 | 1162 | 777 | 161 | 468 |
| Northern Iowa | 23 | 852 | 799 | 120 | 478 |
| Wisconsin | 18 | 764 | 629 | 85 | 369 |
| Pittsburgh (PA) | 17 | 614 | 590 | 65 | 357 |
Leading programs in each chosen historical window:
| era | school | titles | available_titles | title_share |
|---|---|---|---|---|
| 1928–1942 | Oklahoma State | 45 | 117 | 38.5% |
| 1946–1969 | Oklahoma State | 39 | 232 | 16.8% |
| 1970–1989 | Iowa | 30 | 200 | 15.0% |
| 1990–2009 | Iowa | 33 | 200 | 16.5% |
| 2010–2025 | Pennsylvania State | 40 | 150 | 26.7% |
These windows are descriptive choices, not modeled regime changes. School labels are normalized only for case/whitespace, and predecessor institutions are not automatically combined. Participation and eligibility changed over the period; the table is not a causal ranking of coaching or program quality.
Repeated individual champions
| champion | individual_titles | title_years | schools |
|---|---|---|---|
| Carter Starocci | 5 | 2021,2022,2023,2024,2025 | Pennsylvania State |
| Pat Smith | 4 | 1990,1991,1992,1994 | Oklahoma State |
| Cael Sanderson | 4 | 1999,2000,2001,2002 | Iowa State |
| Kyle Dake | 4 | 2010,2011,2012,2013 | Cornell (NY) |
| Logan Stieber | 4 | 2012,2013,2014,2015 | Ohio State |
| John 'Yianni' Diakomihalis | 4 | 2018,2019,2022,2023 | Cornell (NY) |
| Aaron Brooks | 4 | 2021,2022,2023,2024 | Pennsylvania State |
| Earl McCready | 3 | 1928,1929,1930 | Oklahoma State |
| Conrad Caldwell | 3 | 1929,1930,1931 | Oklahoma State |
| Jack VanBebber | 3 | 1929,1930,1931 | Oklahoma State |
| Rex Peery | 3 | 1933,1934,1935 | Oklahoma State |
| Ross Flood | 3 | 1933,1934,1935 | Oklahoma State |
| Wayne Martin | 3 | 1934,1935,1936 | Oklahoma |
| Joe McDaniel | 3 | 1937,1938,1939 | Oklahoma State |
| Stanley Henson | 3 | 1937,1938,1939 | Oklahoma State |
| David Arndt | 3 | 1941,1942,1946 | Oklahoma State |
Identity totals inherit unresolved source-ID splits and cannot be treated as authoritative career totals without checking the wrestler's individual records. Titles in other divisions are outside this snapshot even when a wrestler competed in multiple NCAA divisions.
Championship tournament wins and pins
These are wins in the supplied championship archive, not regular-season or complete college-career records. A wrestler's opportunity to accumulate wins depends on years of eligibility, bracket format, consolations, and byes.
| wrestler_name | recorded_wins | recorded_losses | observed_tournaments | falls |
|---|---|---|---|---|
| Carter Starocci | 25 | 0 | 5 | 3 |
| Keegan O'Toole | 25 | 3 | 5 | 6 |
| Parker Keckeisen | 24 | 4 | 5 | 0 |
| Myles Amine | 24 | 6 | 5 | 1 |
| Mark Churella | 22 | 1 | 4 | 10 |
| MIke McMullan | 22 | 4 | 4 | 2 |
| John Fisher | 22 | 7 | 4 | 1 |
| Cohlton Schultz | 22 | 9 | 5 | 4 |
| Pat Smith | 21 | 0 | 4 | 2 |
| Ed Ruth | 21 | 1 | 4 | 7 |
| David Carr | 21 | 2 | 4 | 0 |
| Jake Herbert | 21 | 2 | 4 | 6 |
| Jim Zalesky | 21 | 2 | 4 | 5 |
| Joe Williams | 21 | 2 | 4 | 4 |
| Gene Mills | 21 | 3 | 4 | 10 |
All-fall title paths with at least four recorded championship-side wins:
| year | champion | school | weight | falls |
|---|---|---|---|---|
| 1936 | Wayne Martin | Oklahoma | 134 | 4 |
| 1948 | Bill Koll | Northern Iowa | 147 | 5 |
| 1948 | Glen Brand | Iowa State | 174 | 4 |
| 1948 | Verne Gagne | Minnesota | 191 | 5 |
| 1956 | Dan Hodge | Oklahoma | 177 | 4 |
| 1969 | Dan Gable | Iowa State | 137 | 5 |
| 1973 | Chris Taylor | Iowa State | Unlimited | 5 |
| 1979 | Bruce Kinseth | Iowa | 150 | 5 |
| 1980 | Howard Harris | Oregon State | Unlimited | 5 |
This definition explicitly excludes unrecorded byes and does not infer a pin for a forfeit, default, or unknown method. See fastest_pins.csv for elapsed fall times; TA values are time advantage, not fall duration.
Seeding and upsets
Among 11,831 recorded outcomes where both seeds are positive and distinct, 3,564 are wins by the numerically larger seed: 30.12%. This is a rate conditional on recorded seeds. It is not the chance that an arbitrary tournament match is an upset.
| round_code | eligible_bouts | upsets | upset_rate |
|---|---|---|---|
| Champ 8 | 1851 | 449 | 24.3% |
| Champ 16 | 1693 | 410 | 24.2% |
| Champ 4 | 1281 | 360 | 28.1% |
| Champ 32 | 984 | 183 | 18.6% |
| Consi 8 #2 | 907 | 345 | 38.0% |
| Consi 4 #2 | 900 | 312 | 34.7% |
| 1st | 708 | 213 | 30.1% |
| Consi 4 #1 | 655 | 223 | 34.0% |
| Consi 16 #2 | 625 | 219 | 35.0% |
| 3rd | 543 | 220 | 40.5% |
| Consi 16 #1 | 504 | 170 | 33.7% |
| Consi 8 #1 | 406 | 152 | 37.4% |
| 5th | 387 | 172 | 44.4% |
| 7th | 270 | 90 | 33.3% |
| Consi 32 #2 | 59 | 14 | 23.7% |
| Champ 64 | 57 | 32 | 56.1% |
| 2nd | 1 | 0 | 0.0% |
Zero appears extensively in historical seed fields. It cannot reliably distinguish unseeded entrants from years without available seeding. The number seeded expanded over time, so changes in the conditional upset rate can reflect coverage and field composition. Entry-level title conversion uses only a consistent positive seed within an entry; see entry_seed_outcomes.csv.
Largest recorded seed gaps in championship-final upsets:
| year | weight_label | winner_name | winner_seed | loser_name | loser_seed |
|---|---|---|---|---|---|
| 2016 | 174 | Myles Martin | 11 | Bo Nickal | 1 |
| 2015 | 133 | Cody Brewer | 13 | Cory Clark | 3 |
| 2009 | 165 | Jarrod King | 12 | Andrew Howe | 2 |
| 2011 | 184 | Quentin Wright | 9 | Robert Hamlin | 2 |
| 2019 | 165 | Mekhi Lewis | 8 | Vincenzo Joseph | 2 |
| 2008 | 157 | Jordan Leen | 8 | Michael Poeta | 2 |
| 2003 | 184 | Jake Rosholt | 10 | Scott Barker | 4 |
| 2000 | 141 | Carl Perry | 8 | Michael Lightner | 2 |
| 1980 | 190 | Noel Loban | 8 | Dan Severn | 2 |
| 1976 | 190 | Evan Johnson | 7 | Frank Santana | 1 |
| 1973 | 134 | Don Rohn | 8 | Bobby Stites | 2 |
| 2024 | 125 | Richie Figueroa II | 8 | Drake Ayala | 3 |
Result methods, scoring, and era effects
| result_code | source_rows | recorded_outcomes | first_year | last_year |
|---|---|---|---|---|
| DEC | 27531 | 27531 | 1928 | 2025 |
| FALL | 5234 | 5234 | 1928 | 2025 |
| MD | 4343 | 4343 | 1976 | 2025 |
| TF | 795 | 795 | 1985 | 2025 |
| SD | 613 | 613 | 1972 | 1987 |
| DFT | 401 | 401 | 1929 | 2024 |
| MFFT | 252 | 252 | 1928 | 2025 |
| UNKNOWN | 140 | 124 | 1929 | 1982 |
| FFT | 52 | 47 | 1931 | 2022 |
| DQ | 28 | 28 | 1978 | 2025 |
| DEF | 2 | 2 | 1928 | 1928 |
| DBL DFT | 2 | 0 | 1941 | 1941 |
| MDFT | 1 | 1 | 1949 | 1949 |
| DFFT | 1 | 0 | 1981 | 1981 |
Pin rates among recognized DEC/MD/SD/TF/FALL outcomes:
| decade | eligible_bouts | falls | fall_rate |
|---|---|---|---|
| 1920 | 94 | 26 | 27.7% |
| 1930 | 929 | 308 | 33.2% |
| 1940 | 847 | 243 | 28.7% |
| 1950 | 2021 | 314 | 15.5% |
| 1960 | 3251 | 470 | 14.5% |
| 1970 | 4644 | 783 | 16.9% |
| 1980 | 5190 | 694 | 13.4% |
| 1990 | 5777 | 613 | 10.6% |
| 2000 | 6300 | 809 | 12.8% |
| 2010 | 6314 | 680 | 10.8% |
| 2020 | 3149 | 294 | 9.3% |
These denominators exclude forfeits, defaults, disqualifications, unknown methods, and missing competitors. The 1920s, 1940s, and 2020s contain fewer tournament years. Historical SD is preserved as its own source code; no modern bonus-point interpretation is imposed.
Recent scoring among scored DEC/MD/SD/TF single outcomes:
| year | eligible_bouts | avg_total_points | avg_margin | margin_at_most_two |
|---|---|---|---|---|
| 2019 | 576 | 11.04 | 5.10 | 183 |
| 2021 | 564 | 10.69 | 5.08 | 196 |
| 2022 | 570 | 10.09 | 4.39 | 225 |
| 2023 | 566 | 9.24 | 4.21 | 229 |
| 2024 | 581 | 11.46 | 5.71 | 156 |
| 2025 | 571 | 10.86 | 5.46 | 167 |
The NCAA changed takedowns to three points for the 2023–24 season and also changed other rules (NCAA announcement). The 2024 championship is the first affected year in this archive. Before/after score differences do not identify a causal effect: scoring definitions, athletes, match composition, and other rules changed together. The workbook contains no takedown-level event data.
Data quality findings
| issue_code | issue_count | resolution |
|---|---|---|
| name_multiple_source_ids | 213 | no_automatic_merge |
| missing_result_method | 140 | retained_for_review |
| team_score_bye_inference_disagreement | 135 | workbook_bye_marks_decide |
| team_score_reference_mismatch | 128 | retained_for_review |
| source_id_name_conflict | 40 | split_by_source_id_and_name |
| missing_competitor | 36 | retained_for_review |
| source_note | 28 | retained_for_review |
| not_single_known_outcome | 24 | excluded_from_win_loss_rates |
| team_score_reference_result_code_differs | 17 | archive_value_retained |
| historical_award_supplement | 15 | sourced_award_no_invented_final |
| team_score_scored_without_recorded_opponent | 12 | single_known_winner_scored |
| team_score_decision_scored_by_margin | 10 | margin_meets_sheet_threshold |
| team_score_placement_regression | 10 | retained_for_review |
| team_score_reference_row_not_in_archive | 7 | workbook_only_row_candidate_correction |
| missing_source_id | 5 | isolated_within_tournament_weight |
| same_source_id_both_sides | 4 | split_by_name |
| school_case_variants | 3 | case_only_normalization |
| documented_correction | 2 | applied_overlay |
| seed_conflict | 2 | retained_for_review |
| team_score_reference_round_differs | 2 | archive_value_retained |
| team_score_reference_school_unresolved | 2 | retained_for_review |
| conflicting_placement_evidence | 1 | retained_for_review |
| multiple_schools_same_event | 1 | retained_for_review |
| source_formula_error | 1 | preserved_in_source_check_value |
Missingness on the match table:
| missing_winner | missing_loser | incomplete_scores | unknown_method | excluded_from_recorded_wins |
|---|---|---|---|---|
| 12 | 24 | 7041 | 140 | 24 |
Two externally supported overlays retain the untouched source row:
- Match 15, 1928 135-pound final: Arthur Holding defeated J. Brice Moore, reversing the source winner/loser. The archived bracket agrees in both its champion list and final.
- Match 30, 1928 158-pound final: the archived fall time is 9:05; the workbook has 9:15.
Evidence: 1928 brackets, pages 1, 4 and 6, compiled by wrestlingstats.com and hosted by the National Wrestling Hall of Fame. These selected corrections demonstrate that source completeness should not be confused with accuracy. This analysis did not audit all 39,395 rows against original brackets.
The five non-case-only source-ID conflicts are split by ID and normalized name. Four matches use the same nonblank source ID on both sides. Missing IDs with known names are isolated within the tournament and weight. Similar names and identical names across different IDs are not fuzzy-merged. This favors avoiding false joins over obtaining a deceptively precise count of people.
School case variants are merged with a source-alias table. Cornell College (IA) and Cornell (NY) remain distinct. Historical weight code 450 is displayed as Unlimited following the archived 1928 bracket, with no numeric upper limit.
Early tournaments include separate second-place bouts. The final loser is assigned second only when that weight has no separate second-place bout. Automatic historical placements are not reconstructed. R1–R7 are ordered numerically for individual path display, without inventing exact within-round chronology.
A final-bout-only analysis misses all champions in 1936 and 1948. Their 15 weights use R1–R7 rather than 1st. The championship_award table links the seven champions in the 1936 archived placement list and eight in the 1948 list to existing source entries. Their final_match_id remains NULL. This adds award evidence, not 15 fabricated bouts. Historical champions can have a recorded loss, so taking the last winner or requiring an unbeaten record is not a valid substitute.
How to reuse the analysis
- Start with data/processed/analysis/agent_context.json for the compact semantic brief.
- Open data/processed/ncaa_wrestling.sqlite directly in SQLite, DBeaver, Python, or another compatible client.
- Use v_match for one row per source result, v_appearance for wrestler perspectives, v_champion for individual titles, and v_school_year for program summaries.
- Use bracket_topology, bracket_node, bracket_slot, and bracket_edge only for competitions listed as modeled; run `python3 scripts/bracket_topology.py --check` before consuming the projection.
- Read docs/DATA_DICTIONARY.md before joining. Summing v_appearance row counts doubles match counts.
- Use the named SQL queries in sql/analysis.sql for rerunnable results. Individual CSV tables and table metadata support import to another database.
- Review data_issue and source_record before repairing identity or outcome anomalies. Add an evidence-backed correction rather than editing raw input.
Questions this data cannot answer alone
It does not supply complete regular-season records, recruiting resources, coaching tenure, financial spending, team scoring rules by era, official team totals, or a full event sequence. It cannot establish why a program dominated, measure a causal rules effect, or fully reconstruct historical automatic placements without additional sources.
Interactive Championship Atlas
The public page turns individual championships into a program-by-year heatmap. A program or year selection reveals the title winners; each champion opens their recorded championship-side path. Year ranges, a program filter, and shareable URL state let readers explore a particular era or program. Counts derive from the same v_champion view used above, so the website and database reconcile.