## The Ratings Algorithm

### Background

IECC ratings are adjusted based on the Elo rating system model. This system was developed by Arpad Elo, a Hungarian born American physics professor, and master-level chess player.

The USCF implemented Elo's rating system in 1960, and the system quickly gained recognition as being fair and accurate. Elo's system was subsequentially adopted by Fide in 1970.

The Elo system can basically be described as a method for calculating the relative strength of chess players. It accomplishes this by estimating the true skill of players by updating their ratings when they win, lose, or draw against other players, based on a comparison with the other player's rating.

Because Elo's general ideas have been adopted by many different organizations, and because each organization has a unique implementation different from Elo's original suggestions, it becomes ambiguous to refer to a player's "ELO rating". It is more precise to refer to the organization granting the rating, e.g. "My current IECC rating is 1508". It should be noted that while various organisations utilise the Elo model, Elo ratings are not always directly comparable.

### Mathematical Details

The IECC uses the following algorithm for all rating adjustments.

`White Adjustment = Int (DeltaK * (Score - Probability) )`

Where "Int" designates the lowest whole integer.

DeltaK is a constant determined by the players initial rating. IE:

• DeltaK = 32 where the players rating <= 2100.
• DeltaK = 24 where the players rating > 2100 and < 2400.
• DeltaK = 16 where the players rating > 2400.

Score is determined from the game result. IE:

• 1-0, score = 1.
• 1/2-1/2, score = 0.5.
• 0-1, score = 0.

And

```Probability = 1 / (1 + (10 ^ -((White Rating - Black Rating) / 400)))```

```Black Adjustment = Int (-1 * (White Adjustment * Black's DeltaK / White's DeltaK))```

Where "Int" once again designates the lowest whole integer.

This is all taken from Elo's original suggestions. His primary idea was that performance can't be measured absolutely, it can only be inferred from wins and losses. Ratings therefore have meaning only relative to other ratings. Based on this principle, Elo concluded that you must first calculate the expected score of a player before calculating any adjustment.

If Player A has true strength "RA" and Player B has true strength "RB", Elo's original formula for the expected score of Player A is:

`EA = 1 / (1 + (10^((RB - RA) / 400)))`

Similarly the expected score for Player B is:

`EB = 1 / (1 + (10^((RA - RB) / 400)))`

You will note that EA + EB = 1. In practice, since the true strength of each player is unknown, the expected scores are calculated using the player's current ratings.

As you can see, the IECC rating algorithm uses this idea, and calls it "Probability".

`Probability = 1 / (1 + (10 ^ -(Rating Difference / 400)))`

When a player's actual score exceeds his expected score, Elo's system takes this as evidence that that player's rating is too low, and needs to be adjusted upward. Similarly when a player's actual score falls short of his expected score, that player's rating is adjusted downward. Elo's original suggestion, which is still widely used, was a simple linear adjustment proportional to the amount by which a player outperformed or underperformed his expected score.

The maximum possible adjustment per game can thus be set via a formula constant. For high rated players Elo suggested a maximum adjustment of 16 rating points, while for weaker players it was suggested a maximum adjustment of 32 be set.

Again the IECC uses Elo's original idea and has set a maximum possible adjustment for players rated less than 2101 at 32. For players rated between 2100 and 2400 the maximum rating adjustment is 24, and for players rated higher than 2400 it is set at 16. These are the DeltaK values stated above.

So given that we have an expected score, and a DeltaK value for the player, we can calculate that players new rating. Elo proposed using the following:

`New rating = RA + K(SA - EA)`

Where SA is the actual points scored.

### Worked Example

Lets work through an example with the formulas. Suppose Player A has a rating of 1584. He loses to a player rated 2131. His expected score as calculated with:

```EA = 1 / (1 + (10^((RB - RA) / 400)))

EA = 1 / (1 + (10^(547/400)))

EA = 1 / (1 + (10^(1.3675) ))

EA = 1 / (1 + (23.3077)

EA = 1 / 24.3077

EA = 0.04114
```

Therefore EB = 0.95886 (as we know EA + EB = 1). This in essence tells us, Player B would be expected to win approximately 24 from 25 games when playing against Player A.

Now we'll enter these valves into Elo's adjustment formula.

#### Player A:

```New rating = RA + K(SA - EA)
New rating = 1584 + 32(0 - 0.04114)
New rating = 1584 + -1.31645
Or a negative adjustment of -1.31645 to the players rating.
```

#### Player B:

```New rating = RA + K(SA - EA)
New rating = 2131 + 24(1 - 0.95886)
New rating = 2131 + 0.98735
Or a positive adjustment of 0.98374 to the players rating.
```

The IECC algorithm adheres to Elo's ideas and produces:

```White Adjustment = Int (WdeltaK * (Score - Probability) )
White Adjustment = Int ( 32 * (0 - (1 / (1 + (10 ^ -(Rating Difference / 400)))))
White Adjustment = Int ( 32 * (0 - (1 / (1 + (10^ -(-547/400)) ))))
White Adjustment = Int ( 32 * (0 - (1 / (1 + 23.3238))))
White Adjustment = Int ( 32 * (0 - (1 / (24.3238))))
White Adjustment = Int ( 32 * (-0.041111))
```

Therefore White's rating will be adjusted by -2. (Result rounded down to the lowest whole integer.)

```Black Adjustment = Int (-1 * (White's Adjustment * BdeltaK / WdeltaK))