Overview
The weekly recap system provides three key analytical components for tracking World Cup season progress:
- Elo Change Tracking - Monitors week-over-week changes in athlete Elo ratings
- Season Simulation - Monte Carlo simulation of remaining season outcomes
- Magic Numbers - Mathematical elimination thresholds for the overall standings
This methodology applies to all winter sports covered: Alpine, Biathlon, Cross-Country, Nordic Combined, and Ski Jumping.
Elo Change Tracking
Purpose
Track the changes in Elo ratings for athletes who have competed in the last week.
Calculation
For each athlete who competed in the past week:
Elo_Change = Current_Elo - Previous_Week_Elo
Where:
Current_Elois the athlete’s Elo rating after their most recent racePrevious_Week_Elois the athlete’s Elo rating from 7+ days ago
Output
The weekly Elo change report includes:
- Skier: Athlete name
- Nation: Country code
- Current Elo: Most recent overall Elo rating
- Previous Elo: Elo rating from 7+ days ago
- Change: Difference between current and previous Elo
Season Simulation
Purpose
Estimate the probability distribution of final season standings by simulating the remaining races thousands of times using Monte Carlo methods.
Methodology
Remaining Races Calculation
The system dynamically calculates remaining races from the official race calendar by:
- Reading the races CSV file containing the full season schedule
- Filtering for races with
Date >= today(using UTC time) - Excluding championship races (
Championship != 1) - Excluding team events (relays, team sprints)
- Categorizing races by type and point value
Cross-Country Point Values:
- World Cup races: 100 points maximum
- Stage races: 50 points maximum
- Tour de Ski stages: 300 points maximum
Other Sports:
- Alpine: 100 points maximum per race
- Biathlon: 90 points maximum per race (60 base + 30 bonus)
- Nordic Combined: 100 points maximum per race
- Ski Jumping: 100 points maximum per race
Historical Performance Modeling
For each athlete, the simulation uses their 10 most recent races of each type to model expected performance. The system:
- Retrieves the athlete’s points history for each race type (distance/sprint categories)
- Uses exponentially weighted recent performances (more recent races weighted higher)
- Falls back to overall race type history if discipline-specific data is insufficient
Single Race Simulation
Each race is simulated using:
Simulated_Points = Mean_Historical_Points + N(0, σ)
Where:
Mean_Historical_Pointsis the weighted average of recent performancesN(0, σ)is normally distributed noise withσ = max(5, Mean_Points × 0.15)- Results are bounded to
[0, Max_Points]for the race type
The 15% coefficient of variation captures the inherent uncertainty in race outcomes while the minimum standard deviation of 5 points ensures variability even for low-scoring athletes.
Monte Carlo Simulation
The full simulation process:
- Initialize each athlete’s total with their current season points
- For each of
nsimulations (default: 100-500):- For each remaining race:
- Determine if each athlete participates using their participation probability (based on exponentially-weighted historical participation in that race type)
- For participating athletes, simulate points based on historical performance
- Add simulated points to running totals
- Record final standings
- For each remaining race:
- Calculate win probability as
(Simulations_Won / Total_Simulations)
The participation probability ensures that athletes who frequently skip certain race types (e.g., sprinters skipping distance races) are modeled realistically.
Output Metrics
The simulation produces:
- Current Points: Actual points in current standings
- Mean Final Points: Average total points across all simulations
- Mean Points Gained: Expected points from remaining races
- Win Probability: Percentage of simulations where athlete finishes first
Magic Numbers
Purpose
Calculate the “magic number” - the minimum points the current leader needs to mathematically clinch the overall title over each competitor.
Mathematical Definition
For each athlete still mathematically alive in the standings:
Magic_Number = max(0, Athlete_Points + Points_Remaining + 1 - Leader_Points)
Where:
Athlete_Pointsis the competitor’s current season pointsPoints_Remainingis the maximum points available in remaining racesLeader_Pointsis the current leader’s season points- The
+1ensures the leader must have strictly more points
Interpretation
The magic number answers: “If this athlete wins every remaining race, how many points does the leader need to clinch the title?”
Example:
- Leader has 1,500 points
- Athlete B has 1,200 points
- 600 points remaining in season
- Magic Number = 1,200 + 600 + 1 - 1,500 = 301
This means if the leader gains 301 more points than Athlete B in remaining races, Athlete B is mathematically eliminated.
Mathematical Elimination
An athlete is mathematically eliminated when:
Max_Possible_Points = Current_Points + Points_Remaining
Mathematical_Chance = (Max_Possible_Points > Leader_Points)
If Mathematical_Chance = FALSE, the athlete cannot win even by winning all remaining races.
Points Remaining Calculation
Cross-Country:
Total_Remaining = (WC_Races × 100) + (Stage_Races × 50) + (TdS_Stages × 300)
Alpine:
Total_Remaining = Total_Races × 100
Biathlon:
Total_Remaining = Total_Races × 90
Nordic Combined / Ski Jumping:
Total_Remaining = Total_Races × 100
Output
The magic numbers report includes only athletes with a mathematical chance, showing:
- Skier: Athlete name
- Rank: Current position in standings
- Points: Current season points
- Magic #: Points leader needs to clinch over this athlete