Methodology & backtest

← Back to draft builder

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.

Headline metrics

Accuracy
64.7%
vs. 53.1% baseline
Log loss
0.633
vs. 0.693 coin-flip
Brier score
0.221
lower is better
Folds
7
Test games
14067
Generated
7/5/2026

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)

InputsAccuracyLog lossBrier
Teams + draft64.7%0.6330.221
Draft only54.2%0.6870.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.

Why draft-only sits near 55% (what we tested)

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:

  • Solo-queue counter-picks. A dense champion-vs-champion lane-matchup prior from ~9,900 solo-queue pairs (emerald+, far more than pro data ever sees). Result: no change (54.7% → 54.7%). Pro lane outcomes are dominated by team coordination, not the solo matchup.
  • Off-meta / off-role picks. Flagging picks played out of their usual role (the “Ashe top” signal). Nudged accuracy up ~0.3pp but hurt calibration — directionally real, too noisy to trust as a probability.
  • More history.Training on 3–4 seasons instead of 2. No gain: recency decay already fades old seasons to near-zero weight.
  • League effects & pick order. Per-league blue-side bias, region-local metas, and pro pick-order (who counter-picked whom). All within noise or accuracy-up/calibration-down.

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.

Comparing against bookmaker odds

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.

Data the model is built on

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.

By patch

PatchGamesWeight
16.13103100%
16.122750%
16.1138325%
16.1079513%
16.097476%
16.087003%
16.077302%
16.063261%
16.053060%
16.043200%
16.036230%
16.025460%
16.014330%
15.24750%
15.23560%
15.22190%
15.21600%
15.201920%
15.193780%
15.181800%
15.176220%
15.166130%
15.156370%
15.145980%
15.133850%
15.121660%
15.114450%
15.106520%
15.098750%
15.087960%
15.078200%
15.064640%
15.052140%
15.043710%
15.035690%
15.025360%
15.013150%

By league (top 12)

LeagueGames
LPL1,258
LCK904
LCKC880
EM723
LAS716
LJL700
LEC552
AL545
LFL497
LCP494
PRM481
CD465

+ 39 more leagues

Held-out accuracy by segment

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.

By patch

PatchGamesAccuracyBaselineEdgeLog loss
16.1310368.9%65%+3.9pp0.644
16.1138359.5%57.4%+2.1pp0.651
16.1079567%51.2%+15.8pp0.614
16.0974766.5%53%+13.5pp0.607
16.0870069%53.3%+15.7pp0.593
16.0773068.2%54.7%+13.6pp0.615
16.0632669.3%55.8%+13.5pp0.589
16.0530665%54.9%+10.1pp0.636
16.0432062.8%51.9%+10.9pp0.637
16.0362364.7%53.5%+11.2pp0.637
16.0254665%51.8%+13.2pp0.627
16.0143362.4%51.7%+10.6pp0.664
15.247538.7%56%-17.3pp0.858
15.235660.7%55.4%+5.4pp0.684
15.216078.3%63.3%+15.0pp0.566
15.2019260.4%50%+10.4pp0.623
15.1937859.3%55.6%+3.7pp0.693
15.1818061.7%50.6%+11.1pp0.659
15.1762257.7%53.4%+4.3pp0.689
15.1661366.9%52.4%+14.5pp0.621
15.1563764.2%52.7%+11.5pp0.619
15.1459866.2%52%+14.2pp0.623
15.1338561.6%54.3%+7.3pp0.674
15.1216656.6%53.6%+3.0pp0.731
15.1144561.1%51.7%+9.4pp0.687
15.1065264.4%55.7%+8.7pp0.630
15.0987567.8%52.2%+15.5pp0.611
15.0879666.1%55.3%+10.8pp0.615
15.0782064.8%53.5%+11.2pp0.620
15.0642465.3%51.9%+13.4pp0.631
15.053568.6%62.9%+5.7pp0.670
Other (2 smaller)4654.3%52.2%+2.2pp0.678

By league

LeagueGamesAccuracyBaselineEdgeLog loss
LPL1,11862.6%52.8%+9.8pp0.667
LCK79568.2%52.2%+16.0pp0.600
LCKC77359.9%52.3%+7.6pp0.676
LAS71670.4%52.4%+18.0pp0.578
EM65261%56.3%+4.8pp0.672
LJL58670.5%50.5%+20.0pp0.555
LEC46867.1%54.5%+12.6pp0.635
AL45267%55.3%+11.7pp0.606
NACL44264.3%54.1%+10.2pp0.644
LFL43462.9%55.1%+7.8pp0.652
CD41961.1%50.8%+10.3pp0.677
PRM41360.8%58.6%+2.2pp0.650
LCP40567.7%52.8%+14.8pp0.608
ROL33470.7%53%+17.7pp0.582
HLL31070%54.5%+15.5pp0.586
TCL30564.9%56.1%+8.9pp0.636
HC29964.2%56.9%+7.4pp0.637
LIT29164.9%50.5%+14.4pp0.637
RL28963.7%50.5%+13.1pp0.640
EBL28470.4%52.8%+17.6pp0.554
HM27871.6%51.8%+19.8pp0.548
NLC27770.8%52.7%+18.1pp0.568
PCS26368.4%50.6%+17.9pp0.605
LRS25663.3%55.5%+7.8pp0.645
LRN24962.7%51.8%+10.8pp0.636
Asia Master24048.8%54.6%-5.8pp0.789
EWC21467.3%54.2%+13.1pp0.630
VCS21362%51.6%+10.3pp0.634
LPLOL19967.3%51.3%+16.1pp0.625
LTA S19256.3%51.6%+4.7pp0.698
LTA N18864.9%52.7%+12.2pp0.634
LVP SL18366.1%61.2%+4.9pp0.656
CBLOL17359.5%56.6%+2.9pp0.671
LFL215758.6%55.4%+3.2pp0.673
LCS15764.3%54.8%+9.6pp0.629
MSI11857.6%57.6%+0.0pp0.681
LES10470.2%51.9%+18.3pp0.579
HW10366%58.3%+7.8pp0.631
NEXO10167.3%56.4%+10.9pp0.624
WLDs9659.4%51%+8.3pp0.661
DCup7538.7%56%-17.3pp0.858
PRMP7357.5%53.4%+4.1pp0.638
NL7171.8%56.3%+15.5pp0.622
KeSPA5660.7%55.4%+5.4pp0.684
CT5068%56%+12.0pp0.603
FST4564.4%66.7%-2.2pp0.616
ASI4245.2%59.5%-14.3pp0.768
CCWS4052.5%60%-7.5pp0.666
Other (3 smaller)6968.1%56.5%+11.6pp0.641

Calibration

For predictions bucketed by predicted win probability, how often did the predicted side actually win?

Predicted bucketPredicted meanActual win rateCount
0.0-0.213.7%22%708
0.2-0.431.7%34.2%2592
0.4-0.650.6%48.5%5050
0.6-0.868.7%66%4323
0.8-1.086.2%80.9%1394