sono8stream / codeforces-anytime

Visualize rating changes on Codeforces' virtual contests
https://codeforces-anytime.sonoapp.page
MIT License
7 stars 2 forks source link

rating change & performance is strange #26

Closed jwvg0425 closed 4 years ago

jwvg0425 commented 4 years ago

https://codeforces-anytime.firebaseapp.com/users/2K1mQrBOTVeXnihcEDto9mRa3Ei2

this is my profile. I get 163th in my last virtual codeforces contest, and it says my performance was 2318. but in official contest, rank 162th(olphe)'s rating changes from 2394 to 2415. then, 162th's performance is higher than 2400, and 163th's performance is 2318. I think this performance gap is so huge.

how to calculate performance & rating change in this site?

sono8stream commented 4 years ago

Thank you for using my app and reporting the problem.

This app calculates rating changes by algorithm mentioned here.

Also, performance is calculated to be almost equal to R in this algorithm. In other words, performance is (old rating) + (rating delta) * 2.

And the implementation of rating change is here.

Anyway, The implementation may be incorrect, so please give me time to confirm.

sono8stream commented 4 years ago

I implemented test code and it indicated that the algorithm of rating change is as same as the one in original Codeforces.

But the performance is not equal to usual calculation algorithm. The performance should be almost *(old rating) + (rating delta) 4**. (Strictly speaking, it's not equal to the correct value)

So, for example, your performance in that contest will be 2124+97*4=2512.

I fixed that performance calculation algorithm and the updated version will be deployed later.

jwvg0425 commented 4 years ago

thank you for investigation!

I think performance value should be like below:

if one has rating X ranked Y in the contest and his rating will not change, then rank Y's performance value is X. for example, in Round # 669, 1101th's rating does not change(https://codeforces.com/contest/1407/ratings/page/12). so, 1101th's performance in this contest would be 1877.

but if this type of calculation is so hard to implement or impossible, using current formula( *(old rating) + (rating delta) 4** ) is also good enough.

sono8stream commented 4 years ago

Yes, I think you are correct.

The performance will be the most likely rating when a user is at a rank.

I can calculate this value when calculating rating change but it is difficult to add this parameter column in the DB currently.

So tentatively, I use the shown formula to display performance on the browser and don't save them in the DB.

Finally, I deployed the fixed version of this app. Thank you.

jwvg0425 commented 4 years ago

ah, ok. I understand it. thank you for fix!