# Re(1): Steve Skiena System

## Posted on September 21, 2003 at 08:16:47 AM by Tiger

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
wouldn't change.

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.