I have a question about the rating/rank system. What I want is simpler than what I’ve seen around, but I think it can only be answered by people who have studied the system with all its math, I’m not sure though.
Someday I’ll do all the geek work and try to understand exactly how the main formula works (Glicko-2, right?). But before that, I just want to know: what are the variables inside the funcion Rating = f(…)? Actually ΔRating = f(…), right (it calculates how much you gain/lose after each game)? And also, does the function that transforms rating into rank introduce any new variables or is it just a numeric/scale adjustment?
At first glance, if I had to design a rank system for this game, these are the first things that come to my mind: ΔRating = f(result of the game, rankyours - rankopponent, stone color (who plays first), komi value, handcap stones, difference of points if the game ends with pass/pass, how the game was won/lost (resignation, disconnection, timeout, server decision, pass/pass), …). Thanks for any information!
How the game ends isn’t considered, all that matters is win/lose/draw. Handicap is of course considered when comparing player rating.
Rating rank conversion is simple. No variables, just a direct arithmetic function to switch from one expression to the other.
const MIN_RATING = 100;
const MAX_RATING = 6000;
const A = 525;
const C = 23.15;
/** Returns the Glicko2 rating corresponding to OGS rank. */
export function rank_to_rating(rank: number): number {
return A * Math.exp(rank / C);
}
/** Returns the OGS rank corresponding to the Glicko2 rating */
export function rating_to_rank(rating: number): number {
return Math.log(Math.min(MAX_RATING, Math.max(MIN_RATING, rating)) / A) * C;
}
Edit: worth noting that in this formula, rank starts as 0 at 30k and counts up to avoid dealing with negatives, so
25k = 5
10k = 20
1d = 30
9d = 38
Thanks for the thorough explanation! There’s some information that I don’t have or I might have gotten some terminology wrong. For example, in my current status my rank is 23.9k and my rating is 684, is that correct to say? As I’m checking here some numbers with the formula provided, clearly these are not the numbers I should provide as “rank” and/or “rating” (I imagined a function where the independent variable is 23.9 and the result would be 684 and the inverse). There are two things being called “rank” and I don’t understand what the one without the “k” or “d” means. My 684 rating equals to 6.1 according to the formula.
And about the first issue, so only the first two things I listed count? The result of the game and the rating difference of the players (and the related handicap stones applied)? Doesn’t it sound unfair that a player receive the same amount of points if he wins by disconnection in the end of the game when the opponent would clearly win and when the game goes until the end and he wins by B+30 for example? At least the point difference seems like a very important variable to me.
I explained that at the end of my post. You can see there that 30 - 6.1 = 23.9 so it works out.
Glicko-2 distinguishes itself from ELO by also having a confidence value that represents how sure the system is about your rating, but I am not well read enough on its operation to go into detail. I believe others on the forum have dug deeper into the math of it.
Ideally in this circumstance the game would be reported and annulled if that’s appropriate.
I’m saying that distinguishing disconnection from timeout. If someone timesout while winning then it’s entirely fair for them to lose rating as time management is part of the game when played seriously/rated.
I think there must be other threads where this is discussed. The point different hold very little information about relative player skill. A game where you need to maximise score is different from regular go.
Once you are winning then you can play cautiously and defensively as there’s no need to gain further points. You might even give up some points to be sure of securing the win. Alternatively you might continue to play aggressively and lose a big group so that your opponent wins by a large points margin but without that being any reflection of their skill.
TL:DR points are not in fact very correlated to player strength
If you want the implementation breakdown probably just refer the original post by Anoek. It had some updates over the years, but the idea and parameters basically remain the same (mostly just variables tuned to different values). The most important parameters and variables are as followed.
Oh, I forgot about the possibility of reporting, which can address some issues.
But I’m not saying that these variables should have an equal weight or on the other hand, be completely ignored, but rather be considered. A lower rank as a consequence of time management is fine, but I do wonder if all different ways of losing should result in the same amount of rating lost. But what is important are the variables correlated to player strength as you said, and my intuition could probably be wrong, as in your example with the variable “point difference”. I just think that seeing yourself climbing in a well designed rating system is part of motivation, so I occasionally give it some light thought
Actually I found out my question is answered in the tool “Rating Calculator”. If you can predict the rating change providing these variables, then ΔRating = f(ratingA, ratingB, deviationA, deviationB, volatilityA, volatilityB, handicap, winner)
I think the pros ranks aren’t based on a rating conversion, the highest rank you can earn is 9d and the pro ranks are awarded as we become aware of nationally recognised pros officially owning an account.
IIRC, they just continue up somewhat naturally
1p being 39 amd 9p being 47, but it could be slightly different to that
There are user variables (data from users), and there are system variables/parameters (initial rating, initial deviations, frequency of update, and number of games per update, etc.) and conversion parameters to match up with survey data.
This fixing of pro ranks in the 39 - 47 range means that the rating conversion formula won’t hold for OGS ranks above 38. That range is basically non-competitive.
In general, the strength of weaker pros overlaps with top amateurs. I think top amateurs would currently rank in the 37 - 38 range (i.e. 8d - 9d) on OGS. That would be my guess also for a 3p who has plateaud at that rank.
The proper handicap for weaker pros against top pros is about 2 stones, so if top pros would play on OGS without declaring their pro rank (fixing their OGS rank in the non-competitive pro range), and if OGS would not cap competitive ratings at 9d, I expect the world’s strongest pros would reach competitive ratings of 10d - 11d on OGS.
I do wonder whether OGS players with a pro rank always play unranked, or if their ratings are actually maintained but hidden. In the EGF rating system, ratings of pros are updated and visible.
Sorry, I didn’t get what you mean. If you can calculate what will be the rating after a game providing those variables I mentioned, present in the rating calculator, those are the only ones needed. Am I missing something?
The system needs to start from somewhere and decide when to update the rating, and how many games are required to get an “update”, setting these parameters differently you will get different “output” for the next interaction, even if the input is the same.
I always thought there is an update after every game played, isn’t that the case (lately I’m checking the rank after every game and it changes)? And If I recall correctly the initial rating when you make an account is 1500, but I’m not being able to find the documentation now. So again, isn’t that all that is necessary?
This is the document of the algorithm http://www.glicko.net/glicko/glicko2.pdf
It’s an interactive algorithm where each round would calculate a target value, and periodically calculate the next settings. The current OGS system let users to choose their starting ranks, so they have to be individually tuned accordingly.