How to: create a power rating system.

Search

New member
Joined
Oct 16, 2005
Messages
528
Tokens
Disclaimer: I'm :drink: while writing this.


//////////// technical document---------

I know there are some computer people out there, so I thought I'd write a few posts about some programs I've been developing to help handicap. SO here's how to create a power rating system using any programming language or a whole lot of pen and paper. I will do my best to keep it accessible to everyone, but this is not going to be for everyone. If anyone wants to reword parts of it that I'm not clear on please do, I'm not good at explaining.

------------ what is this?
Anyone that has ever handicapped has looked at a team's win loss record and gauged the strength of their record and that of their opponents, and their opponents opponents, ad infitum. Here's how to come up with a system that accurately gauges the power of all teams in a field and can predict their scores against each other after these ratings have been determined.

----------------- Using power ratings to estimate scoring

It all starts with an equation, where Ro is the offense's rating, Rd is the opposing defense's rating, avg is either the home or away average points scored for the league, and Pts is the number of points scored by that offense vs. that defense.

So Ro / Rd * Avg = Pts

Example: Detroit is at home facing Boston, If the average score for a basketball team at home is 90, Detroit has an average offense of Ro=1.0 and Boston has a very weak defense of 0.8, then on average detroit will score
1.0 / 0.8 * 90 = 1.25 * 90 = 112.5 points

Now that's all easily done by hand, so long as you have the power rating numbers to begin with. Coming up with the numbers takes a little more computer savvy. Here's how-
-----------
Because you start off with no knowledge of each team's relative strengths and weaknesses, every team will be assigned an initial value of 1. This will be the average score for the league. If all of the balanced Ros and Rds in a league are multiplied together, they will always equal 1. (That is because if every team played every other team, then the average of those scores would be the average score of the league.) So how do we figure out the Ro and Rd of each team? By using the same equation from before, except we solve it for Ro and Rd.

so
Ro(home) = Pts(home) * Rd(away) / Avg(home)
Ro(away) = Pts(away) * Rd (home) / Avg(away)

Rd(home) = Avg(away) * Ro(away) / Pts(away)
Rd(away) = Avg(home) * Ro(home) / Pts(home)

*Note that the Rds are compared to what the opponent scored and what they were expected to score.

And since you're trying to find Ro and Rd, you plug the scores from already played games into Pts. So if if you have Detroit 75 at Boston 100, the home average score is 90 and the away average score is 80, you'd have this:

Ro(home) = 100 * 1 / 90
Ro(away) = 75 * 1 / 80

Rd(home) = 75 * 1 / 80
Rd(away) = 100 * 1 / 90

From this point, you proceed to go through every game that every team has played against each other. If you changed the Ro/Rd to a new value for every game, you would end up just spinning your wheels. So, a list of the values from each game is kept, and once all games have been put throguh the equation you average all of these scores to come up with a new score. The averageing should in theory be done by natural log averaging of all of the Ros and Rds in each list, BUT, it will actually work just as well to average them normally, you'll just end up adding a little bit to the value of them each time. (giving you Ros and Rds of ever increasing value). This isn't bad, so just do a normal averaging and forget about logarithms.

----------------- Number of runs
Grats for sticking with me this far, all of the hard stuff is over. Now you've run into the same problem that google does when it's trying to assign pageranks to sites. The Ros and Rds that you've got are going to be off from their actual values, this is because we were plugging 1 into each equation instead of a "real" Ro/Rd. We made the assumption that every team was average so we could start off, but this isn't the case. So now we need to rerun the equations with the averaged values from the last step in place of the 1s. You keep on doing this, running with the numbers you end up with and getting more and more accurate numbers as you go. Eventually the numbers will be balanced and stop moving.

------------------ Now that we have those
Now that you have power ratings you can estimate what the scores of two teams facing each other would be on average. This prediction will tend to center around the point spread, usually being about 55% accurate at picking against the spread. That doesn't take into account line shopping, line movement, or adjustments to qualitative factors like injuries.

So there it is, good luck!:suomi:
 

I can't dance
Joined
Dec 20, 2004
Messages
1,098
Tokens
Excellent.

This is probably the single best post I have read at the Rx, and there are a couple of heavyweights here.

Thanks!
 

SSI

New member
Joined
Sep 21, 2004
Messages
14,040
Tokens
I have created one, far less complicated than this.. kudo's to you, for your work though... The one that i am using is very fluid and updated daily, this i believe is its biggest strengths.. I have been in the process of trying to figure out the best way to use it.. i was stuck with 3 options.. and the results were as follows..

Play every game: 25-16 (+6.69 units)
Play best play of day: 7-4 (+2.88 units)

i couldnt get over laying the juice with these 2 options. currently playing all dogs with a higher power rating.

Power dogs: 3-1 (+2.32 units).. 2 plays going tonight..

also am going to run a similar system in the nba..

my question to you, is how is the best to use this???
 

Forum statistics

Threads
1,108,474
Messages
13,451,847
Members
99,416
Latest member
helenhenderson
The RX is the sports betting industry's leading information portal for bonuses, picks, and sportsbook reviews. Find the best deals offered by a sportsbook in your state and browse our free picks section.FacebookTwitterInstagramContact Usforum@therx.com