ojuz's blog

By ojuz, history, 5 weeks ago, In English,

Hi, everyone!

Recently we've seen a lot of people complaining about the merciless Codeforces Rating Formula — if you fail in one round, your rating will decline too much(something like -200) and it will make your long-term effort to make your rating increase meaningless.

So we decided to compute your Codeforces' ratings using Atcoder's Rating System! :D

We will try to update the ratings each time the round is over. We welcome your suggestions on comments :D

Some information:

  • [UPDATED] Since Codeforces and Atcoder are different platforms, we applied some tweaks on the rating formula. Is this a reasonable choice?
    • Div.1 & Div.1 + Div.2 rounds: Center = 1600, RATEDBOUND = ∞ (we thought Div.1 is more similar to AGC, not ARC)
    • Div.2 rounds — Center = 1000, RATEDBOUND = 1500 (RATEDBOUND + 400 = 1900)
    • Div.3 rounds — Center = 800, RATEDBOUND = 1200 (same as ABC)
  • We didn't implement the p(0 < p < 1)-rated feature, so the semi-rated round is fully rated here.
 
 
 
 
  • Vote: I like it  
  • +301
  • Vote: I do not like it  

»
5 weeks ago, # |
  Vote: I like it +22 Vote: I do not like it

So cool!

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

I'm only 1500? I think the f function written in the pdf is too strict... (my first starting rating was 25)

»
5 weeks ago, # |
  Vote: I like it +30 Vote: I do not like it

Suddenly I'm just 1650 due to AtCoder metrics :(

»
5 weeks ago, # |
  Vote: I like it +9 Vote: I do not like it

I'm now a "newbie" :(

»
5 weeks ago, # |
  Vote: I like it +47 Vote: I do not like it

Heh, tourist is still 1st in this universe.

»
5 weeks ago, # |
  Vote: I like it +26 Vote: I do not like it

We recalculated the ratings with the new rating bounds. Div.2 bound is increased to match with the Codeforces standards, and Div.3 bound is increased to match with ABC. Possibly your rating has been increased, check once more!

Also the ranklist is now separated into two -- just the same as Codeforces.

»
5 weeks ago, # |
  Vote: I like it +13 Vote: I do not like it

Performance is acting weird. I'd expect 12th place at CROC final to give me much better performance than 2876 and definitely better than in AIM Tech Round 3, where I had 22nd place and performance 2898.

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

    Yes right, your performance for CROC final should be 2914, not 2876. For now we don't know why this happened, the same code gives different results.

    For now, the only thing we can imagine is that the ratings wasn't calculated chronologically, so that APerf s were calculated differently. But we calculated the ratings in increasing order of startTimeSeconds, so this wouldn't be the problem. We will definitely investigate, thanks for your comment :D

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

    It takes too much time and cost to reproduce the same situation, so we will see if the same bug happens when we compute the new ratings according to the following Div.2 round. Maybe this wouldn't give a nice result (since it's Div.2), in that case we have to wait a little bit more.

  • »
    »
    5 weeks ago, # ^ |
    Rev. 3   Vote: I like it 0 Vote: I do not like it

    No, your performance was definitely 2876. We mistakenly took into account every contest (until 4 days ago), not before that CROC final. This is how the performance graph looks like: (x-axis is the performance, and y-axis is the corresponding rank — 0.5)

    performance 2800 to 3000

    You can see the whole rating graph here. Maybe it happened because there were too few participants who has too high ratings in the CROC finals?

»
5 weeks ago, # |
  Vote: I like it +39 Vote: I do not like it

Can someone write a userscript that replaces Codeforces rating with this rating?

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

Thank you!

Note that something like "My real rating is X but now it shows Y, it increased/decreased..." doesn't make any sense because ratings are just relative values. You should compare the rank instead.

