Register Now
Member Count: 627,579 - April 23, 2014  [Get Time]
Login
mm_support_faqs  Rating System
Marathon Match Rating System



   Rating Key
2200+
1500 - 2199
1200 - 1499
900 - 1199
0 - 899


How the TopCoder Rating System Works:

The following statistics are kept about each coder:
  • Rating
  • Volatility
  • Number of times previously rated
Before competing, new members ratings are provisional.

After a competition the algorithm below is applied to the competitors. First, the ratings of members who have previously competed are calculated, with new members' performances not considered. Second, new members are given a rating based on their performance relative to everyone in the competition.



How Marathon Match ratings are calculated

New ratings are calculated as follows:

After each competition, each coder who attended the competition is re-rated according to the following algorithm. A coder is considered to have attended the event is they make a submission of any kind (example or full). Only registering for the event will not cause the coder to be rated. The average rating of everyone in the competition is calculated:

average rating

Where NumCoders is the number of coders in the competition and Rating is the rating without the volatility of the coder in the competition before the competition.

The competition factor is calculated:

competition factor

Where Volatility is the volatility of the coder in the competition before the competition.

Win Probability Estimation Algorithm:
win probability

Where Rating1 & Vol1 are the rating and volatility of the coder being compared to, and Rating2 & Vol2 are the rating and volatility of the coder whose win probability is being calculated. Erf is the "error function".

The probability of the coder getting a higher score than another coder in the competition (WPi for i from 1 to NumCoders) is estimated. The expected rank of the coder is calculated:

expected rank

The expected performance of the coder is calculated:

expected performance

Where inverse standard normal is the inverse of the standard normal function.

The actual performance of each coder is calculated:

expected performance

Where ARank is the actual rank of the coder in the competition based on score (1 for first place, NumCoders forlast). If the coder tied with another coder, the rank is the average of the positions covered by the tied coders.

The performed as rating of the coder is calculated:

performed as

The weight of the competition for the coder is calculated:

weight of the competition

Where TimesPlayed is the number of times the coder has been rated before.

To stabilize the higher rated members, the Weight of members whose rating is between 2000 and 2500 is decreased 10% and the Weight of members whose rating is over 2500 is decreased 20%.

A cap is calculated:

cap

The new volatility of the coder is calculated:

new volatility

The new rating of the coder is calculated:

new rating

If |NewRating - Rating| > Cap the NewRating is adjusted so it is at most Cap different than Rating.

<In some cases, the algorithms above would lead to a decline in rating, even though a competitor has placed (or tied) for the first place position. In this event, the ratings will be run as normally, and subsequently, any competitors tied for first place will then have their ratings adjusted so that: newRating = oldRating + 1 in the event that newRating <= oldRating . This will not effect the new volatility of the competitors, which will still be calculated as above.