< Earlier Kibitzing · PAGE 262 OF 262 ·
Later Kibitzing> 
May2315
  al wazir: I had a rush of brains to the head. I wrote a little script that calculates the results of 100 games between two GMs whose rating are initially both 2800, assuming that player A wins every time. For simplicity I used the logistical distribution rather than the normal distribution because I didn't want to mess with those complimentary error functions, but the results are probably qualitatively similar. I printed out their ratings every ten games assuming (1) that the ratings were recalculated after each game and (2) calculating them *cumulatively* over the entire session up to that point. Here's what I found: Step = 0, A rat = 2800.0000, B rat = 2800.0000
Cumulative: A rat = 2800.0000, B rat = 2800.0000
Step = 10, A rat = 2863.9233, B rat = 2703.9233
Cumulative: A rat = 2851.0615, B rat = 2707.0615
Step = 20, A rat = 2897.7769, B rat = 2577.7769
Cumulative: A rat = 2887.4082, B rat = 2583.4082
Step = 30, A rat = 2913.3323, B rat = 2433.3323
Cumulative: A rat = 2904.2969, B rat = 2440.2969
Step = 40, A rat = 2919.9343, B rat = 2279.9343
Cumulative: A rat = 2911.5054, B rat = 2287.5054
Step = 50, A rat = 2922.6340, B rat = 2122.6340
Cumulative: A rat = 2914.4604, B rat = 2130.4604
Step = 60, A rat = 2923.7205, B rat = 1963.7206
Cumulative: A rat = 2915.6509, B rat = 1971.6509
Step = 70, A rat = 2924.1550, B rat = 1804.1550
Cumulative: A rat = 2916.1270, B rat = 1812.1271
Step = 80, A rat = 2924.3284, B rat = 1644.3282
Cumulative: A rat = 2916.3169, B rat = 1652.3170
Step = 90, A rat = 2924.3975, B rat = 1484.3973
Cumulative: A rat = 2916.3928, B rat = 1492.3928
Step = 100, A rat = 2924.4246, B rat = 1324.4248
Cumulative: A rat = 2916.4229, B rat = 1332.4230
I can draw several conclusions:
1) Player A's gain saturates (reaches its limit) at 125 points (116 point if the scores are cumulated). His rating will never rise past 2925 no matter how many games are played. Since the ratings of the players enter into the logistical formula I am using (the one I posted earlier) only as the *difference* between the two numbers, it is easy to see that as long as they start with the same rating this 125point limit will always apply. 2) Though player A's rating saturates quickly, player B keeps sinking toward patzerdom and oblivion. 3) Hence the total number of rating points is *not* conserved; it decreases, and if enough games are played it is going to go on decreasing until the unfortunate loser hits 0 or quits chess altogether. 4) It makes little difference whether the rating is recalculated after every game or cumulatively. 

May2315
  al wazir: I goofed. In my code I used the same "expected value" E for both players, but they should satisfy Ea + Eb = 1. So here are the correct numbers: Step = 0, A rat = 2800.0000, B rat = 2800.0000 Cumulative: A rat = 2800.0000, B rat = 2800.0000 Step = 10, A rat = 2865.6079, B rat = 2734.3921 Cumulative: A rat = 2854.9727, B rat = 2745.0273 Step = 20, A rat = 2908.9470, B rat = 2691.0530 Cumulative: A rat = 2901.6567, B rat = 2698.3433 Step = 30, A rat = 2940.0710, B rat = 2659.9290 Cumulative: A rat = 2934.6650, B rat = 2665.3350 Step = 40, A rat = 2963.9695, B rat = 2636.0305 Cumulative: A rat = 2959.7229, B rat = 2640.2771 Step = 50, A rat = 2983.2185, B rat = 2616.7815 Cumulative: A rat = 2979.7427, B rat = 2620.2573 Step = 60, A rat = 2999.2659, B rat = 2600.7341 Cumulative: A rat = 2996.3340, B rat = 2603.6660 Step = 70, A rat = 3013.8230, B rat = 2586.1770 Cumulative: A rat = 3010.4607, B rat = 2589.5393 Step = 80, A rat = 3028.3689, B rat = 2571.6311 Cumulative: A rat = 3022.7395, B rat = 2577.2605 Step = 90, A rat = 3042.9148, B rat = 2557.0852 Cumulative: A rat = 3033.5850, B rat = 2566.4150 Step = 100, A rat = 3057.4607, B rat = 2542.5393 Cumulative: A rat = 3043.2896, B rat = 2556.7104 If the 400point rule is applied, it would cut in around game 60. And clearly the number of rating points is conserved, i.e., Ra + Rb = 5600 always. 

May2315
  al wazir: One more comment and then I'll quit.
