PPR - Penalty Point Ranking

I had a random thought today. There is currently an OPR calculation and a DPR calculation being done by First or TBA. Those are based on points scored by the alliance and points allowed by the alliance. I was wondering if anyone ever considered a PPR Penalty Points Ranking that is calculated based on penalty points per alliance to try to determine a teams contribution to penalties. I know for our team ‘knowing the rules’ and not getting a lot of penalties is high on the alliance selection criteria.

I am both too busy and not versed enough in the statistics to implement such a thing, I was just curious if anyone else had given it consideration or do you think it would be useful or not?


That’s actually not a bad idea…

OPR is essentially a team’s average contribution to their alliance’s offensive score. DPR is a team’s average “contribution” to their opponents’ offensive score. There are component OPRs which can tell how good a team is at some component of the offensive game. I’m not up on the math needed offhand (it’s linear algebra, so I could recall it fairly quickly I think) but it’s not too bad IIRC.

The only hard part for PPR would be remembering how the foul points work. (And remembering that some of the fouls result in a point adjustment rather than a foul–but we’ll ignore those.) You’d want opposing foul score, and to really get the full effect you’d want to take the foul score of the team you’re looking at as a negative number. (Or vice versa–opposing foul score as a negative, own as a positive. We’ll assume opposing is positive and own is negative.) Solve the matrix for the team in question and if their PPR is positive, it means they generally get more penalties than they give. Zero, about even. Negative, they tend to draw fouls by the other alliance a lot.

Yeah, definitely doable, by using component OPR methods.

It’s definitely a thing. At many events in 2017, after climbing, penalty differential was arguably the most important stat there was.

Now just to get someone from theBlueAlliance to add that calc.

Normally notes would pick up enough detail to figure out what teams are repeat offenders, but man I would like this to be available in TBA, put that shame on display a little bit.

Having said that, idk if OPR/DPR takes into account the pre-penelty score or the final score. If it is the latter this functionality is already baked in, but the granularity just isn’t there.

Maybe add that into those long term ELO calcs?

Fouls and tech fouls vary from year to year. And like Eric said, some penalties are entered differently, like endgame violations. Free climbs in 2020 didn’t show up as penalty points, right?

But as a metric for auto and teleop play, I think this is a cool idea. Some teams have an anecdotal reputation for causing fouls… lets see the numbers!

1 Like

The Blue Alliance is open source and welcomes pull requests that add value. If you can build it…

Additionally, pretty much all the data TBA has is accessible via API. So if you can do the math in an application using the API, you can distribute that, too.

My scouting databases for the past few years has had a metric calculated as you describe here. On the very right side of every sheet there are three columns called “foul Count”, “tech Foul Count”, and “foul Points”

These all use the same methodology as OPR, just plugging in their respective values instead of the total score as OPR does. Note that since fouls are credited to the opposing team, these actually match up red foul points with the blue robots in the linear equations. To see each team’s contribution to fouls drawn, I match up the blue foul points to the blue robots, look at the following three columns for those calculations.

In 2020, here were the top 25 teams with the highest calculated contribution to foul points:

team Number Nickname event foul Count tech Foul Count foul Points
7742 Cosmos Robot Works Bosphorus Regional 0.51 2.09 32.85
7831 BALİSTA BİLSEM Bosphorus Regional 0.49 1.94 30.56
7549 LYBOTICS YOUTH TEAM Bosphorus Regional 0.06 1.95 29.44
7465 MAGNETECH Bosphorus Regional 0.48 1.85 29.16
6430 Kalsedon Istanbul Regional 0.51 1.80 28.50
5773 YAFL Mechatronics Bosphorus Regional 0.31 1.64 25.59
7173 Iris Robotics Canadian Pacific Regional 0.94 1.46 24.70
7828 KALROBOTICS Bosphorus Regional 0.05 1.56 23.56
7781 Port Moody Robotics Canadian Pacific Regional -0.28 1.61 23.27
6064 IstanBULLS Bosphorus Regional 0.25 1.49 23.11
7569 Optimus Robotics Bosphorus Regional 0.53 1.40 22.66
8042 Fenrir Bosphorus Regional -0.03 1.51 22.60
4970 ICE Cubed FIM District Kingsford Event 0.81 1.34 22.54
7865 Hope of Detroit Robotics FIM District Southfield Event 0.29 1.41 22.05
8173 Brighton College Istanbul Regional 0.94 1.25 21.52
7768 The Iron Hill Automatons FIM District Kingsford Event -0.25 1.47 21.26
3075 Ha-Dream Team ISR District Event #2 -0.03 1.41 21.03
8070 CyberGriffins Istanbul Regional 0.14 1.37 21.02
5674 The Gearhounds FIM District Jackson Event 1.32 1.11 20.56
6652 Tigres Regional Monterrey 0.68 1.23 20.53
6459 AG Robotik Bosphorus Regional 0.01 1.35 20.31
7463 Incandescent Mice FNC District Wake County Event 0.75 1.19 20.04
6500 GearCats 6500 FNC District Wake County Event 0.28 1.28 19.96
2993 InTech MegaBots Utah Regional 0.26 1.27 19.87
8151 WildFire Bosphorus Regional 0.35 1.23 19.55

7742 at Bosphorous on average was contributing about 32 points worth of fouls per match to the opposing alliance. From a quick look at their matches, it seems that most of this comes from q44 where 7742’s alliance committed 12 tech fouls. It’s not a coincidence that the number 2 team on this list, 7831, was on the same alliance as 7742 in q44.


Scanning that data & seeing the top 25 were at maybe just a dozen events, it seems like this may be telling us more about how the matches were refereed at those events (at least the ones dominating the list).

The database also has fouls drawn, so you can see if opponents commit a lot of fouls against a particular robot.

1 Like

Fouls are a factor. In week zero there were two matches with 3 Fouls and one with 6 Fouls.
That is 12 and 24 points if using 2022-point values. Techs are worth eight points, something our team tracks, especially important for alliance formation in a low scoring game.