What Statbotics is#
Statbotics (statbotics.io) is an open-source FRC analytics platform whose central feature is the EPA rating system. It pulls match data from The Blue Alliance and publishes ratings, match predictions, and event simulations, accessible via the website, a Python library (pip install statbotics), a REST API, and CSV exports.
What EPA means#
EPA stands for Expected Points Added. It estimates a team's average point contribution to a match. Conceptually it is a moving average of a team's performance expressed in points: to predict a match, you add up the EPAs of the teams in each alliance; the gap between predicted and actual score is the error, and each team's EPA is nudged based on that error after every match. This is the same updating idea as the Elo rating system, but Statbotics converts it into point units (so EPA reads like OPR) and adds modifications that improve accuracy and calibration.
Component and ranking-point EPA#
A big advantage over OPR is that EPA breaks into components you can interpret separately:
- Auto EPA — contribution during autonomous.
- Teleop EPA — contribution during the driver-controlled period.
- Endgame EPA — contribution at the end of the match.
- Ranking-point EPA — contribution toward earning bonus ranking points.
This lets you ask precise questions like "who has the best autonomous?" or "who reliably earns the endgame ranking point?" directly from public data.
Normalized (unitless) EPA#
Raw EPA is in this year's points, so it cannot be compared across seasons. Statbotics also publishes normalized EPA on a unitless Elo-style scale (it uses the same units as the Elo model) where 1500 is roughly average, ~1800 is about the top 1%, and ~2000 is an all-time great season. On that scale a difference of about 250 points corresponds to roughly a 75% win probability for the higher-rated team, which lets you compare teams across different years and estimate matchups.
EPA vs OPR#
EPA is generally more predictive than OPR and, unlike OPR, it is a moving average (so it weights recent matches and adapts as a team improves during an event) and it separates into interpretable components. It still shares one major blind spot with OPR: it is built from scoring and does not directly measure defense, and it cannot capture reliability nuance the way watching a robot can.
How to use Statbotics in scouting#
- Pre-event seeding of expectations: sort teams by EPA (and by component) to know roughly who is strong before you have your own data.
- Picklist cross-check: compare your scouting-based ranking against EPA; investigate big disagreements, since they often reveal either a scouting error or something EPA misses (like a great defender with low EPA).
- Match prediction: use EPA-based win probabilities to gauge which qualification matches are toss-ups worth extra strategy.
Treat EPA as the best free offensive rating available and a superb sanity check, then layer your own scouting on top for defense, reliability, and human judgment.
the part worth keeping
Key takeaways
- EPA (Expected Points Added) is a points-unit moving-average rating built on Elo, generally more predictive than OPR.
- It splits into auto, teleop, endgame, and ranking-point components, and a normalized unitless version (1500 average, ~1800 top 1%, ~2000 all-time great) compares across years.
- EPA still does not measure defense, so combine it with scouting just as you would OPR.
Scouting & StrategyData Analysis: TBA and Statboticslesson 3 of 4
Keep going
Take the quiz+10 XP with an accountMore in Data Analysis: TBA and Statbotics
where this came from
Sources and corrections
This lesson is AI-assisted: drafted from primary sources, then reviewed and edited by hand. Errors still get through. When one is reported we fix it and write down what changed, in public, in the corrections log.
sources and further reading
- statbotics.ioThe EPA Model: A Gentle Introduction (Statbotics)
- statbotics.ioThe EPA Model (Statbotics)
- statbotics.ioStatbotics
- github.comStatbotics — GitHub
clipped to this lesson
Articles that go further on this
The lesson gets you through the topic. These go wider on it, and they read in one sitting.
- 19 min readWhat Is Statbotics? FRC EPA (Expected Points Added) ExplainedStatbotics explained: what EPA (Expected Points Added) means in FRC, how it's calculated, how EPA compares to OPR, and how to use it for scouting./blogread it
- 20 min readBuilding an FRC Scouting App: Data Model, TBA/Statbotics APIs, and PicklistsBuild an FRC scouting app: match and pit scouting, a simple data model, pulling schedules and EPA from the TBA and Statbotics APIs, and building a picklist./blogread it
- 18 min readOPR, DPR & CCWM in FRC: What Every Scouting Stat Actually MeansOPR, DPR, and CCWM explained for FRC scouts: how each stat is computed with least squares, what it really measures, where it misleads, and how EPA compares./blogread it
answer sheet
Lesson quiz
All 3 right completes the lesson. Miss one and only that question comes back, anything you already answered correctly stays banked.
0 of 3 answered
01What does EPA, the core Statbotics metric, stand for and measure?
02How does the EPA rating relate to the Elo system it is built on?
03How do you use team EPAs to predict an alliance's match score?
Answer every question to submit.
All 32 lessons in Scouting & Strategyopenclose
01 / prerequisites
02 / scouting-fundamentals
03 / building-a-scouting-system
04 / data-analysis-tba-statbotics
05 / strategy-picklists-and-match-play
06 / worked-examples-and-mini-projects
- Not read yet:Project 1: Configure a QRScout Form for REEFSCAPE
- Not read yet:Project 2: Compute OPR by Hand, Then in a Spreadsheet
- Not read yet:Project 3: Pull Live Data with the TBA and Statbotics APIs
- Not read yet:Project 4: Build an EPA-Component Robot Ranking Sheet
- Not read yet:Project 5: Assemble a One-Page Pre-Match Prep Sheet
07 / common-mistakes-and-troubleshooting
08 / advanced-techniques-and-case-studies