by Marc Levesque (2017)
The following describes the algorithm used by Director! for calculating performance ratings and new ratings. Assuming the correct pre-tourney ratings and pre-tourney games played are provided for all registrants in a division, the ratings calculated by Director! will match those ultimately published by NASPA and WGPO.
The adjustment to the rating is composed of three parts:
- Base Rating Change This is based on “actual wins” versus “expected wins”. The “expected wins” represent how many games you were expected to win based on the difference between your rating and your opponent’s rating (excludes BYEs, forfeits, and missed games). The “actual wins” is your total number of wins in the tourney (also excludes byes, forfeits, and missed games).
- Acceleration Points If your base rating change exceeds 5 points per game played (excluding BYEs, Forfeits, and Missed Games), then you get these “bonus points”.
- Feedback Points If any of your opponents earn “Acceleration Points”, then you get credit for 1/20 of those points.
Note: All intermediate calculations are done to 8 decimal places, and the sum is rounded to the nearest whole number (Precision and rounding formula used in NASPA calculations is an unknown).
Note that when unrated players are involved, there are special considerations – see Unrated Players.
Tourneys are rated as a series of “segments”, not exceeding 16 rounds in length. Note that when the overall event includes separate tourneys, such as an early bird, main event, late bird, each is treated as a distinct tourney, and is rated in sequence by tourney start date and time. The number of rounds in each segment of a tourney is determined as follows:
- 16 or fewer rounds: One segment.
- 17 to 35 rounds: Two segments.
- over 35 rounds: Three segments.
The number of rounds in a segment is determined by dividing the number of rounds in the tourney by the number of segments, with the remainder (which can be 0, 1, or 2 rounds) allocated to the lower rounds. Each segment is rated in order as if it was a separate tourney (i.e. the new rating from segment one is used as the initial rating for segment two, the new rating from segment two is used as the initial rating for segment three). The following examples illustrate how the number of rounds in a segment would be calculated:
- 38 rounds = 3 segments of 13 (first segment), 13 (second segment), and 12 (third segment) rounds.
- 33 rounds = 2 segments of 17 (first segment) and 16 (second segment) rounds.
- 15 rounds = 1 segment of 15 rounds.
- 17 rounds = 2 segments of 9 (first segment) and 8 (second segment) rounds.
Calculation of Expected Wins
Your expected wins for the tourney is calculated as the sum of the results from the following formula: 1 – (1 / (1 + Exp(0.0031879 *Abs(Your Rating – Your Opponent’s Rating))) for each game you played.
Points per Excess Win (Loss)
The number of base rating points gained or lost for any difference between your actual wins and your expected wins differs based on two factors: your current rating, and how many games you played before the tourney started. The table below summarizes the points allocated per excess win (loss):
Rating Range Played less than 50 games Played 50 games or more
Less than 1800 30 20
1800 to 1999 24 16
2000 and up 15 10
Note that if your rating crosses one or more of these rating boundaries based on your tourney results, then the actual base rating points earned are prorated accordingly – see Rating Boundary Changes.
Calculation of the Base Rating Change
The base rating change is calculated as:
Base Rating Change = (Actual Wins – Expected Wins) * Points per Excess Win.
Obviously, the result will be negative if you won fewer games than expected, and positive if you won more than expected.
For example, let’s say you were rated 1500 and had played in over 50 games. Your expected wins was 8 games and you won 10 games. Then your base rating change would be:
Base Rating Change = (10 – 8) * 20 = 2 * 20 = 40 points
Rating Boundary Changes
If your pre-tourney rating + Base Rating Change as calculated above crosses a rating boundary, then the points per win have to be adjusted as follows (increases are given as an example, the reverse is true for decreases):
- Excess Wins = Actual Wins – Expected Wins
- # of excess wins required to get to the rating boundary = (rating Boundary – your Rating) / points per win
- Remaining Excess Wins = Excess Wins – # excess wins required to get to rating boundary.
So, for example, say your pre-tourney rating was 1780, you had played 150 games, your expected wins = 10, and your actual wins = 15. Then:
- Excess Wins = 15 – 10 = 5
- Points per Win for Over 50 Game Player with a Rating of 1780 = 20 (from table)
- Excess Wins required to get to 1800 = (1800 – 1780) / 20 = 1
- Remaining Excess Wins = (5 – 1) = 4
- Points per Win for over 50 Game Player with a Rating of 1800 = 16 (from table)
- Points Gained for Remaining Excess Wins = 4 * 16 = 64
Adjusted Base Rating Change = 20 (for below 1800 excess wins) + 64 (for over 1800 excess wins) = 84
If your base rating change (as adjusted above for any boundary changes, if necessary) is greater than [5 * the number of games you played], then you are entitled to acceleration points.
Using the previous example, let’s say you played a total of 16 games and won 15 of them. Your base rating change was calculated as 84, so your acceleration points would be:
Acceleration points = 84 – (5 * 16) = 84 – 80 = 4 points
If any of your opponents earned acceleration points, then you are entitled to 1/20 of those points. So, in our example, each of your opponents would get: Feedback Points = 4 / 20 = .2 points
Total Rating Change Your total rating change is simply the sum of the three components (positive or negative):
Rating Change = Base Rating Change + Acceleration Points + Feedback Points
Performance Rating The performance rating is a calculation of the rating you would have to have had going into the tourney to have your Expected Wins equal to your Actual Wins.
This is calculated basically by trial and error – i.e. start with a rating, calculate the expected wins, and adjust the rating down if actual wins < expected wins, or up if actual wins > expected wins.
If you won or lost all of your games, the result of this calculation would be an unreasonably large or small number, so to get a more reasonable result, the following adjustment is made:
- For unrated players: If you lost all your games, your performance rating is calculated based on winning 5% of the number of games you played. If you won all your games, then your performance rating based on winning 85% of your games played.
- For rated players: If you lost all your games, your performance rating is calculated based on winning 5% of the number of games you played. If you won all your games, then your performance rating based on winning 95% of your games played.
Unrated Players The final rating for unrated players is normally set to their performance rating. However, for both WGPO and NASPA there are upper and lower limits for these ratings. If a player’s performance rating is below the minimum, the rating will be set to the minimum. If a player’s performance rating is above the maximum, the rating will be set to the maximum.
When multiple unrated players were in the same division, an iterative process must be used to calculate these ratings. Note that this only applies to the first rating segment, since all players will have a rating after segment one. Also note that there is a slight difference in the NASPA and WGPO formulas.
The algorithm used is as follows:
For each rated player:
- Set Initial rating = Pre-Tourney rating
For each unrated player:
- Set Minimum Final rating to 500
- For NASPA only: Set Maximum Final rating to the greater of (pre-tourney rating of their highest rated opponent OR new rating of their highest non-rated opponent) + (400 * Win%)
- Set Initial rating = 500
- Calculate rated wins and rated games l If rated wins = 0, set rated wins = .05 * rated games played
- For WGPO only: If rated wins > .85 * rated games played, set rated wins = .85 * rated games played
For each unrated player:
- Calculate the player’s performance rating USING Initial ratings of all opponents
- If performance rating < Minimum rating, set performance rating to minimum
- For NASPA only: If performance rating > Maximum rating, set performance rating to maximum
- Set Final rating = performance rating
- If Final rating = Initial rating for all unrated players, we are done, so exit
- Else set Initial rating = Final rating for all unrated players, and loop again
Once all the unrated players have been rated, these ratings are used as the unrated players initial rating for purposes of computing the ratings of the other players in the division. NOTE that unrated players do not get acceleration points OR feedback points, nor do they contribute feedback points to any other players in their division.