The basic formula for updating Team A's Offensive Rating (ORA)
ORA+: Updated estimate of team A's offensive rating
ORA-: Prior estimate of team A's offensive rating (before the game)
KORA: Kalman weight for updating the Offensive Rating of Team A
ORA,G: Actual offensive rating of Team A in the game
DRB-: Prior estimate of team B's defensive rating (before the game)
R: League average offensive rating
se2: Variance of the predicted offensive rating (fixed on 11/16/97)
= [Var(ORA)-Var(DRB)- + ORA-ORA-Var(DRB)-+DRB-DRB-Var(ORA)-]/R2
sG2: Variance of the offensive ratings in games
= 100 to 150 usually
This formula essentially takes the original estimate
(ORA-), then changes
it by comparing how Team A actually did
to how they were predicted to do
It changes it only so much as the Kalman weight
(KORA) says it should.
This Kalman weight is found from comparing the variance of
the predicted rating to the variance of ratings from
game to game. In other words, it acknowledges that there is noise
in basketball games
and that there is noise in our predictions
it then gives relative weight
to our prediction and to the score according to the amount
of noise in each of them.
The variance of the offensive rating estimate is updated according to
Var(ORA)+ = (1-KORA)Var(ORA)-
The uncertainty in the estimate decreases with every piece of information.
This equation honors this. It also decreases the uncertainty most when
any game is very certain to produce a "true" result. Of course, there is
no such game that does this, which is why KORA
is usually pretty small.