If you have a player's rating, his opponents' ratings and his score, how does one calculate his performance?
http://www.chessbase.com/newsdetail.asp?newsid=4326 gives the equation for the expected winning percentage as
from which one can work backwards. But I'm a bit stuck on the maths
Any pointers appreciated!
Thanks
James
Formula for calculating ELO performance
Moderators: hgm, Rebel, chrisw
-
- Posts: 358
- Joined: Wed Mar 08, 2006 8:36 pm
- Location: UK
-
- Posts: 2056
- Joined: Mon Mar 13, 2006 2:31 am
- Location: North Carolina, USA
Re: Formula for calculating ELO performance
The performance estimate is much simpler; if you really mean performance.
perforamce = ((NumWins * (opp rating + 400) + NumDraws * (opp rating) + NumLosses * (opp rating - 400)) / Num Games
perforamce = ((NumWins * (opp rating + 400) + NumDraws * (opp rating) + NumLosses * (opp rating - 400)) / Num Games
-
- Posts: 358
- Joined: Wed Mar 08, 2006 8:36 pm
- Location: UK
Re: Formula for calculating ELO performance
Hi Charles
I've seen your equation before, but I'm not sure whether or how it relates to the ELO maths. For instance it is mentioned on http://www.chesselo.com/chess_elo_two.html
I suspect I need to remove the integral sign from the first equation, so I'm just researching how to the maths...
regards
I've seen your equation before, but I'm not sure whether or how it relates to the ELO maths. For instance it is mentioned on http://www.chesselo.com/chess_elo_two.html
With this equation, the max performance would be the average of the opponents' elos + 400. It doesn't seem to tie in with the FIDE tables http://www.fide.com/info/handbook?id=75&view=article.Calculating Performance Rating
Performance Rating = Opponents' Average + Performance Change
Performance Change is based on the Performance Ratio. If a player scored 9 in 9 games, his or her Performance Ratio is 1.00 and Performance Change + 677. If he scores 4.5 in 9 games, it is correspondingly 0.50 and Performance Change will be 0. The needed value is taken from the Table of Performance Change.
Please notice that your Performance Rating does not depend on your own rating but does depend on your Opponents' Average and "how you performed" (Performance Change). Performance Rating is very important for getting the Grandmaster and International Master Norms.
In some Chess Organizations, the Performance Rating is calculated with "the algorithm of 400": If you win, add 400 to the opponent's rating; if lose, subtract 400, if you make a draw, no change. Then find the average.
I suspect I need to remove the integral sign from the first equation, so I'm just researching how to the maths...
regards
-
- Posts: 438
- Joined: Mon Apr 24, 2006 8:06 pm
Re: Formula for calculating ELO performance
This is the old traditional Elo formula, based on the Gaussian distribution. Most modern rating systems use another formula that is simpler to inverse:James Constance wrote:
http://en.wikipedia.org/wiki/Elo_rating_system
(see section "mathematical details").
Rémi
-
- Posts: 438
- Joined: Mon Apr 24, 2006 8:06 pm
Re: Formula for calculating ELO performance
I have no idea how the FIDE made their table. I could not find a way to replicate it. If I am not mistaken, the R code for computing rating as a function of winning rate should be,James Constance wrote:
With this equation, the max performance would be the average of the opponents' elos + 400. It doesn't seem to tie in with the FIDE tables http://www.fide.com/info/handbook?id=75&view=article.
I suspect I need to remove the integral sign from the first equation, so I'm just researching how to the maths...
regards
for the Gaussian case (the formula on the chessbase site):
Code: Select all
> qnorm(0.99)*200*sqrt(2)
[1] 657.9905
> qnorm(0.95)*200*sqrt(2)
[1] 465.2349
> qnorm(0.70)*200*sqrt(2)
[1] 148.3229
Code: Select all
> -400*log(1/0.99-1)/log(10)
[1] 798.254
> -400*log(1/0.95-1)/log(10)
[1] 511.5014
> -400*log(1/0.70-1)/log(10)
[1] 147.1907
Re: Formula for calculating ELO performance
When I played chess (in France) the approximation was likeCRoberson wrote:The performance estimate is much simpler; if you really mean performance.
perforamce = ((NumWins * (opp rating + 400) + NumDraws * (opp rating) + NumLosses * (opp rating - 400)) / Num Games
perf = opp rating + (score-0.5) * 750
Also winning against a low ranked opponent was not counting.
HJ.
-
- Posts: 4567
- Joined: Sun Mar 12, 2006 2:40 am
- Full name:
Re: Formula for calculating ELO performance
Well, it probably will remain a bit of a mystery how exactly this table came to be, exactly how Prof. Elo arrived at these numbers, but it is satisfying to see that at FIDE headquarters they decided to at least use Prof. Elo's original table again instead of interpolated ratings.Rémi Coulom wrote:James Constance wrote:
With this equation, the max performance would be the average of the opponents' elos + 400. It doesn't seem to tie in with the FIDE tables http://www.fide.com/info/handbook?id=75&view=article.
I suspect I need to remove the integral sign from the first equation, so I'm just researching how to the maths...
regards
I have no idea how the FIDE made their table. I could not find a way to replicate it.
The table at the link is I believe identical with the one given in "The Rating of Chessplayers, Past & Present" and we solved the mystery of FIDE's numbers here in the CCC as interpolations of Prof. Elo's original table:
http://www.stmintz.com/ccc/index.php?id=423250
Code: Select all
On April 27, 2005 at 16:37:24, Dieter Buerssner wrote:
>On April 27, 2005 at 15:16:00, Dieter Buerssner wrote:
>
>> [...] I don't have erf() with me [...]
>
>I even have it. I am surprised - the MinGW environment does support it (it is
>also part of the C99 Standard). So, if you have it too, you could change one
>line:
>
>> printf("%d %.6f %.6f\n", d, expected_score(d), 1.0/(1.0+pow(10.0,
>
>to
>
>printf("%d %.6f %.6f %.6f\n", d, expected_score(d),
> 1.0/(1.0+pow(10.0, -d/400.0)), 0.5+0.5*erf(d/400.));
>
>It reproduces exactly the number I had given in the comment to the source (and
>still shows, that none of the formula is able to reproduce the mumbers from
>FIDE).
>
>Regards,
>Dieter
Hi Dieter,
I sure wish I could follow all your C code, but I never did Study C seriously.
Are there any good compilers that are not expensive and work under Windows?
I think I can guess where FIDE got its numbers, I suspect they are mainly
interpolations of the original table in Arpad E. Elo's 'The Rating of
Chessplayers, Past & Present' (Batsford Books, 1978). Prof. Elo gave the
following table:
D P D P D P
Rtg.Dif. H L Rtg.Dif. H L Rtg.Dif. H L
0-3 .50 .50 122-129 .67 .33 279-290 .84 .16
4-10 .51 .49 130-137 .68 .32 291-302 .85 .15
11-17 .52 .48 138-145 .69 .31 303-315 .86 .14
18-25 .53 .47 146-153 .70 .30 316-328 .87 .13
26-32 .54 .46 154-162 .71 .29 329-344 .88 .12
33-39 .55 .45 163-170 .72 .28 345-357 .89 .11
40-46 .56 .44 171-179 .73 .27 358-374 .90 .10
47-53 .57 .43 180-188 .74 .26 375-391 .91 .09
54-61 .58 .42 189-197 .75 .25 392-411 .92 .08
62-68 .59 .41 198-206 .76 .24 412-432 .93 .07
69-76 .60 .40 207-215 .77 .23 433-456 .94 .06
77-83 .61 .39 216-225 .78 .22 457-484 .95 .05
84-91 .62 .38 226-235 .79 .21 485-517 .96 .04
92-98 .63 .37 236-245 .80 .20 518-559 .97 .03
99-106 .64 .36 246-256 .81 .19 560-619 .98 .02
107-113 .65 .35 257-267 .82 .18 620-735 .99 .01
114-121 .66 .34 268-278 .83 .17 over735 1.00 .00
I think at FIDE headquarters, they wanted "exact" elo-numbers so at one point
they just linearly interpolated the elo-numbers given at each percentage-point
arriving at their own table. So i'm not surprised any efforts to reproduce that
with a formula will not give the exact numbers back... I wish I could blame this
gross oversimplification on Mr. Campomanes or the even greater crook Mr.
Ilyumzhinov but I'm afraid this dates back to even longer ago...
Regards, Eelco
To James, about differentiating that magnificent formula: the area under the integral from the original elo-system can only be solved with numerical methods but I think it is a great exercise to write a program for it, some Pascal code I made with the help of Odd Gunnar Malin based on a CASIO FX-501P calculator program can be found in the thread connected to above post.
Code: Select all
On April 16, 2005 at 09:32:14, Eelco de Groot wrote:
> Hi Anson
>
>For a first order approximation, I always use 2812 - (50%-45%)*7 =2777, which is
>increasingly inaccurate with greater score-difference. Precise formula involves
>calculating an integral, which you can do numerically.
>
>I once wrote a little program for this for a Casio calculator, but that will not
>help you much I'm afraid without an explanation. It took the first order
>approximation and went from there. But it is not hard to do if you have the
>formula from professor Elo, Excel can do it too, easily. I don't have the
>formula at hand right now. But it is a nice programming excercise!
>
> Eelco
To my knowledge USCF uses Rp = Rc + 400(W-L)/N which I have in a Excel
spreedsheet. But it's not that hard to use pen and paper either.
Tony
>
>
>On April 15, 2005 at 17:58:30, Anson T J wrote:
>
>>Does anyone know the accurate formula to work out ELO performance based on an
>>estimated elo for a player and the % success?
>>
>>For example if Hydra played against Kasparov (2812) and scored 45%, what how
>>would we work out Hydra's elo performance in this match?
>>
>>I remember somebody posted a very accurate formula using logs, if they could
>>point me to the post or write the formula again in here I would greatly
>>appreciate it.
>>
>>Many thanks.
Eelco
-
- Posts: 27808
- Joined: Fri Mar 10, 2006 10:06 am
- Location: Amsterdam
- Full name: H G Muller
Re: Formula for calculating ELO performance
The funny thing is that, in practice, these complicated formulae are much less accurate in describing resuts between good Human players then a simple linear relation. See the Sonas rating system.
-
- Posts: 12541
- Joined: Wed Mar 08, 2006 8:57 pm
- Location: Redmond, WA USA
Re: Formula for calculating ELO performance
For USCF Elo calculation, here is the header file:James Constance wrote:If you have a player's rating, his opponents' ratings and his score, how does one calculate his performance?
http://www.chessbase.com/newsdetail.asp?newsid=4326 gives the equation for the expected winning percentage as
from which one can work backwards. But I'm a bit stuck on the maths
Any pointers appreciated!
Thanks
James
http://cap.connx.com/tournament_software/USCF.H
And here is the implementation:
http://cap.connx.com/tournament_software/USCF.C
Here is the Royal Jones method of calculation:
http://cap.connx.com/tournament_software/prog10.cpp
-
- Posts: 358
- Joined: Wed Mar 08, 2006 8:36 pm
- Location: UK
Re: Formula for calculating ELO performance
Thanks to all for your very interesting answers! It's surprising to me that it is so complex! Perhaps I will just copy the tables into an array!
best
James
best
James