My player ratings system is an exponential smoothing model that, by definition, gives more weight to recent data. Updated after each game, it looks like this:
New rating = alpha*Game Score + (1-alpha)*Old Rating
(where alpha, the smoothing constant, is a factor from 0 to 1)
Another way to look at that:
If alpha = 0, the last game is ignored
If alpha = 1, the last game performance is considered the average.
Varying alpha allows the model to respond fast or slow, according to my preferences:
Too high a value, and the model is 'nervous', responding wildly
and interpreting normal variance as changes in player ability
(I would always be choosing the winner of the last game).
Too low a value and the model is 'sluggish' and wouldn't react much to recent performance (sort of like the whole-season average).
Game Score is a secret blend of herbs and spices, but
it includes ratings and post positions of other players (teams)
in the game. You get more points by beating stronger players and
winning from a difficult post. Basically, I ask how the player
did vs. what I expected him to do. So, if I calculated a player's
'true probability' at 20%, I would expect him to win 20% of similar
games. If he did, in fact, win 20% of those games, his rating
There's one other aspect of the ratings updata that's more complex and harder to explain. My 'average' player (that means for this fronton, this season) is rated 125. If you win you go up, if you lose, you go down. I start the season with everyone at 125, then let the model do it's work. Imagine a rubber band anchored at the 125 level. A player can depart from the 125 level (by success or failure), but the farther he gets from 125, the harder it is to increase the gap. Simply stated, if the model can't find enough data to move a guy further, he will tend to gravitate back to 125.
I never stop fiddling with my alpha values, and all the other parameters in my system - I want to pick up the hot player, but not be a "Nervous Nellie". The 'suddenly-cold' player is a different story - harder to catch since you might only expect to win 1 in 8, anyway. I have a different way of catching that. All model assumptions are run against multiple seasons of actual entry/result data to determine effectiveness.