Skip to content

Predictive Match Modeling and Win Probability

learnfrc.com
learnfrc.comAuthor
Veer Bajaj
Veer BajajMaintainer

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.

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

Section titled “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.

A prediction model is only as good as its track record:

  1. 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).
  2. Calibrate: if matches you call 70% actually win ~60% of the time, your scale is too confident; widen it.
  3. 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

Section titled “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.

  • 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.

This lesson was adapted from learnfrc.com.