Inspiration

The inspiration came from how ELO rankings are done in competitive chess and applied them in the context of League of Legends. I have very closely followed the methodology mentioned in this link, however, I have added some extra quirks to solve some other problems mentioned in the write-up for this hackathon!

What it does

It is a completely serverless solution that computes the ranking on demand when the API is invoked. This means that the rankings you get every time are fresh and up to date!

How we built it

I utilized 3 services from AWS; namely, S3 to host the data files, Lambda for computing the rankings and API Gateway to trigger the Lambda and provide the user with the response.

Challenges I ran into

While it made a lot of sense to me to try implementing rankings based on a system similar to chess, it was still challenging to map the datasets to follow the methodology mentioned linked above. One of the main challenges was implementing a k-factor that solved the challenges such as a slow start. I started every team with a rating of 1000, I then leveraged uniform distribution, to get a higher k-factor when the average rating of the teams was low and a lower k-factor when the average rating was high. This meant the rating swings were higher for teams rated lower and they could ideally catch to the rating that represented their actual skill level more quickly. Another challenge was implementing a higher rating swing for bigger tournaments by utilizing the priority mentioned in the leagues data inside leagues.json.

Accomplishments that we're proud of

Due to other commitments, I could not give as much time as I would have liked to create this solution. I consider it an accomplishment to get it to a working state with no issues. I also did not have a lot of experience with Lambda and API Gateway so I had to ramp up on those in this limited time as well.

What we learned

There's a lot more that can be done! The different values such as the k-factor ranges can be tweaked to perfection. There is so much more data to build out interesting statistics and the ELO rankings help a lot with putting numbers next to a team/performance to signify and quantify their achievements. It was also nice to learn so much about Lambda and API Gateway in such a short amount of time.

What's next for Chess ELO Rankings

A front-end dashboard for these rankings can help a lot. The rankings can be refreshed every hour and updated on the front-end for users to view. This way the users do not have to wait for the Lambda invocation through the API to complete. The slightly more arbitrary values like k-factor ranges can also be tweaked more to get a fairer distribution of the ELO ratings.

Built With

Share this project:

Updates