← Back

How OPR is calculated

Think of picking apples

We only ever see what a pair brings home, and we want to know how much each person adds.

  1. Day 1. Sara and April pick 20 apples together. We can't tell them apart yet, so the best guess is 10 each.
  2. Day 2. Sara picks with Mohan and they bring 30. April picks with Joy and they bring 15. Sara and Mohan look stronger than April and Joy, but we still can't say how much each person picked.
  3. Days 3 and 4. Mohan and Joy bring 23, and Sara and Joy bring 18. Changing partners is what lets us separate everyone.
DayPairPickedBest-fit guessMiss
1Sara + April2012 + 8.5 = 20.5−0.5
2Sara + Mohan3012 + 17.5 = 29.5+0.5
2April + Joy158.5 + 6 = 14.5+0.5
3Mohan + Joy2317.5 + 6 = 23.5−0.5
4Sara + Joy1812 + 6 = 180

Least squares means best fit

No single set of four numbers matches every day exactly, because the days disagree a little. So we look for the set that misses the least: square each day's miss (so +0.5 and −0.5 both count, and big misses count more), add them up, and keep the set with the smallest total. Here that is Sara 12, April 8.5, Mohan 17.5, Joy 6, with a total squared miss of 1.0. No other set of four numbers does better.

Using it. If Mohan picks with April tomorrow, we expect 17.5 + 8.5 = 26 apples.

In FTC

Apples are points, pickers are teams, and each day's pair is an alliance in a match, so every match adds two equations. Foul points are removed first. Auto OPR counts the morning's apples (auto points) and Tele OPR the afternoon's (tele-op points) with the same method, so Auto OPR + Tele OPR = OPR. It only works because alliances change: if the same two teams always played together, nobody could tell them apart.

Carry % (0 to 100)

In every match, each team gets a share: its OPR divided by its alliance's total OPR (the % under each team in the match list). Carry % is the average of those shares across all the team's matches. Around 50 means the team usually did about half the work. Higher means it was carrying weaker partners, and lower means its partners carried it.

Partners' OPR is the average OPR of the teams a team has played alongside across its matches. A low number means it mostly played with weaker partners, which is why its Carry % is high.

Example: two teams both have OPR 40. One always plays with a partner at 15, so its share is 40 ÷ 55 = 73%. The other always plays with a partner at 35, so its share is 40 ÷ 75 = 53%. The first has a Carry % of 73, the second 53.

When it shows

From a team's first match the sheet shows this calculation using this event's matches so far. Early on it simply splits each alliance's score between its two teams (a 108-point match gives each team 54), and it sharpens as teams play with different partners. Before a team's first match, the OPR shown in gray italics is the team's OPR from its earlier events this season; it is replaced by the real number from this event as soon as the team plays. A team with no earlier events shows –.

Earlier events from the same season also feed the predictions (blended in at the start, and counting for less with every match a team plays). Nothing from other seasons or other games is used anywhere. A predicted score adds the two teams' ratings plus average foul points, and win % compares the two alliances against how unpredictable results have been at this event.

How steady is it?

OPR needs matches. With about 3 matches per team the order is roughly right; 5 to 6 per team is solid (numbers within about 10 points); 8 or more keeps tightening. At a 28-team event like Saline (35 matches) each team plays about 5, so expect a few points of noise.

← Back