The nerdiest story every told
I’m going to go in a bit of a different, more personal direction today, because I thought it might be fun to give a bit of a statement on why this site even exists. So yes, this is going to be all about me -- I hope you’ll let me indulge!
I love numbers, and I always have. That much should be obvious. But it may not be obvious just how much I love them.
Growing up, I preferred reading the World Almanac or the Guinness Book of Records to “real” books -- the kind with heroes and plots and, you know, words. My favorite part of the sports page was reading the box score, not the story alongside it. It’s hard to find people who understand that.
It’s interesting listening to people who say they prefer a book to its movie adaptation because the movie filled in the gaps that one’s imagination would create from a book. I can actually relate to that, because I think that numbers, in their inherent simplicity and elegance, create just as strong of an opportunity for storytelling. And in some ways, they also let you use your imagination to put the pieces together, more than even words can allow.
Numbers aren't everything. At least not for me. But they’re extremely powerful in finding or supporting the story, even a story that’s otherwise not really worth telling.
The goal of this site is to ask questions that I don’t see being answered anywhere else, likely because the answers to those questions just aren't that valuable (obviously, if they had value and were addressable by the likes of me, someone with more analytical chops would have found the answer and sold it!). And this is where I have a vast array of experience -- wasting time answering questions that no one else is asking. Like, ridiculously vast experience.
Casey Kasem’s Top 40? I used to chart that every week to understand the typical trajectory of number 1 hits. Ping pong and Tetris tournaments? I kept the stat books and created power ranking formulas. Even video games like RBI Baseball, NFL Blitz, NBA Jam, Madden, and Street Fighter II weren't safe from my numbers games.
But sometimes rating and ranking real events isn't enough. So, in the spirit of being completely useless, allow me to tell a quick story of the nerdiest thing I've ever done. You've been warned -- it’s comically nerdy. Like … “defining the scale” nerdy.
~~~
I had just finished my second computer programming course in high school and learned how to use Visual Basic. This was quite a revelation ... forget about programs like this one (Arrested Development reference), now you have forms and images to make programs that look and work great!
So naturally, my first application of this knowledge was to create a virtual basketball game simulator.
I started simple: every team would get exactly 100 possessions per game (a lucky guess that turned out to be quite accurate, at least for the NBA), and they could score 0, 1, 2, or 3 points on a possession (no, I didn't account for 4-point plays). Using a random number generator, I could assign each possession a score (between 0 and 3) and then aggregate up each team's 100 possessions to come up with a final score.
The scores from this first test came in a bit high. (Expected value on a possession is 1.5 here, and multiplying that by 100 possessions averages out to 150 points per game.) I wanted low scores to be around 100, and I wanted high scores closer to 125 a game. Higher than the NBA, sure, but “reasonable” at least.
Enter the “team strength” variable. Rather than give each team the same chance on each possession, I figured that some teams should be good and others should be bad, so this should be accounted for in their scoring potential.
I decided that every team would have a value ranging from 3.0 to 3.5 that would represent their “potential per possession”. From here, if I multiplied a random number (decimal between 0 and 1) by the team strength and then rounded the ensuing product down for each of 100 possessions, then the expected score for a 3.0 strength team was around 100 points and the expected value for a 3.5 strength team was around 125 points. Success!
Now that the scoring engine was working, I couldn't stop there, could I? I had to … create a fake basketball league.
I don’t remember how many teams were in the newly created Ronjan Basketball Association, but I do remember that two of them were the “Denver Blizzard” and the “Norfolk Nice Folks”. One team, for some reason, relocated to New Jersey at one point after a really bad season. I even made logos for each team in Microsoft Paint. (Talk about using your imagination in pulling a story from numbers!)
Next, I decided that the team strength variable could itself change if a team went on a winning streak, so now a team that was a 3.0 could improve to become a 3.5 over time. Specifically, a team was given a 0.1 bump to team strength after every win and a 0.1 penalty after every loss, with strengths capped at 3.0 and 3.5.
In the end, I actually did a fairly good job of emulating the NBA. There was relative consistency at the top, but teams would fall over time as new contenders would emerge. I simulated something like 20 seasons, ultimately automating the whole process so I could just read the box scores and the standings. For my fake league.
Oh, I forgot to mention one other thing. I did this all during a summer vacation to California. Yeah.
So why’d I do it all? There’s no epiphany here -- it’s because I love answering questions that no one is asking. In this case, I actually semi-successfully modeled the underlying mathematical structure of the NBA within games, within seasons, and across seasons ... even if I didn't realize it at the time. Dayam!
I don’t plan to stop answering questions that no one is asking. And this is why Useless Sports Analysis exists.
-rj