Opponent WP48 and Opponent adjusted WP48 for 2010

Posted on 12/23/2010 by


I screwed up in the last post. It’s really not the first time and it won’t be the last . But it was the good kind of screw up, the kind that makes me go out and break out some maths and some datasets. So feel free to grab a drink, review the Basics or the Basics walkthru even, because this post? It goes to 11.

The mistake in question has to do with the number 2. When working out opponent adjusted WP48, I double counted all the stats. This is because the ADJP48 includes all the marginal value generated by the team and the opponent. In my defense, I would have realized this if I had not been in a hurry to post in the 15 minute break I had during lunch at work (It was either post or go to the bathroom, and yes I have a problem). But really the margins just didn’t add up.

This is what I apparently can't do when I'm in a hurry

Let’s do the long winded explanation for this. Try to stay with me, I know it’s math but i’ll throw in some jokes and some pics to keep you entertained and I promise the payoff will rock! Consider this rev #2.1 (powered by NerdNumbers) which is as good as it’ll get until we get play by play data (which Andres is working call it super NerdNumbers powers) .

To recap:

I revisited the idea of adding  individual opponent adjustment to the Wins Produced model. The driver for this has been the fact that currently Wins Produced divides defense up at the team level for all stats that are not in the boxscore and I have been trying for a while to get at this. Why? I don’t know call it a pet peeve.

The goal then  is WP48 at the player level adjust for what the player does and what his opponent does. To do this I look edat Player data for the last ten games for each team and mapped how each opponent did by position. I’ve also accounted for the effect of altitude,rest and home and away. That looked like so:

Then I worked out WP48 for the last 10 games adjusting for position based opponent production and then use my nifty points equations (last seen here) to work out point margin contributions (for every player). See that here (for the corrected version go here):

But as I said I screwed up. I was re-checking the numbers from my previous post and I realized this fairly quickly.  I’ve explained this before but the gist of it is, for the game to game instead of doing:

Sum of ADJP48 for Team * MP/48 – Sum of ADJP48 for Avg Team * MP/48 , We do
Sum of ADJP48 for Team * MP/48 – Sum of ADJP48 for Opponent * MP/48

In layman’s terms instead of being compared to the average team, we compare you to the player on the other side.

Bet you thought it was going to be Ellery Queen here

So when I worked out the following relationships :

Point Margin for a game = 0.0377 + 15.5 Wins Produced

Expected Avg Point Margin for Team (season) = 31*(Wins Produced (team for the season) -41 )/82

Wins Produced (team for the season) = (Expected Avg Point Margin for Team (season)*82)/31 +41

Marginal Wins Produced (team for the season) = Expected Avg Point Margin for Team (season)*82/31 = PM*2.645

Point Margin = 31/82 * Marginal WP = .378 *WP


+1 Points = 2.645 wins over .500 (43.645 wins)

+10 Points = 26.45 wins over .500 (67.45 wins)

+1 WP = +.378 Points

+10 WP = +3.78 Points

Which all tracked at 99.9% correlation.

I noted: “I had a mistake when I put this up. To convert WP to expected Point Margin (and vice versa) for the team I have to account for the fact that for a single game half the win credit goes to the victor and half get charged to the loser so the equations for conversion become”

Zombie Error eats brains

This means that for normal WP we assume Player production vs. average opponent and assign full value to the margin and it works fairly well. When I went to Defense adjusted the point margin equations all got skewed by a factor of two (at the player level). This happens because working out opponent WP48 also lines up with team wins. So classic WP48 and Wins Produced and Opponent WP48 and Opponent Wins Produced get to the same result when you add them up individually by team. If I add the two of them I just get double the wins. How do I know this? Because I just did all the numbers for 2010 and I’m not afraid to post them.

What did I actually do? I worked out

  • Classic WP48 for each player.
  • Opponent WP48 for each player by game based on time by position (this is Wins Produced by team based on deviation of the opponent from average)
  • Added them up into a number I’m calling Combined WP48 (by the simple expedient of taking the average)
  • Then I went out and computed the Expected Point Margin Generated by each player

I used game splits for 2009-2010 (you can thank Andres and our pet project which we’ll call SuperNerdNumbers for Now). Now before we get too crazy with some fancy new equation, I wanted to check that the correlations are all still ok:

Cool . Let’s use it to look at players:

Next time well play with this some more :-).

Posted in: Uncategorized