This website uses data from the Tespa Collegiate Series - Overwatch bracket to assign Elo ratings to every team on the bracket.
Teams start with their average skill rating and will go through the Elo system as they play off in the bracket!
All data viewed on this website is either scraped from Tespa's official website, Overbuff, or calculated from the scraped data.
When scraping team members from Tespa's website, only official players were taken. This excluded team managers / coordinators and substitutes.
Their Battle Tag was queried to Overbuff to find their skill rating. However, do note that if a person was unranked, they would be excluded from the average calculation. If for some reason, the roster contained more than 6 players on the starting roster, only the top 6 ranked players would be factored into the calculation.
Scraping skill rating from Overbuff is a lengthy process as it requires visiting the individual page for each player (over 1400 players). As such, skill ratings will not be updated (EDIT: Due to popular request, skill ratings have been updated for Towers of Doom!) and will only be used as a Week 0 starting point, since Elo by the end of the competition will be more accurate than subtle SR changes.
EDIT: Rather than initially seeding teams with average SR, the new system will start all teams at 1500 and use a new κ value of 150.
Rather than calculating Elo after every match (bo3 / bo5), it is updated after every map so that matches going 2–1 will result in a different result than a 2–0.
Elo is calculated using some math found here with the κ value being set to 150 (previously 50), meaning for each game, a team could gain or lose no more than 150 Elo.
Note: Elo ratings are calculated and stored to floating point decimal accuracy but are displayed as rounded to 0 or 2 decimals for UI purposes. Viewing raw JSON files will display full decimal accuracy.
Using a team's most recent elo, predictions of future matches can be calculated using some math found here.
This site runs off an Ubuntu based server running Python 3.6 and the Flask web micro-framework. All scraped data is saved to and served from json files rather than SQL tables. You may view the source code here.