
I trained a model on the entire history of LoLesports. Here are it's worlds predictions
Disclaimer: Claude was used for boilerplate, data collection, and validation scripts. All model design, architecture, and validation/testing method decisions are mine. This post is also 100% written by me.
I had this idea after looking at Riots official AWS power rankings for worlds. I liked the idea of using machine learning derived team rankings, but the AWS rankings place extreme weight on international performance only and don't react fast enough to real world changes with teams.
To fix this, I decided to train my own LightGBM model on every pro LoL game since 2013 (100k+ games). The first layer is a players rating engine. It's features are:
-player win loss/ratings, with kalman filter, adjusted for margin of victory and internationals
-player lane performance, residualized by the player's champion choice+all 9 other champs in the game to account for jungle/sup pressure, mid roams, utility picks vs lane win picks, etc.
-player damage share, again residualized by the other 9 champs
-allied and opposing team elos, lane matchup elo
Second layer is a Bradley-Terry elo system for the teams (AWS approach, but with proper domestic weighting) as a second opinion. These 2 layers are fed into a logistic regression that is trained on 2023 onward and refit monthly. Here are the testing results from my dataset:
| Prediction | All | 2025-01 to 2025-08 | 2025-09 onward |
|---|---|---|---|
| Ratings only | 0.6104 | ||
| Pre-draft game | 0.5964 | 0.5974 (n 8,478) | 0.5957 (n 11,050) |
| Post-draft game | 0.5917 | 0.5945 | 0.5896 |
| Series, calibrated | 0.5415 | 0.5460 (n 4,209) | 0.5377 (n 4,912) |
| Internationals, pre / post | 0.6146 / 0.6021 |
| Comparison | Model | Market | Verdict |
|---|---|---|---|
| Game pre-draft vs Polymarket (n ≈ 5,150) | 0.6011 | 0.6112 | model better |
| Game post-draft vs Polymarket | 0.5945 | 0.6104 | model better |
| Game pre-draft vs Kalshi (n ≈ 2,400) | 0.6101 | 0.6110 | tie (CI includes 0) |
| Game post-draft vs Kalshi | 0.6029 | 0.6037 | tie (CI includes 0) |
| Series vs Polymarket (n 3,173) | 0.5486 | 0.5526 | tie (CI includes 0) |
| Series vs Kalshi (n 1,783) | 0.5436 | 0.5439 | tie |
And here here are the model's 2026 worlds predictions, from 100,000 simulations:
T1 worlds buff caveat: T1 has over performed significantly at every worlds since 2021 versus the model's expected wins. From 2021, their wins over expected were +2.6,+1.6,+4.1,+4.8,+3.1. No other team showed anything like this in testing. Their total wins over expected is +16.2, the next highest is +5.8. It's possible there's some signal that the model is missing, but I couldn't find it. Current hypothesis is that T1 genuinely posses a worlds buff, likely from the fact that they are experimenting/backing off slightly domestically. Any fix I tried to make the model expect T1 to win more at worlds made all of the other predictions worse.
With that being said, these predictions contain a boost for T1 at 1/4th the observed strength over the past 5 years. Results like T1's at at the last 5 worlds would be expected to happen by chance less than 0.5% of the time, suggesting true underlying performance increase at worlds vs the rest of the year. This adjustment accounts for that without simply boosting their performance by the exact observed amount. With the full boost derived from worlds since 2021, T1 shows a 52%(!!!!) chance to win worlds.