next up previous
Next: About this document ...

Example of the Glicko-2 system


Professor Mark E. Glickman
Boston University

Every player in the Glicko-2 system has a rating, $r$, a rating deviation, $\mbox{RD}$, and a rating volatility $\sigma$. The volatility measure indicates the degree of expected fluctuation in a player's rating. The volatility measure is high when a player has erratic performances (e.g., when the player has had exceptionally strong results after a period of stability), and the volatility measure is low when the player performs at a consistent level. As with the original Glicko system, it is usually informative to summarize a player's strength in the form of an interval (rather than merely report a rating). One way to do this is to report a 95% confidence interval. The lowest value in the interval is the player's rating minus twice the RD, and the highest value is the player's rating plus twice the RD. So, for example, if a player's rating is 1850 and the RD is 50, the interval would go from 1750 to 1950. We would then say that we're 95% confident that the player's actual strength is between 1750 and 1950. When a player has a low RD, the interval would be narrow, so that we would be 95% confident about a player's strength being in a small interval of values. The volatility measure does not appear in the calculation of this interval.

The formulas:

To apply the rating algorithm, we treat a collection of games within a ``rating period'' to have occurred simultaneously. Players would have ratings, RD's, and volatilities at the beginning of the rating period, game outcomes would be observed, and then updated ratings, RD's and volatilities would be computed at the end of the rating period (which would then be used as the pre-period information for the subsequent rating period). The Glicko-2 system works best when the number of games in a rating period is moderate to large, say an average of at least 10-15 games per player in a rating period. The length of time for a rating period is at the discretion of the administrator.

The rating scale for Glicko-2 is different from that of the original Glicko system. However, it is easy to go back and forth between the two scales. The following steps assume that ratings are on the original Glicko scale, but the formulas convert to the Glicko-2 scale, and then convert back at the end to Glicko.

Step 1.
Determine a rating and RD for each player at the onset of the rating period. The system constant, $\tau$, which constrains the change in volatility over time, needs to be set prior to application of the system. Reasonable choices are between 0.3 and 1.2, though the system should be tested to decide which value results in greatest predictive accuracy.
(a)
If the player is unrated, set the rating to 1500 and the RD to 350. Set the player's volatility to 0.06 (this value depends on the particular application).
(b)
Otherwise, use the player's most recent rating, RD, and volatility $\sigma$.
Step 2.
For each player, convert the ratings and RD's onto the Glicko-2 scale:

\begin{eqnarray*}
\mu &=& (r-1500)/173.7178 \\
\phi &=& \mbox{RD}/173.7178
\end{eqnarray*}



The value of $\sigma$, the volatility, does not change.

We now want to update the rating of a player with (Glicko-2) rating $\mu$, rating deviation $\phi$, and volatility $\sigma$. He plays against $m$ opponents with ratings $\mu_1,\ldots,\mu_m$, rating deviations $\phi_1,\ldots,\phi_m$. Let $s_1,\ldots,s_m$ be the scores against each opponent (0 for a loss, 1 for a win). The opponents' volatilities are not relevant in the calculations.

Step 3.
Compute the quantity $v$. This is the estimated variance of the team's/player's rating based only on game outcomes.

\begin{displaymath}
v =
\left[
\sum_{j=1}^m g(\phi_j)^2 \mbox{E}(\mu, \mu_j, \phi_j)
\{1 - \mbox{E}(\mu, \mu_j, \phi_j)\} \right] ^{-1}
\end{displaymath}

where

\begin{eqnarray*}
g(\phi) &=& \frac{1}{\sqrt{1 + 3\phi^2/\pi^2}}, \\
\mbox{E}(\mu, \mu_j, \phi_j) &=&
\frac{1}{1 + \exp(-g(\phi_j)(\mu-\mu_j))}.
\end{eqnarray*}



Step 4.
Compute the quantity $\Delta$, the estimated improvement in rating by comparing the pre-period rating to the performance rating based only on game outcomes.

\begin{displaymath}
\Delta = v \sum_{j=1}^m g(\phi_j) \{ s_j - \mbox{E}(\mu,\mu_j,\phi_j) \}
\end{displaymath}

with $g()$ and $\mbox{E}()$ defined above.
Step 5.
Determine the new value, $\sigma'$, of the volatility. This computation requires iteration:

  1. Let $a = \ln(\sigma^2)$. Set $x_0 \leftarrow a$, and $i=1$.
  2. Repeat until $x_i$ and $x_{i-1}$ are close:

    \begin{eqnarray*}
