vkgainz's blog

By vkgainz, history, 4 years ago, In English

Hello Everyone,

Are the seeds for the contests on CF-Predictor calculated correctly?

On a recent contest: many users (such as me) ended up getting negative delta even though we got a lower rank than our seed (meaning we did better than "expected"), which is contradictory.

Does CF-Predictor calculate the seeds based on registered participants and not those who actually took the contest (thus making it a bit inaccurate) or are rating changes a bit off for codeforces?

  • Vote: I like it
  • +20
  • Vote: I do not like it

| Write comment?
»
4 years ago, # |
  Vote: I like it 0 Vote: I do not like it

Auto comment: topic has been updated by vkgainz (previous revision, new revision, compare).

»
4 years ago, # |
Rev. 2   Vote: I like it +5 Vote: I do not like it

The avg delta in div1 is -12. The avg delta is div2 is +40(This includes new accounts).

  • »
    »
    4 years ago, # ^ |
      Vote: I like it +8 Vote: I do not like it

    the average delta in div2 is still negative overall (it was also around -10 last time I checked), it is just because of the initial rating gains that make it look positive.

  • »
    »
    4 years ago, # ^ |
      Vote: I like it +8 Vote: I do not like it

    Oh wow, didn't know that. Did you find this out by looking at past data or was there a post somewhere? As far as I know the last rating explanation post was made like 5 years ago.

    • »
      »
      »
      4 years ago, # ^ |
        Vote: I like it +8 Vote: I do not like it

      Just run this and input contestID

      import codeforces_api
      API = "https://mirror.codeforces.com/api/"
      cf_api = codeforces_api.CodeforcesApi()
      contestid = int(input())
      ratingchanges = cf_api.contest_rating_changes(contestid)["result"]
      totaldelta = 0
      for ratingchange in ratingchanges:
          newrating = ratingchange["newRating"]
          oldrating = ratingchange["oldRating"]
          totaldelta+=newrating-oldrating
      print(totaldelta)
      print(totaldelta/len(ratingchanges))