Introducing Modernizing FRC Data Analytics

I hope everyone is staying safe and doing well. My name is Abhijit Gupta and I am a first year at Yale, former captain and lead programmer of FRC 5511. Today, I am excited to share a programming project I have been working on the past couple of weeks: aims to develop and distribute FRC data analysis to a wider audience. As a first direction, I have replicated Caleb Sykeshighly predictive Elo rankings, and created tabular and chart views on my website. Ever wondered how your team ranks in your region, or who would win a hypothetical match? Now you can find out! In the future, I will be rolling out updates such as OPR calculations, event predictions, Zebra MotionWorks analysis, and more.

I am thankful for everyone who laid the foundations for this effort. Huge shout out to The Blue Alliance team for their amazing API and to Caleb Sykes for introducing Elo to FRC. If you like this project, I have open-sourced my code on Github here, and would love a star and/or fork!

I hope you all enjoy this resource. Let me know if you have any questions, bug reports, or feature requests. I’ll do my best to answer everything here.


Really cool. It did seem that you may have left a country out of the country list…


This is really really really really cool. Well done!


Thats so clean! Might I suggest being able to select provinces for Canada? It’s not to the same degree as states in the US, but there is a lot of provincial differences (Ontario being a district, while Quebec and the Western provinces not) and it would make it easier for looking at these regions.

1 Like

Very cool! I was checking out the elo numbers by year, and it’s crazy how dominant 1114 was between 2007 and 2015. #1 elo 6/9 years, and only once did they have an elo below #2. They only won 1 championship in that time (although they came incredibly close at least two other times), but it shows that simbotics was king before the cheesy poofs’ reign of terror.


Love this, these are some very clean and user-friendly visuals.


These are both good suggestions. I currently store a team’s country unless they are in the USA, in which case I store the state. I can modify this to store both the country and state. I’ll have the update sometime tomorrow!

Love the site! Small bug tho: Doesn’t matter what I fill in on the year table it always tell me I’m looking at 2020, fairly sure I’m looking at different years because the teams do change so its just a minor issue.

That’s a really cool site!!! I’m guessing you only added the countries with multiple teams though right?

1 Like

I just released an update addressing a few issues noted here and on other channels.

  1. Ability to filter by entire USA, Canada Provinces, and additional countries
  2. Applied mean reversion to Current Elo for teams which haven’t played in 2020 (2056 remains first but 148 moves up to second for example)
  3. Corrected Year Table header

Let me know if you see any other issues or have feature requests. Thank you for all the kind words :slight_smile:


This is some fantastic work. Most accessible form of elo rankings for FRC I have seen.


I like the site. It will be interesting to see other metrics. It does surprise me how fast a team’s Elo rank can change with one good competition.

On nitpick: when you select say 20 rows per page, it ends up with an internal scrollbar instead of just making the page longer. This kind of defeats the purpose of seeing lots of teams at once and easy scrolling.


Exceptional work!

How/where are you hosting this? Are you able to use free tiers of service or are you financing the lookups the rest of us make?

1 Like

V1.0.2 Changes:

  1. Table scrolls cleaner (@prensing)
  2. Team search revamped (now includes team names, search bar in header)
  3. Some performance improvements (minimizes large API calls in ‘Compare Teams’)

@paulonis I am hosting a ReactJS frontend on Firebase, fetching from a Django backend API on Google Cloud Platform. I have promotional credits to offset costs for roughly a year. At this scale, it’s mostly static costs and the lookups don’t impact the cost significantly.


Major Update: Statbotics Python API

Given the positive reception to, I have developed a Python API to query the database. In just a few lines of code, one can search the most dominant seasons by Max Elo, compare OPRs from regionals vs districts, check historical match predictions, and so much more!

A quick example

First, install using pip:

python -m pip install statbotics

Getting information on The Cheesy Poofs:

import statbotics

sb = statbotics.Statbotics()

For more details, check out a Jupyter Notebook demo here, and documentation here. If you like what you’re seeing, I would greatly appreciate a star and/or fork on my GitHub :slight_smile:

If you run into bugs, have feature requests, or are just confused about something, please reach out! Feel free to use this thread to share any interesting creations with the library.


Nice! Thanks for putting this together!


This looks great. My friend and I are developing a few software applications for robotics. A TBA-style (but more user-friendly, similar to a social media site). site, app, and discord bot. We were looking for ways to assign each team some sort of rating and this API is sure to help us with that.

1 Like

That sounds like a great use case for the Elo ratings from the getTeam() function. Let me know if you run into any difficulties with the API.

1 Like

I am excited to share some major updates to There’s a bunch of new content including component OPRs, ranking point strengths, event insights, match prediction, and an event simulator. Check it out!

More details

Component OPRs and RP strengths: using data from each team’s best event, available for all years 2002-Present

Event Insights: easily see insights on the Elo, component OPRs, and RP strengths for the teams at an event

Match Predictions: using a combination of Elo and OPR to forecast matches, slightly more accurate than TBA insights (~3%)

Event Simulation: using all available statistics, runs 100 full event simulations and displays results.

I hope you all enjoy these new features. Let me know if you have any questions, bug reports, or feature requests. I’ll do my best to answer everything here.


Awesome resource, such a beautiful way to see your team is slowly getting above average

1 Like