1v1 Skill Rating for Esports
LootDiff is a competitive gaming platform where players stake USDC on 1v1 matches in CS2, Dota 2, and Deadlock. We needed a fair ranking system.
The Algorithm
Standard rating formula with esports modifications:
const K = 32 // Base K-factor
const expectedScore = 1 / (1 + Math.pow(10, (opponentElo - playerElo) / 400))
const newElo = playerElo + K * (actualScore - expectedScore)
Our Modifications
Stake-Weighted K-Factor
Higher stakes = more SR at risk. A $20 match matters more than a $1 match.
Game-Specific Adjustments
CS2 1v1s are more volatile than Dota 2 1v1s, so K-factors differ by game.
Placement Matches
New players get a higher K-factor for their first 10 matches to quickly reach their true skill level.
City Rankings
Players belong to cities. City SR is the average of top 10 players from that city. Creates regional rivalries.
Results
After thousands of matches, the system produces stable rankings where:
- Top players consistently beat lower-ranked opponents
- Upsets happen but don't wildly swing rankings
- New players reach their true rank within ~15 matches
Check the leaderboards: lootdiff.com
Have you implemented skill rating or similar ranking systems? What edge cases did you hit?













