Changelog

×

Version 1.0.2 Minor Update

October 23, 2025

Frontend

  • [Improved] Misc styling changes.
  • [Improved] About page explaining how calculations are made.

Algorithm

  • No changes.

Version 1.0.1 Minor Update

October 06, 2025

Frontend

  • [Added] Country flags for drivers & constructors.
  • [Added] About button in menu.
  • [Added] Changelog button in menu.
  • [Added] Displaying total calculations on homepage footer, and per-race calculations count on race results pages.
  • [Improved] Event search menu design.
  • [Improved] Hamburger menu design.
  • [Fixed] Removed empty sprint qualifying & sprint shootout from search results.

Algorithm

  • [Added] Historical weighting to team performance for stability.
  • [Added] Raw vs. modified ELO logging for auditing.
  • [Fixed] Enforced zero-cap on DNF ELO changes to prevent positive gains.

Version 1.0.0 Initial Release

October 02, 2025

  • Initial release with driver rankings and race results.
1
đŸ‡ŗđŸ‡ą Max VERSTAPPEN
đŸ‡Ļ🇹 Red Bull Racing
81 entries
Max VERSTAPPEN
2123
2
đŸ‡Ŧ🇧 Lando NORRIS
đŸ‡Ŧ🇧 McLaren
81 entries
Lando NORRIS
2054
3
🇲🇨 Charles LECLERC
🇮🇹 Ferrari
78 entries
Charles LECLERC
2048
4
đŸ‡Ŧ🇧 George RUSSELL
🇩đŸ‡Ē Mercedes
81 entries
George RUSSELL
2033
5
đŸ‡ĻđŸ‡ē Oscar PIASTRI
đŸ‡Ŧ🇧 McLaren
81 entries
Oscar PIASTRI
2008
6
đŸ‡Ŧ🇧 Lewis HAMILTON
🇮🇹 Ferrari
80 entries
Lewis HAMILTON
1928
7
đŸ‡Ē🇸 Carlos SAINZ
đŸ‡Ŧ🇧 Williams
78 entries
Carlos SAINZ
1915
8
🇲đŸ‡Ŋ Sergio PEREZ
đŸ‡Ļ🇹 Red Bull Racing
58 entries
Sergio PEREZ
1792
9
🇹🇭 Alexander ALBON
đŸ‡Ŧ🇧 Williams
80 entries
Alexander ALBON
1733
10
🇩đŸ‡Ē Nico HULKENBERG
🇨🇭 Kick Sauber
78 entries
Nico HULKENBERG
1719
11
đŸ‡Ē🇸 Fernando ALONSO
đŸ‡Ŧ🇧 Aston Martin
81 entries
Fernando ALONSO
1713
12
đŸ‡Ģ🇷 Isack HADJAR
🇮🇹 Racing Bulls
22 entries
Isack HADJAR
1689
13
đŸ‡Ģ🇷 Pierre GASLY
đŸ‡Ģ🇷 Alpine
79 entries
Pierre GASLY
1655
14
đŸ‡ŗđŸ‡ŋ Liam LAWSON
🇮🇹 Racing Bulls
32 entries
Liam LAWSON
1653
15
đŸ‡Ģ🇷 Esteban OCON
đŸ‡ē🇸 Haas F1 Team
80 entries
Esteban OCON
1643
16
🇮🇹 Kimi ANTONELLI
🇩đŸ‡Ē Mercedes
23 entries
Kimi ANTONELLI
1638
17
🇨đŸ‡Ļ Lance STROLL
đŸ‡Ŧ🇧 Aston Martin
78 entries
Lance STROLL
1637
18
🇩🇰 Kevin MAGNUSSEN
đŸ‡ē🇸 Haas F1 Team
55 entries
Kevin MAGNUSSEN
1620
19
đŸ‡Ŧ🇧 Oliver BEARMAN
đŸ‡ē🇸 Haas F1 Team
23 entries
Oliver BEARMAN
1608
20
đŸ‡¯đŸ‡ĩ Yuki TSUNODA
đŸ‡Ļ🇹 Red Bull Racing
80 entries
Yuki TSUNODA
1583
21
🇧🇷 Gabriel BORTOLETO
🇨🇭 Kick Sauber
23 entries
Gabriel BORTOLETO
1568
22
đŸ‡Ļ🇷 Franco COLAPINTO
đŸ‡Ģ🇷 Alpine
26 entries
1536
23
đŸ‡ĻđŸ‡ē Daniel RICCIARDO
🇮🇹 RB
31 entries
Daniel RICCIARDO
1532
24
đŸ‡¯đŸ‡ĩ Ryo HIRAKAWA
đŸ‡ē🇸 Haas F1 Team
3 entries
1510
25
đŸ‡Ģ🇮 Valtteri BOTTAS
🇨🇭 Kick Sauber
58 entries
Valtteri BOTTAS
1498
26
đŸ‡¯đŸ‡ĩ Ayumu IWASA
🇮🇹 RB
6 entries
1490
27
đŸ‡ĻđŸ‡ē Jack DOOHAN
đŸ‡Ģ🇷 Alpine
8 entries
Jack DOOHAN
1476
28
đŸ‡¨đŸ‡ŗ ZHOU Guanyu
🇨🇭 Kick Sauber
58 entries
ZHOU Guanyu
1456
29
đŸ‡ŗđŸ‡ą Nyck DE VRIES
🇮🇹 AlphaTauri
12 entries
Nyck DE VRIES
1418
30
đŸ‡ē🇸 Logan SARGEANT
đŸ‡Ŧ🇧 Williams
44 entries
Logan SARGEANT
1383

