ap2822334's blog

By ap2822334, history, 10 days ago, In English

Hi everyone,

I've been doing some virtual contests recently, but it always annoyed me that i can't easily see what my rating change would have been or track my performance over time. So, I made a browser extension to do it. It basically adds a Virtuals tab to the top navbar that looks and feels exactly like the rest of Codeforces.

What it does:
- It takes your virtual and unrated submissions and calculates your simulated live rank (that is the rank you would have obtained if you had actually participated in the contest and performed almost the same).
- It calculates your performance rating and projected delta. I made sure to use the actual CF rating formulas for this—it implements the Bradley-Terry/Elo model, binary search for seeds, and the global deflation adjustments, so the math should be very accurate.
- It generates a rating graph for your virtual contests.
- It compares your recent form (last 5 contests) against your historical baseline to see if you're actually improving.

Everything runs locally in your browser using the public CF API, so it loads instantly and doesn't rely on any third-party servers. It also caches everything so you don't get rate-limited.

for images you can refer to github readme README

How to get it: It's not on the Chrome Web Store yet, but you can install it manually from my GitHub:

For chrome/brave users:-

clone the repo: codeforces vcon
then inside the codeforces-vcon folder run the command npm run vcon
Open chrome://extensions/ and turn on Developer mode.
Click "Load unpacked" and select the dist/chrome folder.

For Firefox users:-

clone the repo: codeforces vcon
then inside the codeforces-vcon folder run the command npm run vcon:f
Open Firefox and navigate to about:debugging#/runtime/this-firefox.
Click the Load Temporary Add-on... button and select the dist/firefox/maifest.json file

for the detailed info related to how calculations are being done refer to Calculations

Let me know what you guys think, or if you run into any bugs. Source code is on the GitHub repo if anyone wants to check out how the rating calculations are implemented.

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

»
10 days ago, hide # |
 
Vote: I like it 0 Vote: I do not like it

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

»
10 days ago, hide # |
 
Vote: I like it 0 Vote: I do not like it

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

»
10 days ago, hide # |
 
Vote: I like it 0 Vote: I do not like it

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

»
10 days ago, hide # |
 
Vote: I like it 0 Vote: I do not like it

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

»
10 days ago, hide # |
 
Vote: I like it 0 Vote: I do not like it

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

»
10 days ago, hide # |
 
Vote: I like it 0 Vote: I do not like it

peak

»
10 days ago, hide # |
 
Vote: I like it 0 Vote: I do not like it

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

»
10 days ago, hide # |
 
Vote: I like it 0 Vote: I do not like it

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

»
9 days ago, hide # |
 
Vote: I like it 0 Vote: I do not like it

This is great, works perfectly. So much easier than checking my rank manually after the contest is over, and it seems to match with the actual perf pretty well.

»
9 days ago, hide # |
 
Vote: I like it +1 Vote: I do not like it

sexxy!!

»
9 days ago, hide # |
 
Vote: I like it 0 Vote: I do not like it

their is one issue if you can fix it would be great, when a contestent rating is above div4 rating or div3 rating and still he is giving div3 or div4 virtual contest, then that rating graph should not change , it would be unrated virtual , as the same happens in real cf , so it would be great if you take this into account !!!!

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

    Hey, Thanks for the feedback, i really liked your idea, and have implemented it, to get the changes on the project folder in you ide or terminal just execute the command npm run vcon.

»
9 days ago, hide # |
Rev. 2  
Vote: I like it +1 Vote: I do not like it

Amazing extension!

»
8 days ago, hide # |
Rev. 2  
Vote: I like it 0 Vote: I do not like it

really helpful extension, something i would personally like to have is the option in the side bar to see combined virtual and rated contests that i have given.

I can't find any accurate extension to see my performance in a given rated contest (carrot doesn't work now), this extension using the same calculations for both rated and virtual will really allow for a better picture of progress.

It is really helpful work though what you have done, thanks.

»
7 days ago, hide # |
 
Vote: I like it 0 Vote: I do not like it

I just tried it, and honestly, this tool is fantastic.

A couple of quick ideas to make it better:

  • It’d be amazing to have an option to simulate virtual contests alongside real ones based on their original contest date vs. participation date. For instance, if I did three real contests in 2025 and a virtual one from 2022, let me sort by the 2022 date to see where it fits into the broader timeline
  • Adding a curve/toggle directly on the profile graph to visualize the hypothetical rating changes would take this to the next level
Spoiler
  • »
    »
    6 days ago, hide # ^ |
     
    Vote: I like it 0 Vote: I do not like it

    Hey, Thanks for the Feedback

    Just to confirm, do you mean that the rating graph should also display the hypothetical rating changes from virtual contests i.e., show where my rating would have gone if I had actually participated in those contests ? or you are asking for an option to sort by contest date only ??

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

      Thanks! I actually meant both together:

      Yes to showing the hypothetical rating changes on the graph as an optional curve/toggle

      The sorting part was about where to plot that point—giving users a toggle to either insert it at the original 2022 contest date (historical benchmark) or the 2025 date when I actually participated (chronological training progress).