Neither is anybody else. What is worse is that no one tried different rating differences. I thought that OldUser would figure it out since his graphs went up to a ratings difference well beyond 250.
Sure, math class begins.
First, what is wrong.
Have you heard of even and odd polynomials? In algebra class did you ever need to plot them out? If you plotted out your function beyond the range 0 to 250 you would see the problem.
Your equation is
The problem is the the -8.4E-6*x^2 is an even and looks like an upside down U with the peak at about 250. The percentages start to decrease. No one on the forum even bothered to try a ratings difference of 300, 400, 500 even though I hinted at it. The x^2 term should have been enough but then you should have tried numbers outside of the range from 0 to 250.
Look up odd and even functions. Khan academy has lessons on this topic.
Anyway, it is obvious that the -x^2 term would be a problem.
The correct formula is not a simple polynomial. It is sigmoid function. The theoretical percent vs ratings difference in OldUser's link is a sigmoid function. Notice that when the ratings difference is positive, the curve looks much like yours but the percentage will approach 1 as the rating difference increases, unlike your equation. A sigmoid function will also handle the case where the ratings difference is negative so the probabilities for the weaker player winning is less than 0.5. Your equation doesn't work when the ratings difference is negative.
en.wikipedia.org
The sigmoid function, also called the sigmoidal curve (von Seggern 2007, p. 148) or logistic function, is the function y=1/(1+e^(-x)). (1) It has derivative (dy)/(dx) = [1-y(x)]y(x) (2) = (e^(-x))/((1+e^(-x))^2) (3) = (e^x)/((1+e^x)^2) (4) and indefinite integral intydx =...
mathworld.wolfram.com
Now use the sigmoid function as your equation. It should be in the form of y=1/(1+exp(-k*x)). k determines how rapidly the sigmoid function reaches +/- 1 and the slope at a 0 ratings difference.
Note, a tanh() function will also yield a sigmoid.
Sigmoid functions are using in other ratings systems like rating central and in neural nets, anywhere where a number must be converted to a range of percentage from 0 to 1. I have used them for motion control. One more thing. In this application a ratings difference of 0 means the probability for winning is 0.5. Another application a x might need to be offset to get a probability of 0.5. In this case, offset x like this y=1/(1+exp(-K(x-b)) where b is the offset. Your curve fitting code should include an offset if trying to fit the sigmoid to raw data.
Your curve fitting is good but you can't assume a simple polynomial will match the data. Now apply your curve fitting program to ratings difference from -500 to +500 and plot it.
I have doubts about the so called "experts" in OldUser's link. The predicted graph doesn't match the actual data at all.