Hello Roger and others,
Could FGSl be a new ECF grading method?May I ask what do you think about FGSl (
FIDE-like
Grading
Sytem with
live internal grades) defined below in "FIDE-like grading system with internal live grade calculation and FGSl..." section?
In order to illustrate the calculation method the lighthouse keepers and some other examples follow.
A two lighthouse keepers one graded 100 and other 120 drew 30 games in the grading period (which may be assumed to be a season), their live grades would be calculated as follows (let us denote a 100 player with 'i=1' and a 120 player with 'i=2'):
'n0 = 30'
'n1 = n2 = 30;
'k12 = k21 = 1', 'k11 = k22 = 0'
'q12 = q21 = 50', 'q11 = q22 = 0'
'p12 = 100/(1 + 10^(-(g1 - g2)/50))',
'p21 = 100/(1 + 10^(-(g2 - g1)/50))'
before game 1 (live grades before the 1st game are the grades published for the previous grading period which may be assumed to be a season):
'g1 = 100'
'g2 = 120'
after game 1:
'g1 = g1 + (k12*(q12 - p12))/n0 = 100.72'
'g2 = g2 + (k21*(q21 - p21))/n0 = 119.28'
after game 2:
'g1 = g1 + (k12*(q12 - p12))/n0 = 101.39'
'g2 = g2 + (k21*(q21 - p21))/n0 = 118.61'
after game 3:
'g1 = g1 + (k12*(q12 - p12))/n0 = 102.02'
'g2 = g2 + (k21*(q21 - p21))/n0 = 117.98'
after game 4:
'g1 = g1 + (k12*(q12 - p12))/n0 = 102.60'
'g2 = g2 + (k21*(q21 - p21))/n0 = 117.40'
after game 5:
'g1 = g1 + (k12*(q12 - p12))/n0 = 103.15'
'g2 = g2 + (k21*(q21 - p21))/n0 = 116.85'
after game 6:
'g1 = g1 + (k12*(q12 - p12))/n0 = 103.66'
'g2 = g2 + (k21*(q21 - p21))/n0 = 116.34'
after game 7:
'g1 = g1 + (k12*(q12 - p12))/n0 = 104.13'
'g2 = g2 + (k21*(q21 - p21))/n0 = 115.87'
after game 8:
'g1 = g1 + (k12*(q12 - p12))/n0 = 104.57'
'g2 = g2 + (k21*(q21 - p21))/n0 = 115.43'
after game 9:
'g1 = g1 + (k12*(q12 - p12))/n0 = 104.98'
'g2 = g2 + (k21*(q21 - p21))/n0 = 115.02'
after game 10:
'g1 = g1 + (k12*(q12 - p12))/n0 = 105.36'
'g2 = g2 + (k21*(q21 - p21))/n0 = 114.64'
after game 11:
'g1 = g1 + (k12*(q12 - p12))/n0 = 105.71'
'g2 = g2 + (k21*(q21 - p21))/n0 = 114.29'
after game 12:
'g1 = g1 + (k12*(q12 - p12))/n0 = 106.04'
'g2 = g2 + (k21*(q21 - p21))/n0 = 113.96'
after game 13:
'g1 = g1 + (k12*(q12 - p12))/n0 = 106.34'
'g2 = g2 + (k21*(q21 - p21))/n0 = 113.66'
after game 14:
'g1 = g1 + (k12*(q12 - p12))/n0 = 106.61'
'g2 = g2 + (k21*(q21 - p21))/n0 = 113.39'
after game 15:
'g1 = g1 + (k12*(q12 - p12))/n0 = 106.87'
'g2 = g2 + (k21*(q21 - p21))/n0 = 113.13'
after game 16:
'g1 = g1 + (k12*(q12 - p12))/n0 = 107.11'
'g2 = g2 + (k21*(q21 - p21))/n0 = 112.89'
after game 17:
'g1 = g1 + (k12*(q12 - p12))/n0 = 107.33'
'g2 = g2 + (k21*(q21 - p21))/n0 = 112.67'
after game 18:
'g1 = g1 + (k12*(q12 - p12))/n0 = 107.54'
'g2 = g2 + (k21*(q21 - p21))/n0 = 112.46'
after game 19:
'g1 = g1 + (k12*(q12 - p12))/n0 = 107.72'
'g2 = g2 + (k21*(q21 - p21))/n0 = 112.28'
after game 20:
'g1 = g1 + (k12*(q12 - p12))/n0 = 107.90'
'g2 = g2 + (k21*(q21 - p21))/n0 = 112.10'
after game 21:
'g1 = g1 + (k12*(q12 - p12))/n0 = 108.06'
'g2 = g2 + (k21*(q21 - p21))/n0 = 111.94'
after game 22:
'g1 = g1 + (k12*(q12 - p12))/n0 = 108.21'
'g2 = g2 + (k21*(q21 - p21))/n0 = 111.79'
after game 23:
'g1 = g1 + (k12*(q12 - p12))/n0 = 108.34'
'g2 = g2 + (k21*(q21 - p21))/n0 = 111.66'
after game 24:
'g1 = g1 + (k12*(q12 - p12))/n0 = 108.47'
'g2 = g2 + (k21*(q21 - p21))/n0 = 111.53'
after game 25:
'g1 = g1 + (k12*(q12 - p12))/n0 = 108.59'
'g2 = g2 + (k21*(q21 - p21))/n0 = 111.41'
after game 26:
'g1 = g1 + (k12*(q12 - p12))/n0 = 108.70'
'g2 = g2 + (k21*(q21 - p21))/n0 = 111.30'
after game 27:
'g1 = g1 + (k12*(q12 - p12))/n0 = 108.80'
'g2 = g2 + (k21*(q21 - p21))/n0 = 111.20'
after game 28:
'g1 = g1 + (k12*(q12 - p12))/n0 = 108.89'
'g2 = g2 + (k21*(q21 - p21))/n0 = 111.11'
after game 29:
'g1 = g1 + (k12*(q12 - p12))/n0 = 108.97'
'g2 = g2 + (k21*(q21 - p21))/n0 = 111.02'
after game 30:
'g1 = g1 + (k12*(q12 - p12))/n0 = 109.05'
'g2 = g2 + (k21*(q21 - p21))/n0 = 110.95'
The players' new published grades after the grading period (which may be assumed to be a season) would be their live grades after game 30:
'g1 = 109.05'
'g2 = 110.95'
If the grading period was chosen so that in it the players finished their 1st 15 games, then the players' new published grades after that grading period would be their live grades after game 15:
'g1 = 106.87'
'g2 = 113.13'
etc.
Note that if the 100 player played all different opponents with live grade of 120 instead, his new grade after 30 games would be:
'g1 = 113.61'
(note that it would' be 'g1 = 120.00', as we update the 100 player's grade after every draw and he is getting less and less grading points for every subsequent draw)
(note that it would be 'g1 = 119.99' if the number of games was approximately 200)
(note that it would be 'g1 = 112.77' if we used ECF linear approximation 'f(dij=gi-gj)=50*(1 + (gi-gj)/50)' if '|dij=gi-gj|<=40' and 'f(dij=gi-gj)=90' if 'dij=gi-gj>40' and 'f(dij=gi-gj)=10' if 'dij=gi-gj<-40', rather than FIDE logistic equivalent 'f(dij=gi-gj)=100/(1 + 10^(-(gi-gj)/50))')
I know that Roger is interested in the example where a 140 player scores 50% against a 160 opposition, so say if a 140 player scored 50% against a 160 opposition (i.e. the opposition's live grades were 160 on average) the 140 player would need approximately 95 games to get a grade of 159.5.
(note that if the 140 player played 250 opposition instead, he or she would need approximately 162 games to get a grade of 249.5.)
Let us consider a fast improving junior with a grade of a 100 who scored 75% against a 140 opposition (i.e. the opposition's live grades were 140 on average) in 80 games he played in the grading period, the junior's new FGSl grade for the grading period would be approximately 159.53.
(note that junior's new grade according to the current grading system would be 165 regardless of the number games he played in the grading period)
(note that if the junior played 200 games in the grading period his new FGSl grade would be approximately 163.73)
Notes on FGSl!In order to implement FGSl or equivalent FIDE-like grading system with internal live grade calculation one would need to enforce keeping records of date and time when the games finished (so that the games can be sorted in chronological order before grading for a desired grading period).
If you calculate using live grades internally the frequency of grade publication does not affect the grade calculation, though it may affect the things such as determination who is eligible to play in certain events, etc.
If ECF would adopt FGSl or equivalent FIDE-like grading system with internal live grade calculation, the choice of the length of the grading period (be it a season, six or two months, etc.) is more of an administrative issue (i.e. you collect the game results and run the program to calculate new grades for the new grading period instead of once a year every six or two months, etc.).
'n0' can be fine-tuned, instead of setting 'n0=30' one may find another constant to fit better the ECF situation.
'k' factors of graded players in the games where they play ungraded players may be set to zero when 'k' factors of ungraded players in the games where they play graded players would be set to 2 (we honour 'kij+kji=k=2' if 'i'th and 'j'th players played at least one game in the grading period).
Improving on FGSlOne may consider using variable 'k' factors, honouring 'kij+kji=k=2' if 'i'th and 'j'th players played at least one game in the grading period, to account for the players' grade trust estimated on the basis of the frequency of play (this would be sort of Glicko 1 idea).
Say, if a player played only a few games in the last grading period his grade should not be equally trusted as the grade of a player who played a lot of games in the last grading period, and the grade of the player whose grade is less trusted should be corrected more (his 'k' factor is greater than 1) than the grade of the player whose grade is more trusted (his 'k' factor is less than 1), honouring 'kij+kji=k=2'.
FIDE-like grading system with internal live grade calculation and FGSl...Restrictions:
(none)
Definitions:
- 'n0' is some constant number of games, 'n0>0', note that if 'kij=kji=1' if 'i'th and 'j'th players played at least one game in the grading period and 'kij=kji=0' if 'i=j' or if 'i'th and 'j'th player did not play each other in the grading period, then 'n0' is a number of games after which a player's new grade would equal his or her actual performance
- 'm' is the total number of players in the system, 'm>1'
- 'n_' is game number vector where 'ni' is a number of games 'i'th player played in the grading period
- 'g_' is a grade vector where 'gi' is a live grade of 'i'th player, a live grade for the first game in the grading period for a player is a player's grade from the previous grading period
- 'g2_' is a new grade vector where 'g2i' is a new grade for the grading period of 'i'th player (player's new grade for the grading period is calculated using the player's game results in the grading period and the player's and the player's opposition live grades)
- 'Q_' 'is 'mxm' matrix where 'qij' is actual performance of 'i'th player in the game against 'j'th player ('qij' is 0 if 'i'th player lost, 50 if 'i'th player drew and 100 if 'i'th player won, note that 'qij' and 'qji' are related, i.e., if 'qij=0' then 'qji=100','if 'qij=50' then 'qji=50', if 'qij=100' then 'qji=0', etc.), note that 'qij+qji=100' if 'i'th and 'j'th players played at least one game in the grading period, note that 'qij = qji = 0' if 'i=j' or if 'i'th and 'j'th player did not play each other in the grading period, 'Q_' is actual performance matrix
- 'P_' is 'mxm' matrix where 'pij=f(gi-gj)' is expected performance of 'i'th player in the game against 'j'th player, note that ECF is using 'f(dij=gi-gj)=50*(1 + (gi-gj)/50)' if '|dij=gi-gj|<=40' and 'f(dij=gi-gj)=90' if 'dij=gi-gj>40' and 'f(dij=gi-gj)=10' if 'dij=gi-gj<-40', FIDE logistic equivalent is 'f(dij=gi-gj)=100/(1 + 10^(-(gi-gj)/50))', note that if 'gi=gj' then 'f(gi-gj)=50', note that 'pij+pji=100', 'P_' is expected performance matrix
- 'K_' is 'mxm' matrix where 'kij' are 'k' factors used in calculation of new grades for the grading period, 'kij=kji=0' if 'i=j' or if 'i'th and 'j'th player did not play each other in the grading period, 'kij+kji=k', where 'k>0' is a constant, if 'i'th and 'j'th players played at least one game in the grading period, 'K_' is 'k' factors matrix
!(note that if players 'i' and 'j' played more than one game in the grading period than for each game there will be a separate set of 'gi', 'qij' and 'qji' and 'pij' and 'pji', in theory 'kij' and 'kji' should not change within one grading period, i.e., an ungraded player may be regarded as an ungraded player for the whole of grading period, live grades may be equally trusted throughout the grading period, etc.)
New grades for the grading period are calculated as follows (this is a generic formula covering a number of grading systems including the current ECF one, what makes the grading systems different is a choice of matrices 'K_' and 'P_')
Code:
g2i = gi + Sum_j ((kij*(qij - pij))/n0)
where for FGSl (
FIDE-like
Grading
System with internal
live grades) 'kij=kji=1' if 'i'th and 'j'th players played at least one game in the grading period, 'kij=kji=0' if 'i=j' or if 'i'th and 'j'th player did not play each other in the grading period, 'pij=f(dij=gi-gj)' where 'f(dij=gi-gj)=100/(1 + 10^(-(gi-gj)/50))' and 'n0=30'.
Sense of ECF grade scale...If a 120 player plays a 100 player then the expected performance of the 120 player is approximately '50+(120-100)=70%', in FIDE case it would be approximately '50+(1610-1450)/8=70%' (i.e., ECF has no scaling factor of 8 ).
Merry Christmas and a Happy New Year!I wish you all Merry Christmas and a Happy New Year!
Kind regards,