CompStrength blends recent patch-weighted pro play with solo queue performance, plus champion-pair synergy and lane matchup history, into a logistic model of blue-side win probability — and, when you optionally select the two teams, adds team Elo, per-player Elo, and player-champion comfort from the inferred starting fives. The numbers below come from holding out games the model never trained on.
Current season (16.x patches, 6,039 held-out games)
With teams: 65.9% (log-loss 0.622) · Draft only: 55.5% (log-loss 0.683) · baseline 53%
This slice matches what predictions face today: current-season games, with all prior history available for training. The headline metrics above average over the full multi-season walk-forward (including early folds where the model had little history), so they run lower.
With teams vs. draft only (same held-out games)
| Inputs | Accuracy | Log loss | Brier |
|---|---|---|---|
| Teams + draft | 64.7% | 0.633 | 0.221 |
| Draft only | 54.2% | 0.687 | 0.247 |
Team strength carries most of the predictable signal in pro play; the draft refines it. “Teams + draft” uses three history signals that all ride on the team selection: team Elo over the game history, per-player Elo of the five starters (tracks roster moves the team rating smooths over), and each player's record on the champion they're drafting (comfort picks). Select both teams on the draft builder to get the top row's model — the starting five is pre-filled from each team's most recent game and you can edit any seat to swap in a substitute.
Aren't multi-season team ratings stale, since rosters change? We tested exactly that. Rebuilding team strength from the current season ONLY (resetting every rating at the year boundary) scores 62.9% — 2.3 points WORSE than keeping prior-season history. The reason is subtle: teams churn, but players don't. When both team and player ratings are reset, accuracy craters; keep the players' individual histories and it recovers almost entirely. Last season stays informative because the same people are still playing — which is the whole point of the per-player Elo feature. A mild discount on old team ratings is optimal (the shipped carryover keeps 70% of a team's prior-season deviation), but throwing last season away is strictly worse.
Fold 1/8 skipped: insufficient train/test data (train_games=0, test_games=2010). Walk-forward validation on real Oracle's Elixir pro-match data (14,067 held-out games; newest patch 16.x = 2026 season). Each fold refits the entire pipeline using only games strictly before that fold, so there is no lookahead leakage. Draft-only prediction (champions picked, no in-game state) is a genuinely weak signal at the pro level -- treat accuracy a few points above the pick-majority baseline as expected, not a bug.
It's tempting to think a hard counter-pick (Renekton into Shen, Ashe into Teemo) should let a draft-only model predict much better than ~55%. We tested that directly, with a leak-free walk-forward harness (each model trained only on games strictly before the games it's scored on), and none of these beat the shipped model on both accuracy and calibration:
The honest conclusion: at the pro level, which champions get drafted is a genuinely weak predictor once you can't see who's piloting them. That's exactly why the “teams + players” model jumps ~10 points to ~66% — the predictable signal lives in team and player identity, not the champion select screen. Disaster drafts are real but rare (a handful per season), so even predicting every one perfectly moves aggregate accuracy under a point.
Should it train on the current season only? We measured that too. Training on this season alone (walk-forward within it) scores 63.7% with teams, ~2 points BELOW the shipped model that also uses last season as history — the early-season games starve without it. More recent-weighted data doesn't beat the current recency decay; less data just loses signal.
International events (MSI / Worlds / EWC) are the hardest. Held-out accuracy on cross-region events runs well below regional play — ~57% aggregate (EWC 66%, Worlds 58%, MSI ~52% on a tiny 80-game sample) vs 65% inside a single league. The cause is structural: team Elo only bridges regions through the handful of inter-region games, so when the best of two regions meet the rating gap is genuinely uncertain. We help it where we can — inter-region games (an international league, or any game where the two teams' home leagues differ) move Elo 3× as much, since they're the only games that calibrate strength across regions. That lifted held-out international accuracy 55.7% → 56.5% and improved its calibration (log-loss 0.715 → 0.714) with no cost to regional games — a real but modest gain; cross-region prediction stays fundamentally data-starved. The draft builder flags these matchups so you can weight them accordingly.
Every prediction shows fair decimal odds (1 ÷ probability) for each side. If a bookmaker offers longer odds than the fair number on a side, the model sees positive expected value on that side — before costs.
Be honest about the bar: a bookmaker's implied probabilities contain a built-in margin (typically ~4–7% across both sides), and closing lines on major leagues are sharp. To profit you need the model's calibration edge to exceed that margin consistently — check the log-loss and calibration table above, not just accuracy, and treat small-sample leagues (see the breakdown below) with extra skepticism. One structural caveat: team Elo is anchored across leagues only by the few inter-league games (MSI, Worlds, EWC), so ratings are most trustworthy for matchups WITHIN a league or at international events — an isolated league's ratings can drift high or low as a block. Nothing on this page is betting advice; it's a measured, walk-forward-validated probability estimate with known error bars.
16,077real professional games, drawn from the leagues and patches below. More recent patches are weighted exponentially more (the “weight” column is each patch's share of full weight); older games still contribute, just less. On top of that, premier leagues (LCK + LPL) are up-weighted to carry ~70% of the total training weight, and international events (MSI/Worlds/EWC) get their own boost — so the champion statistics reflect the highest level of play even though minor leagues supply more raw games.
| Patch | Games | Weight |
|---|---|---|
| 16.13 | 103 | 100% |
| 16.12 | 27 | 50% |
| 16.11 | 383 | 25% |
| 16.10 | 795 | 13% |
| 16.09 | 747 | 6% |
| 16.08 | 700 | 3% |
| 16.07 | 730 | 2% |
| 16.06 | 326 | 1% |
| 16.05 | 306 | 0% |
| 16.04 | 320 | 0% |
| 16.03 | 623 | 0% |
| 16.02 | 546 | 0% |
| 16.01 | 433 | 0% |
| 15.24 | 75 | 0% |
| 15.23 | 56 | 0% |
| 15.22 | 19 | 0% |
| 15.21 | 60 | 0% |
| 15.20 | 192 | 0% |
| 15.19 | 378 | 0% |
| 15.18 | 180 | 0% |
| 15.17 | 622 | 0% |
| 15.16 | 613 | 0% |
| 15.15 | 637 | 0% |
| 15.14 | 598 | 0% |
| 15.13 | 385 | 0% |
| 15.12 | 166 | 0% |
| 15.11 | 445 | 0% |
| 15.10 | 652 | 0% |
| 15.09 | 875 | 0% |
| 15.08 | 796 | 0% |
| 15.07 | 820 | 0% |
| 15.06 | 464 | 0% |
| 15.05 | 214 | 0% |
| 15.04 | 371 | 0% |
| 15.03 | 569 | 0% |
| 15.02 | 536 | 0% |
| 15.01 | 315 | 0% |
| League | Games |
|---|---|
| LPL | 1,258 |
| LCK | 904 |
| LCKC | 880 |
| EM | 723 |
| LAS | 716 |
| LJL | 700 |
| LEC | 552 |
| AL | 545 |
| LFL | 497 |
| LCP | 494 |
| PRM | 481 |
| CD | 465 |
+ 39 more leagues
The same walk-forward held-out predictions, split by patch and by league. “Edge” is accuracy minus that segment's own pick-majority baseline — a positive edge means the model beat simply guessing the more common outcome there. Per-segment numbers are noisier the fewer games the segment has.
| Patch | Games | Accuracy | Baseline | Edge | Log loss |
|---|---|---|---|---|---|
| 16.13 | 103 | 68.9% | 65% | +3.9pp | 0.644 |
| 16.11 | 383 | 59.5% | 57.4% | +2.1pp | 0.651 |
| 16.10 | 795 | 67% | 51.2% | +15.8pp | 0.614 |
| 16.09 | 747 | 66.5% | 53% | +13.5pp | 0.607 |
| 16.08 | 700 | 69% | 53.3% | +15.7pp | 0.593 |
| 16.07 | 730 | 68.2% | 54.7% | +13.6pp | 0.615 |
| 16.06 | 326 | 69.3% | 55.8% | +13.5pp | 0.589 |
| 16.05 | 306 | 65% | 54.9% | +10.1pp | 0.636 |
| 16.04 | 320 | 62.8% | 51.9% | +10.9pp | 0.637 |
| 16.03 | 623 | 64.7% | 53.5% | +11.2pp | 0.637 |
| 16.02 | 546 | 65% | 51.8% | +13.2pp | 0.627 |
| 16.01 | 433 | 62.4% | 51.7% | +10.6pp | 0.664 |
| 15.24 | 75 | 38.7% | 56% | -17.3pp | 0.858 |
| 15.23 | 56 | 60.7% | 55.4% | +5.4pp | 0.684 |
| 15.21 | 60 | 78.3% | 63.3% | +15.0pp | 0.566 |
| 15.20 | 192 | 60.4% | 50% | +10.4pp | 0.623 |
| 15.19 | 378 | 59.3% | 55.6% | +3.7pp | 0.693 |
| 15.18 | 180 | 61.7% | 50.6% | +11.1pp | 0.659 |
| 15.17 | 622 | 57.7% | 53.4% | +4.3pp | 0.689 |
| 15.16 | 613 | 66.9% | 52.4% | +14.5pp | 0.621 |
| 15.15 | 637 | 64.2% | 52.7% | +11.5pp | 0.619 |
| 15.14 | 598 | 66.2% | 52% | +14.2pp | 0.623 |
| 15.13 | 385 | 61.6% | 54.3% | +7.3pp | 0.674 |
| 15.12 | 166 | 56.6% | 53.6% | +3.0pp | 0.731 |
| 15.11 | 445 | 61.1% | 51.7% | +9.4pp | 0.687 |
| 15.10 | 652 | 64.4% | 55.7% | +8.7pp | 0.630 |
| 15.09 | 875 | 67.8% | 52.2% | +15.5pp | 0.611 |
| 15.08 | 796 | 66.1% | 55.3% | +10.8pp | 0.615 |
| 15.07 | 820 | 64.8% | 53.5% | +11.2pp | 0.620 |
| 15.06 | 424 | 65.3% | 51.9% | +13.4pp | 0.631 |
| 15.05 | 35 | 68.6% | 62.9% | +5.7pp | 0.670 |
| Other (2 smaller) | 46 | 54.3% | 52.2% | +2.2pp | 0.678 |
| League | Games | Accuracy | Baseline | Edge | Log loss |
|---|---|---|---|---|---|
| LPL | 1,118 | 62.6% | 52.8% | +9.8pp | 0.667 |
| LCK | 795 | 68.2% | 52.2% | +16.0pp | 0.600 |
| LCKC | 773 | 59.9% | 52.3% | +7.6pp | 0.676 |
| LAS | 716 | 70.4% | 52.4% | +18.0pp | 0.578 |
| EM | 652 | 61% | 56.3% | +4.8pp | 0.672 |
| LJL | 586 | 70.5% | 50.5% | +20.0pp | 0.555 |
| LEC | 468 | 67.1% | 54.5% | +12.6pp | 0.635 |
| AL | 452 | 67% | 55.3% | +11.7pp | 0.606 |
| NACL | 442 | 64.3% | 54.1% | +10.2pp | 0.644 |
| LFL | 434 | 62.9% | 55.1% | +7.8pp | 0.652 |
| CD | 419 | 61.1% | 50.8% | +10.3pp | 0.677 |
| PRM | 413 | 60.8% | 58.6% | +2.2pp | 0.650 |
| LCP | 405 | 67.7% | 52.8% | +14.8pp | 0.608 |
| ROL | 334 | 70.7% | 53% | +17.7pp | 0.582 |
| HLL | 310 | 70% | 54.5% | +15.5pp | 0.586 |
| TCL | 305 | 64.9% | 56.1% | +8.9pp | 0.636 |
| HC | 299 | 64.2% | 56.9% | +7.4pp | 0.637 |
| LIT | 291 | 64.9% | 50.5% | +14.4pp | 0.637 |
| RL | 289 | 63.7% | 50.5% | +13.1pp | 0.640 |
| EBL | 284 | 70.4% | 52.8% | +17.6pp | 0.554 |
| HM | 278 | 71.6% | 51.8% | +19.8pp | 0.548 |
| NLC | 277 | 70.8% | 52.7% | +18.1pp | 0.568 |
| PCS | 263 | 68.4% | 50.6% | +17.9pp | 0.605 |
| LRS | 256 | 63.3% | 55.5% | +7.8pp | 0.645 |
| LRN | 249 | 62.7% | 51.8% | +10.8pp | 0.636 |
| Asia Master | 240 | 48.8% | 54.6% | -5.8pp | 0.789 |
| EWC | 214 | 67.3% | 54.2% | +13.1pp | 0.630 |
| VCS | 213 | 62% | 51.6% | +10.3pp | 0.634 |
| LPLOL | 199 | 67.3% | 51.3% | +16.1pp | 0.625 |
| LTA S | 192 | 56.3% | 51.6% | +4.7pp | 0.698 |
| LTA N | 188 | 64.9% | 52.7% | +12.2pp | 0.634 |
| LVP SL | 183 | 66.1% | 61.2% | +4.9pp | 0.656 |
| CBLOL | 173 | 59.5% | 56.6% | +2.9pp | 0.671 |
| LFL2 | 157 | 58.6% | 55.4% | +3.2pp | 0.673 |
| LCS | 157 | 64.3% | 54.8% | +9.6pp | 0.629 |
| MSI | 118 | 57.6% | 57.6% | +0.0pp | 0.681 |
| LES | 104 | 70.2% | 51.9% | +18.3pp | 0.579 |
| HW | 103 | 66% | 58.3% | +7.8pp | 0.631 |
| NEXO | 101 | 67.3% | 56.4% | +10.9pp | 0.624 |
| WLDs | 96 | 59.4% | 51% | +8.3pp | 0.661 |
| DCup | 75 | 38.7% | 56% | -17.3pp | 0.858 |
| PRMP | 73 | 57.5% | 53.4% | +4.1pp | 0.638 |
| NL | 71 | 71.8% | 56.3% | +15.5pp | 0.622 |
| KeSPA | 56 | 60.7% | 55.4% | +5.4pp | 0.684 |
| CT | 50 | 68% | 56% | +12.0pp | 0.603 |
| FST | 45 | 64.4% | 66.7% | -2.2pp | 0.616 |
| ASI | 42 | 45.2% | 59.5% | -14.3pp | 0.768 |
| CCWS | 40 | 52.5% | 60% | -7.5pp | 0.666 |
| Other (3 smaller) | 69 | 68.1% | 56.5% | +11.6pp | 0.641 |
For predictions bucketed by predicted win probability, how often did the predicted side actually win?
| Predicted bucket | Predicted mean | Actual win rate | Count |
|---|---|---|---|
| 0.0-0.2 | 13.7% | 22% | 708 |
| 0.2-0.4 | 31.7% | 34.2% | 2592 |
| 0.4-0.6 | 50.6% | 48.5% | 5050 |
| 0.6-0.8 | 68.7% | 66% | 4323 |
| 0.8-1.0 | 86.2% | 80.9% | 1394 |