If you haven’t already, please read the article, BRCT: A New Way to Measure NCAA Tournament Résumés, before reading this one. You’ll need the information from that article for this one to make sense!
It was less than two weeks ago that I introduced the world to BRCT—the Bauertology Résumé Calculation Tool—a results-based metric developed by yours truly, which aims to more accurately measure the impact of teams’ wins and losses, with important efficiency adjustments included based on margin of victory/defeat, serving to put the NCAA’s NET rankings to a résumé-based use, eliminate the need for the arbitrary cutoffs of the quadrant system, and bring more power to the phrase “every game matters.”
I debuted BRCT hoping that the response would be positive for something that looks to fix key flaws in the current résumé evaluation system (and something that I’ve poured so much time and effort into). And I’m happy to say the response wasn’t just positive. It was sensational. From numerous comments saying how awesome of an idea BRCT is, to people calling for its immediate implementation into the selection committee’s team sheets, to multiple people reaching out with potential solutions for my data entry issue, BRCT was extraordinarily received. I thank each and every one of you for that.
But today’s post is not just me bragging about the reaction to BRCT. It’s about exciting developments that have been made in the short time since BRCT’s premiere on Jan. 16, the most exciting of which pertains to a certain “data entry issue” mentioned in the prior paragraph.
As I detailed in the original BRCT post, the way I was entering game data into BRCT at the time leading up to its debut was all by eye-to-hand translation, a.k.a, manually. At the end of each day, I would visit the NCAA Statistics site, open up the Division I men’s basketball schedule for that day’s games, and then manually type the winner, winner’s score, loser, loser’s score, and location (home, neutral, or away, based on the winner’s perspective) into BRCT’s game data spreadsheet. Thankfully, formulas took it all from there to correctly calculate BRCT scores, but there was no guarantee that the hand-entered game data was correct in the first place. Any kind of manual entry for that much data is prone to error. And though a Sunday or Monday slate of 15-20 games wasn’t so bad on my psyche, the weekly Saturday slog of entering the results of 150+ contests grew tiresome.
These issues of typos and fatigue were ones I knew were possible from the very onset of BRCT’s creation. I knew that automation would be the solution… problem is, my knowledge in coding is next to zero; I didn’t even know where to begin. That’s why I included my plight at the bottom of the original BRCT post, hoping a reader with some expertise might be able to lend a hand.
Thankfully, bracketology has put me in the right circles to get the solution I was looking for. For the new BRCT game data entry system, you can send your thanks to AI Bracketology!
An essential follow for college basketball Twitter, AI Bracketology (@AI_Bracketology) is a mechanical savant who uses machine learning to interpret previous NCAA Tournament résumés, which produce bracketology projections that are scarily accurate. Having those kinds of chops makes him a coding expert (at least, compared to me), and with his assistance, we were able to work out a way for Python to draw essential game data (teams, scores, location) from KenPom. All I then have to do is upload the data as a CSV file into my BRCT Google Sheet, copy with the proper formatting into BRCT’s game data spreadsheet, and let the formulas do the rest. Minutes, sometimes hours of work, done in seconds. Hoorah!
Here’s what this new game data entry spreadsheet, from which BRCT pulls data into its formulas, looks like:
In addition to saving me time, this new system excludes the possibility of hand-translated error, meaning everything is certifiably 100% correct! …Well, for the most part. There were a handful of kinks I needed to work out. The NCAA and KenPom often have different ways of writing out team names, such as “CSU Bakersfield” vs. “Cal St. Bakersfield,” “UIW” vs. “Incarnate Word,” so on and so forth. Both components are essential, since I pull the daily NET numbers from the NCAA, and I’m now pulling game data from KenPom, so I had to get together some formulas to get those name discrepancies on the same page.
This is what that table looks like, making sure that NCAA, KenPom, and BRCT naming conventions are all recognized:
Additionally, locations are sometimes deceiving. KenPom pulls the name of the city and venue (e.g., “Richmond, VA Siegel Center”), not whether the contest was home, neutral, or away. While we can use formulas to designate the location of an arena, it’s not 100% foolproof. Take, for example, Villanova, which has played two games in the Wells Fargo Center to date: vs. Temple on Dec. 7, and vs. Providence on Jan. 17. Problem is, the game against Temple was a neutral-site game, as part of the Big 5 Classic, and the game against Providence was a home game, as part of the Big East conference schedule. This was not the only example of this issue; see Washington State playing a neutral game against Eastern Washington in Spokane Veterans Memorial Arena on Nov. 21, but a home game against Loyola Marymount in the same venue on Dec. 30. So, I had to get creative to work around this location confusion.
Though it took quite some time to work through each and every one of these location discrepancies, I got it done. And when I was finished, I was then able to cross-compare the new, accurate BRCT results with those originally derived from my manual entry. And across over 3,000 games of me punching in numbers, I only made 10 total mistakes. Not bad, if I do say so myself!
But zero mistakes is better than 10. And that’s where the new BRCT system lies: mistake-free!
But the game automation is not the only upgrade BRCT has received in the short span since its debut. My dream for the BRCT table was to be interactive for visitors. A 1-364 ranking system is great, but if you can’t organize it by more than just the ranking, what good really is it?
The issue here is that my resources were limited. On WordPress’ standard premium plan, all I could do was embed a tiny little Google Sheet with no option for visitors to sort and search. Couldn’t even freeze row headers, for Pete’s sake! So, I made the decision to shell out some cash to WordPress in order to upgrade. (And I sincerely hope you all find it worthwhile, because it wasn’t cheap.)
For me, I think it’s worth it. I’m proud to show off the new and improved BRCT table below! (You can also see it all the time on the main BRCT page.)
Isn’t she a beaut? Instead of just being a static 1-364 list, you can sort by team name, conference, BRCT’s résumé component, BRCT’s efficiency component, schedule difficulty, and more. And the search function makes it extra handy if you’re just looking for the BRCT numbers from one team or conference in particular.
This searchable, sortable table is also going into effect elsewhere on the Bauertology website. If you head to the Resources tab now, you’ll see that the Tournament Site Distances spreadsheet has been revamped. This means that fellow bracketologists looking for the correct site to place a team in their bracket no longer have to strain their eyeballs scanning and scrolling through an itty bitty Google Sheet to find out which tournament sites are closest. Just punch the team name into the search bar and get what you’re looking for in a flash! (I also plan on bringing this searchable table to the rematches spreadsheet, once I devise a good way to do it.)
And before I conclude this writeup, I have one final BRCT update for the particularly astute. You may have noticed that the résumé and efficiency components in the BRCT table above are calculated slightly differently than those found in the original BRCT article. I figured that, if I’m going to include a table where you can sort by those résumé and efficiency components individually, I should make those numbers a little more accurate.
The résumé and efficiency numbers on the BRCT table of the past were raw: the total number of résumé points accrued, and the total number of efficiency points accrued (based on the team’s overall scoring margin, multiplied/divided by the difficulty factor). The issue here is that the adjustment for number of games played was not made until the final BRCT score calculation, meaning a team might have a higher individual résumé or efficiency score than another team, simply because they’ve played more games. So now, the adjustment for dividing by number of games played (and subsequent multiplication by 10 to get a big, satisfying number) is made inside those individual résumé and efficiency calculations, in order to make those numbers more accurate on display. (That leaves just the 0.6 and 0.2 multipliers and subsequent addition for the final BRCT calculation.) It’s not like this was a terribly important change to make, as it makes no difference in regard to the final BRCT score, but it does make those newly sortable factors a bit more precise in depiction!
That’ll do it for this writeup, but that’s not it for BRCT. I’m continuing to look at ways to evolve this homemade metric’s presence, including finding a way to show how impactful single-game results are for a team’s overall résumé (perhaps through some sort of before-and-after system), as well as an easier way to view all of a team’s results, like how KenPom and T-Rank are able to do. Based on my limitations, that could be a feature saved for the distant future, but it is a thought in my mind right now. Please leave your suggestions for other ways you would like to improve BRCT, and I’ll take a look at their validity and viability. Thanks as always for reading and for caring!
One thought on “BRCT: An Exciting Update”