I ran the code for ten million steps (player A beat player B ten million times) with no 400point rule. Here is a summary of the results: Step = 0, A rat = 2800.0000, B rat = 2800.0000 Cumulative: A rat = 2800.0000, B rat = 2800.0000 Step = 100, A rat = 3045.0718, B rat = 2554.9282 Cumulative: A rat = 3043.2896, B rat = 2556.7104 Step = 1000, A rat = 3251.2622, B rat = 2348.7378 Cumulative: A rat = 3251.0859, B rat = 2348.9141 Step = 10000, A rat = 3452.7832, B rat = 2147.2168 Cumulative: A rat = 3462.1563, B rat = 2137.8438 Step = 100000, A rat = 3653.3252, B rat = 1947.0238 Cumulative: A rat = 3462.2500, B rat = 2137.7500 Step = 1000000, A rat = 3833.0151, B rat = 1744.9700 Cumulative: A rat = 3463.0000, B rat = 2137.0000 Step =10000000, A rat = 3833.0151, B rat = 1666.9517 Cumulative: A rat = 3472.0000, B rat = 2128.0000 If you look at the results up to 1,000,000, each multiple of ten (e.g., from 100 to 1,000, from 1,000 to 10,000, etc.) adds about 200 points to A's rating and subtracts 200 from B's. I'm willing to bet  a small bet anyway  that that's correct, although I have no clue why. But if so, it means that the ratings are *logarithmic* functions of the number of games played. However, the last two entries are suspect because the A and B ratings no longer sum to 5600, so there's some kind of roundoff error or fixedpoint overflow. But I'm not going to futz around with it any more tonight. 

May2315
  Tiggler: <al wazir>:<But I'm not going to futz around with it any more tonight.> Please futz around a little more. Try this: the game result is calculated by using =ROUND(RAND()+E0.5,0), where E is expected score based on current rating difference. Or you can use some other formula that returns 1 if a random number on (0,1) is less than E, otherwise 0. If the two players start with equal ratings, then you should find that the ratings diverge from one another almost as fast as in your deterministic test. Note that this is the simulation of two players performing in accordance with current rating, with no draws. 

May2315
  al wazir: I can explain the logarithmic dependence I found numerically. Let D = Ra  Rb, the difference between the two ratings. If D is several times larger than 400, as is true after the number of games n becomes big enough, we can write approximately 1  E = 10^(D/400),