d &=& \phi^2 + v + e^{x_{i-1}} \\
h_1 &=& -(x_{i-1} - a)/\tau...
...^3 \\
x_i &\leftarrow& x_{i-1} - h_1/h_2 \\
i &\leftarrow& i+1
\end{eqnarray*}



Once converged, set

\begin{displaymath}
\sigma' \leftarrow e^{x_i/2}
\end{displaymath}

Step 6.
Update the rating deviation to the new pre-rating period value, $\phi^*$:

\begin{displaymath}
\phi^* = \sqrt{\phi^2 + \sigma'^2}
\end{displaymath}

Step 7.
Update the rating and RD to the new values, $\mu'$ and $\phi'$:

\begin{eqnarray*}
\phi' &=& 1/\sqrt{\frac{1}{\phi^{*2}} + \frac{1}{v}}\\
\mu' &...
...sum_{j=1}^m g(\phi_j)
\{ s_j - \mbox{E}(\mu, \mu_j, \phi_j) \}
\end{eqnarray*}



Step 8.
Convert ratings and RD's back to original scale:

\begin{eqnarray*}
r' &=& 173.7178\mu' + 1500 \\
\mbox{RD}' &=& 173.7178\phi'
\end{eqnarray*}



Note that if a player does not compete during the rating period, then only Step 6 applies. In this case, the player's rating and volatility parameters remain the same, but the RD increases according to

\begin{displaymath}
\phi' = \phi^* = \sqrt{\phi^2 + \sigma^2}.
\end{displaymath}

Example calculation:

Suppose a player rated 1500 competes against players rated 1400, 1550 and 1700, winning the first game and losing the next two. Assume the 1500-rated player's rating deviation is 200, and his opponents' are 30, 100 and 300, respectively. Assume the 1500 player has volatility $\sigma=0.06$, and the system constant $\tau$ is 0.5.

Converting to the Glicko-2 scale, the player's rating and RD become 0 and 1.1513. For the opponents:



$j$ $\mu_j$ $\phi_j$ $g(\phi_j)$ $\mbox{E}(\mu, \mu_j, \phi_j)$ $s_j$
1 $-0.5756$ 0.1727 0.9955 0.639 1
2 0.2878 0.5756 0.9531 0.432 0
3 1.1513 1.7269 0.7242 0.303 0

We then compute

\begin{eqnarray*}
v &=& \left(
[(0.9955)^2 (0.639)(1-0.639) \right. \\
&& \left...
...0.432) + (0.7242)^2(0.303)(1-0.303)]
\right)^{-1} \\
&=& 1.7785
\end{eqnarray*}



And now

\begin{eqnarray*}
\Delta &=& 1.7785 \left(
0.9955 ( 1 - 0.639 ) +
0.9531 ( 0 - 0.432 ) +
0.7242 ( 0 - 0.303 ) \right) \\
&=& -0.4834
\end{eqnarray*}



For the iterative procedure to determine $\sigma'$, we set $x_0 = \ln(\sigma^2) = \ln(0.06^2) = -5.626821$ and have $a = -5.626821$. Performing the calculations iteratively, we obtain

\begin{eqnarray*}
x_1 &=& -5.626957 \\
x_2 &=& -5.626957
\end{eqnarray*}



and further iteration does not change the result. This procedure will generally converge very quickly. Set $\sigma' = e^{-5.626957/2} = 0.05999$.

Now update to the new value of $\phi^*$:

\begin{displaymath}
\phi^* = \sqrt{1.1513^2 + 0.05999^2} = 1.152862.
\end{displaymath}

Next, update to the new values of $\phi'$ and $\mu'$:

\begin{eqnarray*}
\phi' &=& 1/\sqrt{
\frac{1}{1/1.1529^2 + 1/1.7785}
} = 0.87...
... \\
&& + 0.7242(0-0.303)] \\
&=& 0 + 0.7607(-0.272) = -0.2069
\end{eqnarray*}



Finally, convert back to the Glicko scale:

\begin{eqnarray*}
r' &=& -0.2069(173.7178) + 1500 = 1464.06 \\
\mbox{RD}' &=& 0.8722(173.7178) = 151.52
\end{eqnarray*}



The new volatility $\sigma' = 0.05999$.

Note that the resulting rating for this computation does not differ much from the original Glicko computation because the game outcomes do not provide any evidence of inconsistent performance.



next up previous
Next: About this document ...
Mark Glickman
2001-12-29