Just how good was R9?
Brazilian Ronaldo's entire career in numbers.
| Votes | Language | Version | Updated |
|---|---|---|---|
| 0 | python | 4 | 2026-10-26 |
First analysis of the Ronaldo (R9) Nazário: Complete Career Dataset. The dataset records every game of every squad Ronaldo Nazário belonged to between 1993 and 2011 (1,182 games, 606 played, with minutes). It also holds his injuries, cross-checked against the match log and news archives, his full international record, and his transfers and market values, all validated across five sources. This notebook takes the project's first question: what does the record establish about the player, before any counterfactual about what was lost?
The approach starts from raw output and applies one correction at a time:
- Raw rates, and what the numbers contain (penalties, assist methodology, the absence of xG).
- Age: where his peak falls compared with where forwards normally peak.
- The break: the record before and after 21 November 1999.
- Availability: how much of his own career he was able to play.
- Team context: his share of his teams' output, and results in his absence.
- Stage: World Cups and finals, where samples are small.
- The injury record, and the medicine of the era.
Sections 8 and 9 add the market's assessment at the time and the context the data cannot carry. Section 10 sets the results against three frames of reference: his own leagues' scoring charts, the modern Big-5 forward distribution, and the historical record. The conclusion then answers the title directly.
Ground rules: every number is computed from the dataset in the cells below, unless it is marked [external] and cited in the references at the end. Where a claim needs an outside frame (a season's scoring chart, the modern forward distribution, an award record), its source and limits are stated where it is used. A full same-era baseline cohort, the strictest comparison, is the project's next stage.
The career at a glance
Career totals come from the canonical tables (Wikipedia career table, RSSSF cap log). Rates come from the match log, which has minutes for 499 of the 518 club appearances and every international.
1. Raw rates
The career rate is 0.75 goals per 90 minutes, one goal every 121 minutes of play, held over 18 years. The split by competition shows where the minutes went and how the rate held in each. Each bar shows its sample size. Competitions under 450 logged minutes are left off the chart but stay in the data.
| games | minutes | goals | goals_per_90 | |
|---|---|---|---|---|
| State leagues (Brazil) | 21 | 1729 | 11 | 0.57 |
| Continental club cups | 95 | 7430 | 49 | 0.59 |
| International friendlies | 47 | 3450 | 23 | 0.6 |
| Domestic cups | 35 | 2537 | 19 | 0.67 |
| World Cup qualifiers | 15 | 1287 | 10 | 0.7 |
| Domestic league | 343 | 27375 | 247 | 0.81 |
| World Cup | 19 | 1624 | 15 | 0.83 |
| Copa América | 13 | 1007 | 10 | 0.89 |
xychart horizontal
x-axis ["Copa América", "World Cup", "Domestic league", "World Cup qualifiers", "Domestic cups", "International friendlies", "Continental club cups", "State leagues (Brazil)"]
y-axis "goals per 90 minutes"
bar [0.894, 0.831, 0.812, 0.699, 0.674, 0.6, 0.594, 0.573]Notes on methodology
Keep these four properties of the data in mind before comparing anything. Each is documented in the dataset card:
- Penalties. The log identifies them, so the headline rates have non-penalty versions. Non-penalty rates compare better across eras and teams.
- Assists. Opta-lineage assists exist only from 1998-99 onward (recorded as null before that, never zero). Transfermarkt retro-codes assists for the full career under its own definition. Goal involvements in this notebook use the Transfermarkt series and are labelled as such.
- Expected goals. Event tracking did not exist during his prime, so there is no shot-quality data for R9 and none can be reconstructed. Every era comparison in this project works within that limit.
- Uncertainty. Scoring rates are estimates from counts. Every rate in this notebook carries an exact (chi-square) Poisson 95% interval, with minutes as the exposure. Rate comparisons use Poisson rate-ratio tests. The team-results contrast in section 5 uses a bootstrap and a within-season permutation test. Goals are treated as independent events, which is close to true but not exact, so read the intervals as slightly narrow.
2. Age
Studies of professional footballers place a forward's peak around ages 25 to 27 [external: Dendir 2016]. The chart shows his scoring rate at each age. The shaded band marks that typical peak window.
xychart
x-axis "age" ["16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34"]
y-axis "goals per 90 minutes"
bar [0.857, 0.926, 0.839, 1.102, 0.963, 0.687, 0.704, 0.742, 0, 0.915, 0.805, 0.655, 0.546, 0.685, 0.58, 0.564, 0.727, 0.51, 0.36]| games | minutes | goals | goals_per_90 | ci_low | ci_high |
|---|---|---|---|---|---|
| 3 | 210 | 2 | 0.86 | 0.1 | 3.1 |
| 32 | 2623 | 27 | 0.93 | 0.61 | 1.35 |
| 42 | 3541 | 33 | 0.84 | 0.58 | 1.18 |
| 26 | 1960 | 24 | 1.1 | 0.71 | 1.64 |
| 64 | 5515 | 59 | 0.96 | 0.73 | 1.24 |
| 61 | 5371 | 41 | 0.69 | 0.49 | 0.93 |
| 37 | 2811 | 22 | 0.7 | 0.44 | 1.07 |
| 7 | 364 | 3 | 0.74 | 0.15 | 2.17 |
| 27 | 1574 | 16 | 0.91 | 0.52 | 1.49 |
| 55 | 4248 | 38 | 0.81 | 0.57 | 1.11 |
| 59 | 4807 | 35 | 0.66 | 0.46 | 0.91 |
| 50 | 4118 | 25 | 0.55 | 0.35 | 0.81 |
| 32 | 2497 | 19 | 0.68 | 0.41 | 1.07 |
| 27 | 1708 | 11 | 0.58 | 0.29 | 1.04 |
| 6 | 319 | 2 | 0.56 | 0.07 | 2.04 |
| 27 | 2105 | 17 | 0.73 | 0.42 | 1.16 |
| 30 | 2469 | 14 | 0.51 | 0.28 | 0.86 |
| 13 | 1001 | 4 | 0.36 | 0.1 | 0.92 |
| by birthday | games | goals | minutes | goals_per_90 | minutes_per_goal |
|---|---|---|---|---|---|
| 18 | 35 | 29 | 2833 | 0.92 | 97.7 |
| 21 | 167 | 145 | 13849 | 0.94 | 95.5 |
| 23 | 265 | 208 | 22031 | 0.85 | 105.9 |
The table above carries the core of the age argument. By his 21st birthday he had scored 145 senior goals in 167 games, one every 96 minutes. The honours in that list came at ages 17 to 20. He was top scorer of the Eredivisie at 18 and of La Liga at 20 (with the European Golden Shoe). He was FIFA World Player of the Year at 20, the youngest winner of that award, and again at 21. Then came the Ballon d'Or at 21, still the youngest win in the award's history [external: France Football]. Two world-record transfer fees were paid for him before he turned 21 (section 8).
His three highest-scoring ages are 19, 20 and 17 by point estimate. The intervals on single ages are wide and overlap, so the exact order can't be resolved, and it doesn't matter. What the intervals do support is the shape: the whole 17-to-20 block sits high. The studies cited above put a forward's peak at 25 to 27, inside the shaded band. There his record holds one empty year at 24, a season of recovery, and the rebuilt career that followed. The best years of a normal career arrive exactly where his record is thinnest.
3. The break: before and after 21 November 1999
On 21 November 1999, in Inter's home game against Lecce, he scored a penalty. Then he partially ruptured his right patellar tendon chasing a ball into the box. He was 23 years and two months old, and the record divides at that date. The rolling rate below uses a 20-game window and is not drawn across gaps longer than six months, so the line shows only football that was actually played. The band around the line is the 95% interval for each window. The window size affects only the drawing; none of the inference below depends on it.
xychart
x-axis "age" ["16.97", "17.42", "17.88", "18.33", "18.79", "19.24", "19.7", "20.15", "20.61", "21.06", "21.52", "21.97", "22.43", "22.88", "23.34", "23.79", "24.25", "24.7", "25.16", "25.62", "26.07", "26.53", "26.98", "27.44", "27.89", "28.35", "28.8", "29.26", "29.71", "30.17", "30.62", "31.08", "31.53", "31.99", "32.44", "32.9", "33.35", "33.81", "34.26", "34.72"]
y-axis "goals per 90, rolling 20 games"
line [0, 1.075, 0.815, 0.817, 0.909, 1.305, 1.19, 1.204, 1.2, 0.818, 0.694, 0.691, 0.505, 0.795, 0.72, 0, 0, 0, 0, 0.717, 1.044, 0.645, 0.928, 0.701, 0.49, 0.636, 0.529, 0.794, 0.548, 0.711, 0.691, 0, 0, 0, 0, 0.664, 0.694, 0.439, 0.587, 0.471]| games | minutes | goals | goals_per_90 | np_goals_per_90 | |
|---|---|---|---|---|---|
| to 21 Nov 1999 | 271 | 22389 | 211 | 0.85 | 0.7 |
| after 21 Nov 1999 | 327 | 24852 | 181 | 0.66 | 0.6 |
| from the return, 17 Sep 2001 | 326 | 24846 | 181 | 0.66 | 0.6 |
The raw decline is statistically solid. The rate falls 23%, from 0.85 to 0.66: a rate ratio of 1.29, with a 95% interval of 1.06 to 1.58 (p = 0.011). The non-penalty decline on its own is not. Its point estimate is a 15% drop, but its interval (0.95 to 1.45) includes no change. The two numbers differ because he handed over most penalty duties after the injury. Read strictly, the fall in his raw output is established. How much of the non-penalty rate he lost can't be pinned down from the rate alone at this sample size.
The stronger evidence of damage is elsewhere: the two missing years, the availability chart in section 4, and the baseline itself. A forward's expected path from 23 to 27 is improvement. Holding his early rate through those ages would have been the null hypothesis. Instead the record shows a lower raw rate and an empty age-24 column. Two things are true at once:
- He did not return to his previous raw level. The rolling line never again sustains the rates of 1996 to 1999. The ages where it should have been highest are an absence followed by a recovery.
- The level he did return to was still elite. The post-return record includes the 2002 World Cup at 1.30 goals per 90 (section 6) and a second Pichichi at 27, seven seasons after his first.
Both feed the counterfactual stage. This career does not follow a normal aging curve. The change begins abruptly, at a specific injury, at 23.
4. Availability
Scoring rates describe the games he played. This section measures how many games there were to play. Each bar is one club season of squad games, split by his status: played, out injured, or not selected. Not selected covers rotation, unused substitute appearances, and seven absences for other documented reasons. Transfermarkt's injury records are sparse before 1995-96, so the early seasons may undercount injury absence. The first logged spell begins in December 1995.
xychart
x-axis ["1993", "1994", "1994-95", "1995-96", "1996-97", "1997-98", "1998-99", "1999-2000", "2000-01", "2001-02", "2002-03", "2003-04", "2004-05", "2005-06", "2006-07", "2007-08", "2009", "2010", "2011"]
y-axis "% of squad games"
bar [95.238, 88.889, 94.737, 44.681, 81.667, 92.157, 51.852, 18.605, 0, 33.333, 69.841, 81.356, 86.538, 51.923, 49.091, 11.765, 53.521, 41.538, 50]
bar [0, 0, 0, 42.553, 0, 0, 22.222, 74.419, 100, 45.833, 11.111, 0, 0, 0, 0, 64.706, 12.676, 0, 0]
bar [4.762, 11.111, 5.263, 12.766, 18.333, 7.843, 25.926, 6.977, 0, 20.833, 19.048, 18.644, 13.462, 48.077, 50.909, 23.529, 33.803, 58.462, 50]He lost 1,433 days to injury, close to four calendar years of an 18-year career. The absences cluster in two periods: 1999 to 2002 (ages 23 to 25) and 2005-06 onward. The 2000-01 season is the central fact for the rest of the project. It was a full season at what should have been his peak age: 49 squad games, and he played none of them.
5. Team context
Two measures: how much of his teams' scoring he accounted for, and how his teams' results changed in his absence.
The first measure is the solid one. In the games he played, he scored one third of his clubs' goals, and the interval on that share is a couple of points wide. It needs no model and no causal story.
The second measure does not survive inference, so read the chart above with that in mind. Pooled, his teams took 1.91 points per game with him and 1.75 without. But the bootstrap interval on that difference touches zero. Compared only within the same season (the permutation test above), the difference is well within chance. His absences also cluster in particular seasons and club circumstances. At Real Madrid the without-sample is mostly rotation in a deep squad; at Inter it is dominated by the injury years. The chart stays in the notebook because the variation between clubs is real and interesting. It is not evidence that his presence moved results, and points per game is a blunt measure of one player's effect anyway.
6. The biggest stages
Tournament samples are small, so the table shows minutes alongside the rates. His scoring rate at World Cups, 0.83 per 90 across three tournaments, is above his career rate.
| wc | games | minutes | goals | goals_per_90 | age |
|---|---|---|---|---|---|
| 1998 | 7 | 660 | 4 | 0.55 | 21 |
| 2002 | 7 | 553 | 8 | 1.3 | 25 |
| 2006 | 5 | 411 | 3 | 0.66 | 29 |
The 2002 tournament came fourteen months after his return from the 524-day layoff. He scored 8 goals in 7 games at 1.30 per 90, won the Golden Boot, and scored both goals in the final. At the 1998 tournament he scored 4 and was named its best player at 21. He played the final hours after suffering a convulsive episode on the day of the game [external: widely reported; see Wikipedia]. His 15 World Cup goals passed Gerd Müller's record in 2006 and stood as the record until 2014 [external: FIFA]. In club finals, he scored in the 1997 Cup Winners' Cup final at 20 and the 1998 UEFA Cup final at 21, and won both.
For Brazil in other tournaments: 10 goals across the 1997 and 1999 Copa América wins (top scorer and best player of the 1999 edition) and 4 at the 1997 Confederations Cup.
7. The injury record
Eleven spells are logged. Six involve the knee, and they account for 79% of all days lost; the patellar tendon alone accounts for 74%.
| season | injury | age | days_out | games_missed |
|---|---|---|---|---|
| 95/96 | Patellar tendon tear | 19.2 | 134 | 26 |
| 98/99 | Bruised knee | 22.1 | 27 | 6 |
| 98/99 | Knee problems | 22.3 | 41 | 7 |
| 99/00 | Patellar tendon rupture | 23.2 | 141 | 27 |
| 99/00 | Patellar tendon rupture | 23.6 | 524 | 87 |
| 01/02 | Thigh problems | 25.1 | 20 | 5 |
| 01/02 | Hamstring injury | 25.3 | 92 | 19 |
| 02/03 | Muscle injury | 26 | 33 | 7 |
| 06/07 | Broken tibia | 30.8 | 115 | 21 |
| 07/08 | Patellar tendon rupture | 31.4 | 263 | 27 |
| 09/10 | Broken hand | 32.9 | 43 | 10 |
xychart horizontal
x-axis ["Broken hand (Jul 2009, age 32)", "Patellar tendon rupture (Feb 2008, age 31)", "Broken tibia (Jul 2007, age 30)", "Muscle injury (Sep 2002, age 26)", "Hamstring injury (Dec 2001, age 25)", "Thigh problems (Nov 2001, age 25)", "Patellar tendon rupture (Apr 2000, age 23)", "Patellar tendon rupture (Nov 1999, age 23)", "Knee problems (Jan 1999, age 22)", "Bruised knee (Nov 1998, age 22)", "Patellar tendon tear (Dec 1995, age 19)"]
y-axis "days out"
bar [43, 263, 115, 33, 92, 20, 524, 141, 41, 27, 134]The medicine question
This section frames the question the counterfactual stage will try to answer. It does not answer it. What the dataset establishes:
- The pattern appeared early. His first patellar tendon surgery came at 19 (PSV, December 1995, 134 days out). The knee flared twice more in the 1998-99 Inter season.
- The worst damage followed the handling of the first rupture. A partial rupture in November 1999. A return four and a half months later, straight into a cup final. A complete rupture of the same tendon six minutes into that return, and 524 days out. His surgeon's pre-operative estimate, quoted in the dataset's injury notes, was "at least eight months". The absence lasted seventeen.
- The workload before the first rupture was heavy: 22,031 senior minutes before his 23rd birthday, with tournament summers from 1995 through 1999 and no extended off-season among them.
From outside the dataset [external]: a complete patellar tendon rupture is still one of the most serious injuries in professional sport. With current surgical technique, an elite athlete still needs six months to a year to return. A return to the previous level is not assured (professional cohort studies document both; Boublik et al. 2011). Modern medicine would not have made him injury-free. What it plausibly changes is the sequence. Current practice for a partial tear in a player with a known tendon history is imaging-guided rehabilitation and a graduated return, not a cup final in month five. The same record also shows what his era's medicine achieved: the 2000 repair held for six more seasons, a World Cup, and a second Pichichi.
So the question for the counterfactual stage is not "what if he had never been injured". It is narrower and easier to answer: what do the years 1999 to 2001 look like under modern management, and what does the age curve of section 2 imply for them?
8. The market
Transfermarkt's market-value series begins in October 2004, after his peak. So the dataset keeps two series that are not comparable and are never merged: transfer fees paid at the time (dots) and the later market-value estimates (line). The fees are the only price record for the peak years: a world-record fee at 19, and another at 20.
xychart
x-axis ["2004-10-04", "2004-12-28", "2005-03-15", "2006-01-12", "2007-05-03", "2008-02-15", "2008-07-04", "2008-09-05", "2010-04-15", "2010-06-28", "2010-09-06", "2011-02-15"]
y-axis "EUR, millions (fees pre-1999 are retrospective conversions)"
line [45, 35, 33, 27.5, 23, 14, 9, 5, 3.5, 2, 1, 0]9. Context the data does not carry
One paragraph that no table in this dataset can hold. He did not come from an elite academy: São Cristóvão, a professional debut for Cruzeiro at 16, a transfer to Europe at 17. The scoring rates of section 2, highest at ages 17 to 20, came without the nutrition, periodization and sports science of a modern development system. They came in the Série A, Eredivisie and La Liga of the mid-1990s. Whatever the era baseline eventually shows, he developed under 1990s conditions. So did his medical care, which is what gives the medicine question of section 7 its weight.
10. Frames of reference
Sections 1 to 9 established the record on its own terms. Answering the title needs comparison points. Three frames follow, from narrowest to widest: his own leagues season by season, the modern elite, and the historical record. Each frame's source and limits are stated where it is used.
| season | league | age | apps | goals | np_g90 | np_g90_95ci | scoring_chart | chart_note |
|---|---|---|---|---|---|---|---|---|
| 1994-95 | Eredivisie | 18 | 33 | 30 | 0.83 | 0.55 to 1.21 | 1st | won it with 30 |
| 1996-97 | La Liga | 20 | 37 | 34 | 0.84 | 0.57 to 1.21 | 1st | won it with 34; Alfonso 2nd on 25 |
| 1997-98 | Serie A | 21 | 32 | 25 | 0.6 | 0.36 to 0.93 | 2nd | Bierhoff won with 27 |
| 2002-03 | La Liga | 26 | 31 | 23 | 0.85 | 0.54 to 1.28 | joint 2nd | Makaay won with 29 |
| 2003-04 | La Liga | 27 | 32 | 24 | 0.78 | 0.50 to 1.18 | 1st | won it with 24; Julio Baptista 2nd on 20 |
| 2004-05 | La Liga | 28 | 34 | 21 | 0.64 | 0.39 to 0.99 | 4th | Eto'o and Forlan on 25 |
The criterion is availability, not selection. These are all of his league seasons with 30 or more appearances, and no other season reaches 25. In all six he finished in the top four of the scoring chart, and in five of them in the top two. He finished first three times, in two countries, at ages 18, 20 and 27. A top-division scoring chart covers roughly 500 players a season, so a top-four finish sits around the 99th percentile of that league's season. The last three lines came on the rebuilt knee.
xychart
x-axis "non-penalty goals per 90, league only" ["0.03", "0.07", "0.12", "0.17", "0.23", "0.28", "0.33", "0.38", "0.42", "0.47", "0.53", "0.57", "0.62", "0.68", "0.72", "0.78", "0.82", "0.88", "0.93", "0.97", "1.02", "1.07", "1.12", "1.18", "1.23", "1.27"]
y-axis "forward-seasons"
bar [58, 126, 106, 178, 144, 162, 131, 119, 100, 79, 61, 48, 23, 22, 12, 10, 4, 4, 3, 3, 0, 3, 1, 0, 2, 2]| season | npg90 | league_goals_per_match | adjusted_share | adj_95ci | modern_percentile |
|---|---|---|---|---|---|
| 1994-95 | 0.83 | 3.206 | 0.519 | 0.34 to 0.76 | 97 |
| 1996-97 | 0.84 | 2.751 | 0.614 | 0.41 to 0.88 | 98.7 |
| 1997-98 | 0.6 | 2.729 | 0.436 | 0.26 to 0.68 | 93.6 |
| 2002-03 | 0.85 | 2.674 | 0.639 | 0.41 to 0.96 | 98.9 |
| 2003-04 | 0.78 | 2.671 | 0.587 | 0.37 to 0.88 | 98.6 |
| 2004-05 | 0.64 | 2.579 | 0.498 | 0.30 to 0.77 | 96.5 |
The era adjustment answers the cross-era objection to first order. It corrects for how much scoring each league and season contained. It does not correct for pace, defensive style or the kind of chances that existed, and no adjustment can. That residual is stated, not solved. Two more caveats on the age chart. The modern curve above 30 is survivor-biased, since only forwards still getting 900 league minutes appear. And FBref ages are taken on 1 August while his are exact, a definitional offset of months.
The results hold through the correction. Era-adjusted and pooled across his six full seasons, he produced about half of an average team's scoring per 90 by himself. That sits at roughly the 98th percentile of adjusted modern forward-seasons. His weakest season of the six (Serie A 1997-98) still lands at the 94th. The age chart adds the shape. From 18 through 29, every league season of his with 900 minutes runs 2.0 to 3.1 times the modern forward average for that age. The single exception is the knee-interrupted 1998-99 season, at 1.6. After 30 the ratio falls, to 1.6 at 30 and 1.1 at 33, the Corinthians years. That is a finding in its own right: the late-career R9 was an ordinary elite forward. The extraordinary one lived at the ages where the modern curve says forwards are still developing. The comparison is also conservative throughout. His points are whole seasons and multi-season averages, decline included, set against a distribution of single seasons.
Placed against the historical record [external, sources below]:
- FIFA World Player of the Year three times (1996, 1997, 2002). He was the first player to win it three times, and at 20 he remains the youngest winner. Across the award's lifetime (1991 to 2009) only he and Zidane won it three times.
- The youngest Ballon d'Or winner in the award's history, at 21 in 1997, a record that still stands. He was also its first South American winner. A second Ballon d'Or followed in 2002; he had already been runner-up at 20.
- The world's record transfer twice, in consecutive years, at 19 and 20.
- The all-time World Cup scoring record, held from 2006 to 2014.
- On volume: the IFFHS credits 27 players in history with 500 or more top-level goals. He finished at 414 official senior goals, with roughly four years lost to injury and the two-year gap at his peak. The six-season table above shows his rate was at the level of that list. The shortfall is games, not scoring.
Conclusions
He was voted the best player in the world three times, at 20, 21 and 26, and he is still the youngest man ever to win the Ballon d'Or. The market put its all-time record price on him twice before his 21st birthday.
Every league season his body allowed ended in the top four of its scoring chart, five of the six in the top two. His eighteen-year league average, every rebuilt-knee season included, beats roughly 97% of modern forward-seasons. The interval on his own rate puts the floor at the 94th percentile. Only about one modern forward in twenty has matched it even once. Adjusting both eras for how much scoring their leagues contained moves nothing. Pooled across his six full seasons, he produced about half of an average team's scoring by himself, the 98th percentile of the adjusted distribution. At every age from 18 to 29, bar the knee-interrupted 1998-99 season, he ran two to three times the modern forward average for his age. His best seasons sit at the modern 99th percentile. The seasons above them are the recent extremes, peak Mbappé and Messi among them.
So, the answer to the title: the best striker of his generation, by vote and by rate, and one of the best there has ever been. Whether he is the best is exactly the argument his knees interrupted. At 23 his curve was above everyone's, and the years that would have settled it never happened.
Two caveats. No xG exists for his era. The era adjustment corrects for scoring volume, not for style of play, so some gap between his football and the modern panel's survives any arithmetic. Every percentile above is quoted with its interval in the cells, and the answer does not hang on the exact digits.
That closes the first question. The second is the one this project exists for: how much Ronaldo did we get, and how much could we have gotten? The counterfactual stage takes the 1999-2001 window and the age curve from section 2 and tries to answer it.
References and provenance
Everything computed here comes from the dataset (sources: Wikipedia, Transfermarkt, RSSSF, BDFutbol, FBref; cross-validation described in its card; 60 checks, 0 failures). Match minutes and rates come from Transfermarkt's match-level log (499 of 518 club apps plus all internationals). Canonical totals come from Wikipedia's career table and RSSSF's cap log. Assists marked "TM" use Transfermarkt's retro-coded definition.
External reference points used in the text:
- Dendir, S. (2016). "When do soccer players peak? A note." Journal of Sports Analytics 2(2), 89-105. Forwards peak roughly at 25 to 27.
- Boublik, M. et al. (2011). "Patellar tendon ruptures in National Football League players." American Journal of Sports Medicine 39(11). Return-to-play outcomes after patellar tendon rupture in professional athletes.
- League scoring charts (frame 1): Wikipedia season articles, top scorer tables, for 1996-97 La Liga, 1997-98 Serie A, and 2002-03 / 2003-04 / 2004-05 La Liga, retrieved 11 July 2026. The 1994-95 Eredivisie title is from the dataset's honours table and BDFutbol.
- Modern forward panel (frame 2): FBref Big-5 league player-season statistics
2017-18 to 2021-22, via the eddwebster/football_analytics repository
(
fbref_outfield_player_stats_combined_latest.csv), retrieved 11 July 2026. Filter: position FW, 900 or more league minutes; 1,401 player-seasons, 700 players. Rebuilt byscripts/build_reference.pyin the project repository. - Award records (frame 3): Wikipedia, "FIFA World Player of the Year" (three-time winners; youngest recipient) and "Ballon d'Or" (youngest recipient, first South American winner), retrieved 11 July 2026.
- League scoring environments (era adjustment): total goals and matches from the
Wikipedia season articles for each of his six full league seasons and each of the
25 modern Big-5 league-seasons, retrieved 11 July 2026; the assembled table is
data/reference/league_goal_environment.csvin the project repository. - Statistical methods: goal counts treated as Poisson with minutes as exposure; intervals are exact (chi-square) Poisson intervals; the before/after contrast is a Poisson rate-ratio test; the team-results contrast uses a nonparametric bootstrap and a within-season permutation test (scipy.stats, numpy). Goals are treated as independent, which is approximately true; residual clustering would widen the intervals slightly.
- 500-goal list: IFFHS via Wikipedia, "List of footballers with 500 or more goals" (27 players as of July 2026).
- World Cup goal record (15, passed by Klose in 2014): FIFA.
- The 1998 final convulsion episode: widely reported; see the Wikipedia article on Ronaldo (Brazilian footballer).
Notebook 2 of the How Much Fenômeno project. Notebook 1 is the starter EDA.