Forums

Glicko Ratings - Winning Expectancy (Rating/Maths/Stats geeks - please help!)

Sort:
ImmolationFox

Hi,

I'm trying to use Glicko ratings to calculate the winning expectancy of a match (which I think is, approximately, the probability that a player will win)

http://www.chess.com/forum/view/general/chess-ratings---glicko-vs-elo?page=2

I'm trying to validate my results - in particular, although the values I'm getting give the player with the higher rating the greater probability of winning, I am surprised that quite large differences in RD seem to have a pretty small impact on the probabilities.

I'm not sure if I am doing the calculation wrong, or if my intuition about the results is wrong.

Examples:

 

r1 s1 r2 s2 e
1200 10 1300 10 36.01%
1200 100 1300 10 36.62%
1200 500 1300 10 42.39%
1200 10 1300 100 36.62%
1200 100 1300 100 37.16%
1200 500 1300 100 42.49%
1200 10 1300 500 42.39%
1200 100 1300 500 42.49%
1200 500 1300 500 44.17%

 It seems to me that, if the difference in ratings is 100 (r2-r1), changing the RD of the players (s1, s2) from 10 to 100 should have a pretty large effect on the winning expectancy, but as you can see I'm only getting a change of around 1%.

Although there are a few papers around, I'm struggling to find any that have examples of this particular calculation which would give me some examples that I could validate against.  (Lots of places give examples of the ratings update calculation, but that's not quite what I am doing.)

So if anyone has any example numbers, or if you have a deeper understanding of Glicko than me and can say "Yep, these numbers are right, your intuition about Glicko is just wrong" that would be really useful.

For reference, here's my code:

var glicko_p = (3*Math.pow((Math.LN10),2))/((Math.pow(Math.PI,2))*(Math.pow(400,2)));

function glicko_f(rd) {
  return 1/Math.sqrt(1 + glicko_p*(Math.pow(rd,2)));
}

function glicko_e(r1, s1, r2, s2) {
  return 1/(1 + Math.pow(10,(-(r1-r2)*glicko_f(Math.sqrt(Math.pow(s1,2) + Math.pow(s2,2)))/400)) );
}

 

 



Sred

tubebender, one can be interested in this rating system even without playing chess. What makes you think that the OP cares about his ratings?

ImmolationFox

tubebender: Perhaps you should focus on your game rather than looking for opportunities to hand out patronising, unsolicited advice.

I am working on my game, I'm extremely pleased with my progress since I started playing a year ago.

But I happen to have an interest in coding and maths as well.  I like exploring systems, and I was curious as to whether I could translate the numbers into something that has more concrete meaning to me.  That doesn't make me hung up on ratings.

awesomechess1729

Your code appears to be Javascript- am I correct on that? The code seems simple- I don't know much about how the Glicko rating works, but I don't see what you code has to do with a rating system. If you could be more specific on how you derived this algorithm, I would be happy to help.

ImmolationFox

Yes, it's JavaScript.  It's hard to be more specific.  The code implements the expected outcome of a chess match, given the plays ratings and RD.  I believe it's a fairly direct implementation of the equations given by Glicko (and linked in the message above) specifically for this purpose.  I'm not sure how much more detailed I can be than that.  I've tried to take the equations from the paper, implement them in JavaScript.  I can't spot any mistakes in my algorithm, but the numbers look fishy to me.

I appreciate your reply, but I guess, if you don't know about Glicko it's hard to see how you can help.  I suspect someone who knows Glicko would be able to say, either "The number's aren't fishy, your intuition is just wrong", or the opposite.  Or they might have an implementation of this they can validate against mine.

EscherehcsE

I haven't paid attention to the ratings formulas here before. It seems threads/discussions are spread out (no centralized FAQ discussing the formula here, except for the pinned thread "Chess rating system" in the General forum, where Erik links to Glickman's outdated Glicko pages).

Does anyone know whether Chess.com uses Glicko or Glicko-2?

OBIT

The fact that you are using Glicko doesn't change anything.  It's the same bell curve.  You need to know how chess ratings fit into a normal probability curve, but here is a basic walk-through:

First, you need to know that the standard deviation for chess ratings is 200 * √2, or approximately 283. Now you need a table for Normal Distribution (google "normal distribution table" and you will find a bunch of them), and the rest is basic math:

  • A 10 point rating difference translates to 10/283 = .035 standard deviations.  Find that value in the probability table, and the higher rated player should score 51.4%. 
  • A 100 point rating difference translates to 100/283 = .35 standard deviations. Find that value in the probability table, and the higher rated player should score 63.7%.
  • A 500 point rating difference translates to 500/283 = 1.767 standard deviations. Find that value in the probability table, and the higher rated player should score 96.1%.  

Finally, I like seeing students (I'm assuming you're a student) take an interest in this MATH question.  Of course, knowing how the rating system works won't help your chess game, but there is nothing wrong with knowing something just for the sake of knowing something.  As for fixing your code, sorry - for that you're on your own! 

ImmolationFox

Sorry this is long after the fact, but thanks for this OBIT, it's just what I was looking for.

(I'm a bit old to be considered a student, but hopefully I'll always continue learning.  ;) )

JubilationTCornpone
OBIT wrote:

The fact that you are using Glicko doesn't change anything.  It's the same bell curve.  You need to know how chess ratings fit into a normal probability curve, but here is a basic walk-through:

First, you need to know that the standard deviation for chess ratings is 200 * √2, or approximately 283. Now you need a table for Normal Distribution (google "normal distribution table" and you will find a bunch of them), and the rest is basic math:

  • A 10 point rating difference translates to 10/283 = .035 standard deviations.  Find that value in the probability table, and the higher rated player should score 51.4%. 
  • A 100 point rating difference translates to 100/283 = .35 standard deviations. Find that value in the probability table, and the higher rated player should score 63.7%.
  • A 500 point rating difference translates to 500/283 = 1.767 standard deviations. Find that value in the probability table, and the higher rated player should score 96.1%.  

Finally, I like seeing students (I'm assuming you're a student) take an interest in this MATH question.  Of course, knowing how the rating system works won't help your chess game, but there is nothing wrong with knowing something just for the sake of knowing something.  As for fixing your code, sorry - for that you're on your own! 

I'm going to necro this because it seems to be exactly what I'm looking for.  Maybe some algorithmically proficient folks can help.

I've often heard that a 200 point rating difference should translate to a 75% score for the higher rated player.  I've rarely seen math as detailed as what OBIT says here, in terms of standard deviations being 200 * √2, or the implications of that being the ones he lists, but these seem at least approximately in line with the idea that 200 points would around 75% (actually, 200/283 is .706 if you calculate it, which is right at .75 z-score if i did it right).

Now, this seems very far from my own experience.  I find 100 points to be much more predictive than this, whether I'm the stronger or weaker player.  At least it feels that way.  One thing I speculate is that the numbers I've heard, and possibly the ones mentioned by OBIT, are for elo rather than glicko systems.

So, checking my own data, for the whole last year, the lowest rated player to beat me was 1247, and the highest rated player that I beat was 1614.  My score against players under 1250 is 11/13 and my score against players over 1550 is 2/14.

This is much more in line with my intuition, and suggests even a 150 point difference implies something close to an 85% win rate.

I have avoided using data prior to this year both because of my own rating increase, and also because I am unsure how moving 10-minute games from blitz to rapid affects earlier data.  It's 914 games, which should be more than enough for significance.

So, is my analysis wrong?  Is my data unusual?

Sorry, quick corrective edit...