The Perfect Bracket Simulator: How The Stats Are Processed
Summary
All statistics for this website are sourced from ESPN's college basketball data. After retrieving the stats, Python was used to clean and format the data for this specific use case. To ensure balanced metric comparisons, the stats were scaled so that no single metric, such as points per game, outweighed others like assists per game. This scaling process adjusted each stat so that the highest value for a team was set to 1, the lowest to 0, and all other values were linearly scaled in between. For instance, if Kansas led all tournament teams in points per game, their scaled value for that metric would be 1.
For stats such as points per game (PPG), where higher values are desirable, assigning a higher weight to the stat means teams with higher PPG averages are predicted to perform better. Conversely, for stats like turnovers (TOV), where lower values are preferable, the data was inverted so that the team with the fewest turnovers had their TOV value scaled to 1. As a result, if the TOV weight is increased, teams that took care of the ball will be predicted to perform better.
Once you've created the combination of weights you believe will create the perfect bracket and hit "Run," each team's score will be displayed next to their name in the first round. This allows you to see how closely matched two teams are and identify areas where a team excels or falls short. Scores are only shown for the first round but remain consistent throughout all rounds. To fine-tune a stat's weight and see how it affects team scores, you can adjust the slider using the left/right arrow keys for increments of 1 or type your desired weight directly into the input field.
Formulas
- Offensive Rating [Off Rtg] = 100 * ( Points / Poss )
- Defensive Rating [Def Rtg] = 100 * ( Opp Points / Poss )
- Effective Field Goal Percentage [eFG%] = 100 * ( FGM + 0.5*3PM ) / FGA
- Three Point Percentage [3pt%] = 100 * ( 3PM / 3PA )
- Offensive Rebounding Percentage [OReb%] = 100 * OReb / ( OReb + Opp DReb )
- Turnover Percentage [TOV%] = 100 * TOV / ( FGA + 0.44*FTA + TOV )
- Free Throw Attempt Rate [FTA%] = 100 * ( FTA / FGA )
- Free Throw Percentage [FT%] = 100 * ( FTM / FTA )
- Opponent Effective Field Goal Percentage [Opp eFG%] = 100 * ( Opp FGM + 0.5*Opp 3PM ) / Opp FGA
- Opponent Three Point Percentage [Opp 3pt%] = 100 * ( Opp 3PM / Opp 3PA )
- Opponent Offensive Rebounding Percentage [Opp OReb%] = 100 * Opp OReb / ( Opp OReb + DReb )
- Opponent Turnover Percentage [Opp TOV%] = 100 * Opp TOV / ( Opp FGA + 0.44*Opp FTA + Opp TOV )
- Opponent Free Throw Attempt Rate [Opp FTA%] = 100 * ( Opp FTA / Opp FGA )
- Possessions [Poss] = 0.5* ( (FGA + 0.4*FTA - 1.07/100*OReb% * ( FGA - FGM ) + TOV) + (Opp FGA + 0.4*Opp FTA - 1.07/100*Opp OReb% * ( Opp FGA - Opp FGM ) + Opp TOV) )
- Seed In March Madness [Seed] = Seed Selected By Selection Committee