From ratings to predictions#
Descriptive stats tell you how good a robot is; predictive modeling tells you who will win the next match. This is the foundation of Statbotics' EPA system, which is explicitly built to predict, and you can build a simplified version yourself.
The core idea#
If EPA estimates each team's expected point contribution, an alliance's predicted score is roughly the sum of its three robots' EPAs (plus a baseline), and the predicted margin drives win probability:
pred_red = baseline + EPA(r1) + EPA(r2) + EPA(r3)
pred_blue = baseline + EPA(b1) + EPA(b2) + EPA(b3)
margin = pred_red - pred_blue
Statbotics converts a margin like this into a win probability using a logistic-style function calibrated on past matches, so a larger expected margin maps to a higher, bounded-in-[0,1] win chance. You can approximate the same idea:
import math
def win_prob(margin, scale):
# scale ~ typical score spread for the game; tune on real results
return 1 / (1 + math.exp(-margin / scale))
Using component EPA for better predictions#
Summing totals is the crude version. The sharper version predicts each phase, because REEFSCAPE scoring and ranking points are phase-structured:
- Predict auto points from auto EPAs (auto has little alliance interaction, so it sums cleanly).
- Predict teleop coral/algae from teleop EPAs.
- Predict endgame from endgame EPAs, then check it against the Barge RP threshold of 16 barge points.
This lets you predict not just the winner but which ranking points each alliance is likely to earn, e.g., whether the red alliance can plausibly hit 5 coral on each of the 4 levels for the Coral RP, or whether earning the Coopertition bonus (2 algae in each alliance's processor) drops that to 3 levels and makes the RP reachable.
Validate, do not trust blindly#
A prediction model is only as good as its track record:
- Backtest: run your model on completed matches (pull results from TBA) and compare predicted vs actual winners. Track accuracy and Brier score (mean squared error of probabilities).
- Calibrate: if matches you call 70% actually win ~60% of the time, your
scaleis too confident; widen it. - Compare to Statbotics: Statbotics publishes predictions per match; if yours diverges sharply, find out why (usually a model assumption or a data gap).
Where predictions help and where they do not#
Predictions are most useful for picklist what-ifs ("if we pick 2713, what is our projected elims alliance strength?") and RP planning ("can we realistically farm the Coral RP this match?"). They are weakest exactly where OPR/EPA are weak: defense, mechanism failures, and driver clutch. So use the model to set expectations, then let scouting override it on the human factors a model cannot see.
the part worth keeping
Key takeaways
- Predicted alliance score is roughly summed EPAs; margin maps to win probability via a logistic-style function, the core of Statbotics' approach.
- Component (auto/teleop/endgame) EPA lets you predict which ranking points an alliance earns, including REEFSCAPE's 16-point Barge RP and the coopertition-reduced Coral RP.
- Always backtest against TBA results and calibrate probabilities; let scouting override the model on defense, reliability, and driver skill.
Scouting & StrategyAdvanced Techniques & Case Studieslesson 2 of 5
Keep going
Take the quiz+10 XP with an accountMore in Advanced Techniques & Case Studies
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 (Statbotics)
- statbotics.ioEvaluating FRC Rating Models (Statbotics)
- thebluealliance.comThe Blue Alliance APIv3 (match results for backtesting)
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
- 18 min readThe Blue Alliance (TBA): How to Use FRC's Match & Team DatabaseThe Blue Alliance (TBA) is FRC's free match and team database. Navigate team, event, and match pages, set up myTBA notifications, and use its read API./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
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
01Using EPA (Expected Points Added) ratings, how do you produce a predicted score for one alliance in a match?
02In this model, how is the predicted point margin between the two alliances turned into a win probability?
03When backtesting a win-probability model against TBA results, which metric measures the quality of its probability estimates?
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