EDIT: Do you want rating X in your rating to be as strong as rating X in CF, or rating X in AtCoder? In the former case I think the ratings should be multiplied by a constant less than one (and possibly tweak centers), and in the latter case the centers should be raised.

  • »
    »
    5 weeks ago, # ^ |
    Rev. 2   Vote: I like it 0 Vote: I do not like it

    We are not sure. The reason we decided to increased the bounds was it seemed the RATEDBOUND for Div.2 deserved more than 1200, and we thought it would be nice to give some kind of a motivation for low-rated users. And then we didn't adjust anything since we thought, as you mentioned, the absolute values of ratings are not important.

    Anyway, thanks for your suggestion :D

»
5 weeks ago, # |
Rev. 2   Vote: I like it 0 Vote: I do not like it

Sorry for being late, we just updated the ratings for the Educational Codeforces Round 44. printed out all the variables during the computation to see what is going on. We will investigate on them and find out what the problem was (from this comment)~

UPD: for now, it seems everything is fine.

»
4 weeks ago, # |
  Vote: I like it +14 Vote: I do not like it

I believe that Div. 2 Center should be increased. The performance of Div. 2 participants is acting quite weird:

Kotori_Is_My_Wife https://crafting.oj.uz/user/Kotori_Is_My_Wife

and

ParkShinHye https://crafting.oj.uz/user/ParkShinHye

both have 1900 performance on Round 484, however their place on that contest differs really much (1 vs 122). There is also one problem gap between this two users and they still recieve equal performance (!). I am convinced that this problem needs to be solved as although crafting.oj.uz rating seems really nice for Div. 1 users, it is not as good for Div. 2 ones :(

  • »
    »
    4 weeks ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    We were aware of this situation, but we were not sure whether this is actually a problem, and how to fix it.

    When I look at the last ABC, 1st to 50th have the same performances. (although there were unrated people inside) There were about 3x participants in that Codeforces' round, so it seemed reasonable that 1st-122nd people have the same performances.

    Even if it we consider this is a problematic situation, we don't find a good way to fix it. We believe this comes from the RATEDBOUND, not from the Center. But we're not sure it is a good idea to increase the bound more than now.

    • »
      »
      »
      4 weeks ago, # ^ |
      Rev. 4   Vote: I like it 0 Vote: I do not like it

      Well... I don`t actually think that it is correct to match Div. 2 rounds and ABC. I believe that Div. 2 rounds more correspond to ARC rounds, where such situation is rare.

      Anyway, the problem is much more evident on Educational Round 44, where people who solved 4 problems and people who solved 6 problems have equal performance value:

      4 problems: https://crafting.oj.uz/user/aeternalis1

      6 problems: https://crafting.oj.uz/user/crhkr

      And i consider THIS to be a problem :(

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

        There are 3215 active Div.1 users in Codeforces while there are only 119 reds on Atcoder, so we thought it was not a good idea to compare ARC with Div.2 rounds. Anyway this situation seems to be awkward. Maybe we should increase the bound to something like 2400, to match with yellows-oranges on Atcoder?

      • »
        »
        »
        »
        3 weeks ago, # ^ |
        Rev. 3   Vote: I like it 0 Vote: I do not like it

        We tried to set the bounds to match exactly with Codeforces

        • Center is always 1500
        • Div1: RATEDBOUND = ∞
        • Div2: RATEDBOUND = 1900
        • Div3: RATEDBOUND = 1600

        and the result was: tourist's rating being skyrocketed (it was > 4000), and the behavior you've mentioned not being resolved (because everybody's rating has increased). Now, we really don't know how to deal with this :p

»
3 weeks ago, # |
  Vote: I like it 0 Vote: I do not like it

I'm new in Codeforces. I'm curious about how to make a multiple-user rating graph. Could someone tell me? Thanks!

  • »
    »
    12 days ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    Use Codeforces API to get the data, and then draw the graph using any programming language or tool you like. From its style, I guess that the graph shown above was drawn with Matplotlib in Python.