Robolyst Robolyst
← All scouting metrics

OPRc

OPRc is OPR with two changes that fix most of what is wrong with it: it is fit against the individual scoring sections of the game rather than the final score, and it is constrained so no team can be credited with negative scoring. Where a season publishes score details, it is the number Robolyst ranks on.

Why plain OPR goes negative

Least squares has no idea that scoring points is a thing you can only do a non-negative amount of. If a team happens to appear on several low-scoring alliances, the fit that best reproduces those scores may hand them a rating of −8. Read literally that says the robot removed points from the field, which no FTC robot can do.

It is not a rounding artifact either: a negative rating drags down every alliance the team appeared on, which distorts their partners' numbers too. The constraint is what stops one unlucky team from contaminating a whole event's ratings.

How it is computed

FIRST publishes a per-match score breakdown for recent seasons — auto, teleop, endgame and whatever else the game defines. OPRc uses that breakdown directly:

  1. Build the same design matrix as OPR — one row per alliance appearance in a qualification match, one column per team.
  2. For each scoring section, solve that system against the section's points alone, using non-negative least squares (active-set Lawson–Hanson) so every estimate is ≥ 0.
  3. A team's OPRc is the sum of their section estimates: how many auto points they contribute, plus how many teleop points, and so on.

Because penalty points are not one of the game's scoring sections, they never enter the fit. OPRc is penalty-free by construction rather than by subtraction.

True OPRc, and why there are two numbers

True OPRc is one non-negative fit against the penalty-free total, instead of one fit per section summed afterwards. The two answer slightly different questions and will not match exactly.

A large gap between them is itself information: it means the per-section fits disagree with the total fit, which happens at short events, at events where one team never played in a phase, and wherever the sample is thin enough that the constraint is doing a lot of the work. Treat a wide OPRc / True OPRc spread as a sign to look at the matches themselves.

The section split

Because each section is solved on its own, OPRc comes with a breakdown attached. Two teams with the same OPRc are not interchangeable if one earns it in autonomous and the other in the endgame — for alliance selection that difference is the whole decision. Event rankings show the split where the data supports it.

When it isn't available

Score details only exist for seasons where FIRST published them. Older events, and any event whose match data never carried a breakdown, have no OPRc at all — those pages fall back to OPR, and season rankings use OPRc where present and OPR where not. That fallback is why the world rankings can span every season on record instead of only the recent ones.

Remote events are excluded outright, for OPR and OPRc alike: they pit one team against an empty alliance, so there is nothing to solve.