Event Search

×

About DRS

×

Dynamic Rating System (DRS)

DRS is an ELO-inspired rating engine for motorsports racing. It measures how far a driver exceeds or falls short of expectations in every race — not just who wins, but how much better (or worse) they did than their car, form, and rivals suggest they should have.

1. Expected Performance

For every driver in the race, we calculate their expected win probability against every other driver using the classic ELO formula:

Expected = 1 / (1 + 10(OpponentElo - MyElo)/400)

Then average all those expected scores → this is what the driver “should” have achieved based purely on current skill rating.

In Simple Terms: “If Max has 2000 Elo and Zhou has 1400, Max is expected to beat Zhou ~91% of the time. We do this for every pair in the race and average it. That’s the bar the driver has to clear.”

2. Actual Performance

Turns finishing position into a 0–1 score:

  • Normalized = (total drivers - position) / (total - 1) → P1 = 1.0, last = 0.0
  • Score = Normalized^1.2 (slightly rewards higher finishes more)
  • Points bonus: P1–P10 get up to +0.3 extra
  • Teammate beat: +0.10 (backmarker teams get +0.05 extra)
  • Finish multiplier: ×1.05 for finishing
  • DNF: 0.1 + (laps completed / 60) × 0.3 × team reliability factor
In Simple Terms: “P1 isn’t just ‘1st’, it’s a near-perfect score. Beating your teammate? Extra credit. Crashing out on lap 1? Barely any points. Finishing lap 50 of 60? You get partial credit — not zero.”

3. Performance Difference

Diff = Actual Score – Expected Score

Positive = outperformed expectations. Negative = underperformed.

In Simple Terms: “Did the driver do better than their rating said they would? That’s the gap we care about.”

4. Dynamic K-Factor (Learning Rate)

Base = 28. Then adjusted:

  • High Elo (>1900) → ×0.7 (slow learning)
  • Low Elo (<1400) → ×1.4 (fast learning)
  • Podium → ×1.4 | P4–P10 → ×1.2 | Back of grid → ×1.1
  • Smaller field → lower K | Tighter competition → higher K

Final K clamped between 15 and 45.

In Simple Terms: “Rookies and backmarkers change rating faster. A podium in a chaotic race? Big swing. A veteran cruising to P8? Small tweak.”

5. Modifiers

  • Race Weight (1.0–1.5): Bigger fields, closer Elo spread, more top drivers → more important race → bigger Elo swings.
  • Reliability Factor: DNF → ~0.7–0.9 (less penalty if car is unreliable or many laps done). Finish → ×1.03.
  • Team Expectation: Did you beat your team’s average? Sigmoid curve gives 0.6–1.4× boost/penalty.
In Simple Terms: “A DNF in a fragile car hurts less. Beating your teammate when both cars are slow? That’s huge. Crashing a bulletproof Red Bull? Ouch.”

6. Intelligent Capping

  • Standard: Âą25 Elo
  • Backmarker upside → up to +30, downside only -15
  • DNF → no positive gain
  • Exceptional: (e.g. backmarker in P4) → up to +40
  • Catastrophic: (e.g. 1950 Elo driver P17) → down to -30
In Simple Terms: “No one jumps +100 for one miracle. But a Haas in the points? That’s worth celebrating. A Ferrari in the wall? That stings — but not endlessly.”

Full Calculation Flow (per driver)

  1. Build team strength (current + 60% historical)
  2. Expected = average win-probability vs all others
  3. Actual = position → score + bonuses
  4. Diff = Actual – Expected
  5. Raw Change = K × Diff
  6. Apply: Race Weight × Reliability × Team Expectation
  7. Cap intelligently → Final Elo change
In Simple Terms: “It’s not just ‘you finished P5’. It’s: ‘You were expected to be P12 in that car. You beat your teammate. The car usually breaks. You finished. Here’s +32 Elo.’”

Examples

Exceptional: Backmarker P4

Expected: 0.15 → Actual: 0.78 → Diff: +0.63 → K: 38 → Raw: +24 → Exceptional cap → +38 Elo

Catastrophic: Top driver P17

Expected: 0.82 → Actual: 0.12 → Diff: -0.70 → K: 22 → Raw: -15 → Catastrophic → -28 Elo

DNF with 42/66 laps

Actual: ~0.29 → Expected: 0.55 → Diff: -0.26 → K: 30 → Reliability: 0.84 → Final: -6 Elo

The Idea: Reward drivers for punching above their weight. Penalize underperformance — but fairly, with context. The system learns and self-corrects over time.