Iterative Interpretations of OPR and WMPR
(I found this interesting: some other folks might or some other folks might not.

)
Say you want to estimate a team's offensive contribution to their alliance scores.
A simple approach is just compute the team's average match score/3. Let's call this estimate O(0), a vector of the average match score/3 for all teams at step 0. (/3 because there are 3 teams per alliance. This would be /2 for FTC).
But then you want to take into account the fact that a team's alliance partners may be better or worse than average. The best estimate you have of the contribution of a team's partners at this point is the average of their O(0) estimates.
So let the improved estimate be
O(1) = team's average match score - 2*average ( O(0) for a team's alliance partners).
(2*average because there are 2 partners contributing per match. This would be 1*average for FTC.)
This is better, but now we have an improved estimate for all teams, so we can just iterate this:
O(2) = team's average match score - 2*average ( O(1) for a team's alliance partners).
O(3) = team's average match score - 2*average ( O(2) for a team's alliance partners).
etc. etc.
This sequence of O(i) converges to the OPR values, so this is just another way of explaining what OPRs are.
WMPR can be iteratively computed in a similar way.
W(0) = team's average match winning margin
W(1) = team's average match winning margin - 2*average ( W(0) for a team's alliance partners) + 3*average ( W(0) for a team's opponents ).
W(2) = team's average match winning margin - 2*average ( W(1) for a team's alliance partners) + 3*average ( W(1) for a team's opponents ).
etc. etc.
This sequence of W(i) converges to the WMPR values, so this is just another way of explaining what WMPRs are.