so the increase in D from one step to the next is approximately given by (D'  D)/32 = 10^(D/400).
Look for a solution for the nth iterate D_n in the form D_n = c + d log n,
where log denotes the logarithm to the base 10. Substitution in the previous equation yields (d/32)10^(c/400)log(1 + 1/n) = n^(d/400).
In terms of the natural logarithm ln, for large n,
log(1 + 1/n) = ln(1 + 1/n)/ln 10 = 1/(2.3026 n).
So a solution exists if d = 400 and
10^(c/400) = (32/400)x2.3026 = 0.18421, or c = 293.88. Check: For n = 100,000, 293.88 + 400 log n = 1706.12. The numerical result was 3653.33  1947.02 = 1706.31. TA DA! 

May2315
  Marmot PFL: There actually was a player who played prison matches like your hypothetical match, and raised his rating over 2600. Ridiculous for USCF to allow that. 

May2315
  Marmot PFL: 2702 to be exact
http://en.wikipedia.org/wiki/Claude... 

May2315
  Karposian: <Marmot PFL: Ridiculous for USCF to allow that.> Yes, clearly an abuse of USCF's rating system.
Another example is Russian businessman Vladimir Afromeev. He has organized a bunch of tournaments himself, with the sole purpose of boosting his own rating to a ridiculously inflated level (his current rating is 2646). http://en.wikipedia.org/wiki/Vladim... 

May2315
  perfidious: Then there is a still betterknown player.
Y'all ever hear of Zurab Azmaiparashvili? The game Azmaiparashvili vs Kurajica, 1995, which was annotated in Informator, is from an event fixed by Azmai. http://www.365chess.com/tournaments... 

May2315
  Tiggler: <Karposian> Thanks for that wiki link! On the internet, nobody knows you are Afromeev's cat. http://en.wikipedia.org/wiki/On_the... 

May2315
  Karposian: <Tiggler> You're very welcome! So, I guess when playing chess on the Internet, you really don't know <who> or <what> you're playing against :) 

May2315
  al wazir: <Tiggler: Try this: the game result is calculated by using =ROUND(RAND()+E0.5,0), where E is expected score based on current rating difference. Or you can use some other formula that returns 1 if a random number on (0,1) is less than E, otherwise 0.> E is the expected result from the point of view of A. If E is close to 1 (as it would be if A's rating is much higher than B's), then your algorithm would make a win much likelier than a loss. But if E falls below 0.5 early on, B might have a few wins and get ahead. Once that happens he'll be in the driver's seat. It's pure chance which player will wind up running away. Is that what you want? And what about draws? Don't you want to allow them? 

May2315
  al wazir: <Tiggler>: It doesn't look as if your conjecture was borne out. Here's what I found, using your algorithm: Step = 0, A rat = 2800.0000, B rat = 2800.0000 Cumulative: A rat = 2800.0000, B rat = 2800.0000 Step = 10, A rat = 2812.4998, B rat = 2787.5002 Cumulative: A rat = 2812.4998, B rat = 2787.5002 Step = 100, A rat = 2639.4912, B rat = 2960.5088 Cumulative: A rat = 2639.4912, B rat = 2960.5088 Step = 1000, A rat = 2518.1492, B rat = 3081.8508 Cumulative: A rat = 2518.1492, B rat = 3081.8508 Step = 10000, A rat = 2429.1056, B rat = 3170.8944 Cumulative: A rat = 2429.1056, B rat = 3170.8944 Step = 100000, A rat = 3310.9835, B rat = 2289.0165 Cumulative: A rat = 3310.9835, B rat = 2289.0165 Step = 1000000, A rat = 3355.3547, B rat = 2244.6453 Cumulative: A rat = 3355.3547, B rat = 2244.6453 Step =10000000, A rat = 3775.4923, B rat = 1824.5077 Cumulative: A rat = 3775.4923, B rat = 1824.5077 Here's how I coded it (ran2 is a topflight pseudorandom number generator taken from _Numerical Recipes_): program Elo
! Declare
integer*4 idum, LDO, n, ngames, nprint
real*8 Arat0, Arat, Arat1, Brat0, Brat, Brat1, E, Etot, S, Stot parameter (LDO=16)
data idum, ngames, nprint / 1111111, 10000000, 1 /
data Arat0, Brat0 / 2800.0, 2800.0 /
! Input
OPEN (UNIT=LDO, FILE='OUTPUT', STATUS='UNKNOWN')
Arat = Arat0
Brat = Brat0
Arat1 = Arat0
Brat1 = Brat0
Etot = 0.d0
Stot = 0.d0
do n = 0, ngames
if (mod(n,nprint) .eq. 0) then
write (LDO,1) n, Arat, Brat
write (LDO,2) Arat1, Brat1
nprint= 10*nprint
endif
E = 1.0/(1 + 10.d0**((BratArat)/400.d0))
S = 0.0
if (ran2(idum) .lt. E) S = 1.d0
! if (Arat  Brat .gt. 400.d0) E = 10.d0/11.d0
Arat = Arat + 16.d0*(S  E)
Brat = Brat + 16.d0*(E  S)
E = 1.d0/(1.d0 + 10.d0**((Brat1Arat1)/400.d0))
Etot = Etot + E
Stot = Stot + S
Arat1 = Arat0 + 16.0*(Stot  Etot)
Brat1 = Brat0 + 16.0*(Etot  Stot)
enddo
Arat1 = Arat0 + 16.d0*(float(n)  Etot)
Brat1 = Brat0 + 16.d0*(0.0  Etot)
1 format (// 'Step =', I8, ', A rat = ', f10.4, ', B rat = ', f10.4) 2 format ('Cumulative: A rat = ', f10.4, ', B rat = ', f10.4) end
As you can see, I switched to double precision (64bit arithmetic), which seems to have solved the roundoff problem. But I am a little troubled because the results for the cumulative computation of the ratings are the same as the ratings calculated gamebygame. I don't think they should be *exactly* the same. (They weren't yesterday when I was working in single precision.) 

May2415
  Tiggler: <al wazir: <Tiggler>: It doesn't look as if your conjecture was borne out.> Thanks for trying this. Depends on your interpretation of <almost as fast>, but I think they diverge pretty fast. Point I hoped that you might show is that this is an unstable system and the two ratings fly apart. Same is true if there are 100,000 players, but I did not think that was so obvious until I tried it with a few hundred. No draws makes the simulation easier to code. With draws you need some formula for expected draw percentage, and an extra random number selection. It slows the result down is all. 

May2415
  Tiggler: If you change only this line:
E = 1.0/(1 + 10.d0**((BratArat)/400.d0))
to E = 1.0/(1 + 10.d0**(0.98*(BratArat)/400.d0))
then the higher rank player does not quite perform up to rating, and the lower ranker player does a bit better. The system does not diverge. It's OhnsteinUhlenbeck, in the jargon:
http://en.wikipedia.org/wiki/Ornste... 

May2415
  al wazir: <Tiggler: If you change only this line [...] The system does not diverge.> So you think there's something magical about 400? Changing it to 408.16 changes everything? 

May2415
  Tiggler: <al wazir> No. I said <only this line>. That is the line that is used to generate the game results. There is another line, which you don't change, that generates the new rating. It is the small mismatch between these that changes everything, and makes the process meanreverting. I give credit to <user: gypsy> for putting me onto this idea a couple of years ago. 

May2515
  al wazir: <Tiggler: That is the line that is used to generate the game results. There is another line, which you don't change, that generates the new rating.> Sorry, I can't believe you mean that. The line you identified is the only line that assigns a value to E. The line that "generates the new rating" uses the *same* value of E. What I think you want is to use the new value of E in the criterion for who wins and the old value in the formula for the new ratings. But on the hypothesis that you did mean what you wrote, I made that change and only that change (I even used the same seed for the RNG.) Here are the results: Step = 0, A rat = 2800.0000, B rat = 2800.0000 Cumulative: A rat = 2800.0000, B rat = 2800.0000 Step = 10, A rat = 2812.5601, B rat = 2787.4399 Cumulative: A rat = 2812.4998, B rat = 2787.5002 Step = 100, A rat = 2637.2155, B rat = 2962.7845 Cumulative: A rat = 2639.4912, B rat = 2960.5088 Step = 1000, A rat = 2519.4177, B rat = 3080.5823 Cumulative: A rat = 2524.3533, B rat = 3075.6467 Step = 10000, A rat = 2421.9912, B rat = 3178.0088 Cumulative: A rat = 2428.9835, B rat = 3171.0165 Step = 100000, A rat = 3321.3925, B rat = 2278.6075 Cumulative: A rat = 3310.9835, B rat = 2289.0165 Step = 1000000, A rat = 3366.2763, B rat = 2233.7237 Cumulative: A rat = 3355.3547, B rat = 2244.6453 Step =10000000, A rat = 3795.3910, B rat = 1804.6090 Cumulative: A rat = 3775.4911, B rat = 1824.5089 (Note that the "cumulative" calculation reproduces the previous results.) I don't see any qualitative difference, and only a minor quantitative one. 

May2515
  Tiggler: <What I think you want is to use the new value of E in the criterion for who wins and the old value in the formula for the new ratings.> Yes, that is what I intended. I misparsed your code. 

May2515
  al wazir: <Tiggler: Yes, that is what I intended.> Results:
Step = 0, A rat = 2800.0000, B rat = 2800.0000 Step = 10, A rat = 2812.4998, B rat = 2787.5002 Step = 100, A rat = 2651.9983, B rat = 2948.0017 Step = 1000, A rat = 2524.4485, B rat = 3075.5515 Step = 10000, A rat = 2438.5278, B rat = 3161.4722 Step = 100000, A rat = 2516.2811, B rat = 3083.7189 Step = 1000000, A rat = 2264.3728, B rat = 3335.6272 Step =10000000, A rat = 2069.8705, B rat = 3530.1295 

May2515
  al wazir: <Tiggler>: The last two entries differ by roughly 200 points, so I assumed that the trend had reached its asymptotic, logarithmic stage. But then I thought, one sparrow doesn't make a summer. Let's run it out further, to one trillion games: Step = 10000000, A rat = 2069.8705, B rat = 3530.1295 Step = 100000000, A rat = 2690.8915, B rat = 2909.1085 Step =1000000000, A rat = 2355.8142, B rat = 3244.1858 Evidently the behavior is *not* logarithmic. It looks as if you're right. 

May2515   diceman: <John F. Nash Jr., Math Genius Defined by a ‘Beautiful Mind,’ Dies at 86 John F. Nash Jr., a mathematician who shared a Nobel Prize in 1994 for work that greatly extended the reach and power of modern economic theory and whose long descent into severe mental illness and eventual recovery were the subject of a book and a film, both titled “A Beautiful Mind,” was killed, along with his wife, in a car crash on Saturday in New Jersey. He was 86.
Dr. Nash and his wife, Alicia, 82, were in a taxi on the New Jersey Turnpike in Monroe Township around 4:30 p.m. when the driver lost control while veering from the left lane to the right and hit a guardrail and another car, Sgt. Gregory Williams of the New Jersey State Police said.> 

May2515
  Tiggler: <al wazir> I appreciate your patience and persistence in trying this out. I expected the two values to exhibit some random walks in the vicinity of the mean and was surprised that the amplitude of those is so large. The number 0.98, of course, is an adjustable parameter: the smaller it is, the stronger is the mean reversion. I chose 0.98 because in my old simulation of 200 players that was the value that caused the standard deviation of the population rating distribution to converge to about 270, close to the actual one for FIDE ratings. 

May2615
  al wazir: That "trillion" should be a billion, of course. It took about five minutes to run on my desktop. If I had actually run a trillion steps (games), it would have taken half a week. 

May2615   TheFocus: Well, I see no one showed up for the first day of ninja school. Or did they? 


< Earlier Kibitzing · PAGE 262 OF 262 ·
Later Kibitzing> 


