Hello Codeforces!
I’m excited to share a tool I’ve been working on: CF Rating Predictor.
While many tools display official rating changes, we often lack a way to quantitatively represent the impact of our Virtual Participations (VP) during training. This tool integrates your actual contest history with your VP records to simulate a continuous rating trajectory, giving you a measurable view of your progress.
Live Demo: https://cf-vp-predictor-7pgzwzseurssuzy5uqktit.streamlit.app/ GitHub: https://github.com/vividStareium/cf-vp-predictor

Features
VP Integration: Automatically scans your submission history to find Virtual Participations and calculates their potential impact on your rating.
Smart Simulation Algorithm: For each VP, the tool finds "proxy" participants from the same contest with similar ratings to calculate a realistic rating Delta.
Unrated Contest Support: Includes logic to handle unrated scenarios based on rating caps and provides a toggle to show or hide these contests in the chart.
Advanced Visualization: Optimized chart rendering that handles "time-clustered" matches (contests occurring close in time) by dynamically calculating axis offsets to prevent overlapping.
Technical Highlights & Optimizations
Since Codeforces has a vast amount of contest data, I focused heavily on performance:
Storage Efficiency: Redesigned the data storage format for both memory and disk using compact structures, significantly reducing resource pressure.
Concurrency: Implemented batched requests using ThreadPoolExecutor to speed up data fetching while remaining stable and respecting API rate limits.
Lazy Loading: Contest data is synced to the local cache only when needed, ensuring the initial load is as fast as possible.
How to use
Enter your Handle.
Set your Initial Rating (the rating you had before your first recorded contest/VP).
Toggle "Show Official Rating Comparison" to see the gap between your real path and the simulated one.
I'd love to hear your feedback or suggestions for new features!
Update (2025-01-09): Enhanced Data Synchronization
Based on user feedback regarding data caching issues, I have pushed a significant update to the Cache Management system:
New "Refresh Personal Data" Button: I replaced the generic "Clear Cache" button with a smart refresh feature.
Fix for Recent VPs: Previously, if you participated virtually in a contest and then re-checked immediately, the data might not update due to disk caching. This update ensures that clicking the refresh button forces a re-fetch of your latest rank and VP status.
Fix for "Handle Not Found": Solves edge cases where a handle was incorrectly cached as "invalid" or "no data."




