I don’t follow basketball very closely, but I think the NCAA Men’s Basketball tournament is one of the great events in sports. What makes it so great is the same thing that makes it so difficult to accurately pick the winners: the variability of single elimination.
I’ve finally jumped on the bandwagon and started filling out brackets for March Madness, so naturally I looked to apply some science to the process. What I came up with is a spreadsheet that picks my bracket for me. Nerdy, I know, but this is how I do things! Here’s how it works…
First, I estimated the skill difference between different seeds. Personally, I think skill level is more tightly grouped in the middle of the pack. This means that there’s a bigger difference between a #1 seed and a #2 seed than there is between a 7 and 8, etc.
Next, this skill level is converted into a percentage chance that seed has of winning a game against a #1 seed.
This percentage is multiplied by a randomly-generated fraction, scaled up, then rounded to the nearest digit. That’s how many “points” that team gets for that round.
Then the point values are compared between seeds to decide who wins!
Now this is where it gets fancy. I added something I call the “Chaos Level” which decides how much disorder and randomness there is. This number basically changes how much the skill dropoff affects the percentage chance of winning. With a chaos level of 10, the dropoff effect is eliminated and every team has equal chances of winning a game—regardless of seed. By playing with the chaos level, I can tweak how many upsets are likely to occur in my bracket.
“Isaac, what if I want to pick some of the games on my own?”
I got ya covered.
If two assigned point values are equal, this is labeled as a “User Pick”. Since the points are rounded, you can make ties more frequent by making the numbers smaller. The “User Control Factor” adjusts the magnitude of the numbers and thus how many User Picks will occur.
The point values are compared to generate a table that shows who wins each matchup. User picks are labeled “U”.
This table is then referenced and iterated to generate the entire bracket automatically!
Believe it or not, it’s actually more complicated than it sounds.
So if anyone wants to challenge me in March Madness next year, I’ll crank a new bracket out with a click of a button. Boom.