Backgammon Galaxy Version 2 ratings formula (effective September 5, 2023)

The following is my attempt to replicate the new Galaxy Version 2 ratings formula (effective September 5, 2023):

(a) Let Rating1 = Player 1's rating, Rating2 = Player 2's rating

Let Player1_Base_Expected = 1 / (1 + 10^((Rating2 - Rating1)/2000))

(b) Let X = absolute value of rating difference:
X = Abs(Rating1 - Rating2)

(c) Cap X at M (M varies based on the match length). This variable appears to slightly improve the model's accuracy.
X' = Min(X, M)

(d) Calculate an Adjustment:
Adjustment = AX'^2 + BX' + C

Note that A, B, C, and M vary based on the match length. {A_N, B_N, C_N, M_N} are the A, B, C, and M for an N-point match.

Current values of A, B, C, and M:

{A_1, B_1, C_1, M_1} = {-0.0000000309204664796912, 0.0000152567778924357, 0.000010, 412.439461117255}
{A_3, B_3, C_3, M_3} = {-0.0000000288912831118553, 0.0000149196809393925, 0.023387, 445.130838512774}
{A_5, B_5, C_5, M_5} = {-0.0000000289427102450464, 0.0000144859181754297, 0.043201, 437.504674032080}
{A_7, B_7, C_7, M_7} = {-0.0000000290124210763588, 0.0000144570218729201, 0.059942, 409.530243243139}

1-point match Adjustment Function: Adjustment varies between [0.0010%, 0.1892%]
3-point match Adjustment Function: Adjustment varies between [2.3387%, 2.5313%]
5-point match Adjustment Function: Adjustment varies between [4.3201%, 4.5014%]
7-point match Adjustment Function: Adjustment varies between [5.9942%, 6.1743%]

Note 1: The 3-point, 5-point, and 7-point Adjustment Functions are almost identical to a parallel shift of the 1-point Adjustment Function. If future data supports it, I may simplify the model to force these curves to just be parallel shifts of the 1-point Adjustment Function. For now though, I allow them to be their own curves.

Note 2: C_1 is almost zero in the model. If future data supports it, I may set it to zero in the future. For now, it's a small value (0.001%).

(e) Correct the "Expected" value:

If Player 1 is the higher rated player, Player1_Corrected_Expected = Player1_Base_Expected + Adjustment.
If Player 1 is the lower rated player, Player1_Corrected_Expected = Player1_Base_Expected - Adjustment.

Special cases:

It's unknown what happens when X = 0, but this calculator represents my best guess. For extremely large X (X in the thousands), Player1_Corrected_Expected is set to a minimum of 0 and a maximum of 100%. Note, however, that because Galaxy now has an automatic match-pairing algorithm (players can't choose their own opponents), extremely large X will never (or almost never) occur in practice. The largest X observed in the 273-match test sample was just under 700 points, so to be safe, the web calculator implements a 700-point rating difference limit. You can enter larger rating differences in the Excel calculator though.

(f) Calculate K:
K = Min(16, Max(5, 32 - 0.012 * Average(Rating1, Rating2)))

(g) If Player 1 wins both match and PR, then his Rating change = (1 - Player1_Corrected_Expected) * K * N^0.6 where N = Match Length (N = 1,3,5,7).
If Player 1 wins the match but loses the PR, then his Rating change = 0.5 * (1 - Player1_Corrected_Expected) * K * N^0.6 where N = Match Length (N = 1,3,5,7).
The other 2 scenarios (Player 2 wins both match and PR, Player 2 wins match but loses PR) are calculated similarly.