⌕ Discord

GUIDES · PREDICT

How PREDICT Works: The Technical Details

PREDICT tells you how a deck is likely to do in ranked play: its chance to win, how it fares against every color combination, which cards move the number, and head to head against any other deck, going first or second. This page is the technical version: where the numbers come from, which model was chosen and why, how it was tested, how honest its percentages are, and where it falls short.

The short answer

  • Two numbers, from two kinds of data. The headline number comes from real ranked games between people. The second number comes from a machine learning model that learned from over a million games our simulator played. They are kept separate on purpose, and you see both.
  • Both were tested on games and decks they had never seen, and both beat every simple way of guessing.
  • The model is not overfit. Five-fold cross-validation shows it does almost exactly as well on new decks as on the decks it learned from.
  • The percentages are honest, with one measured exception. When the simulator model says 60%, about 60% of those games are won. On brand new kinds of decks it is a little too sure of itself at the extremes, and we show exactly how much below.
  • It keeps itself current. The ranked data refreshes every week, and every week last week's numbers are scored on the games played since.

Two numbers, two sources

The headline number
Real ranked games

How decks on your three Legends actually do in ranked play between people, adjusted for the cards in your list. A statistical model fitted on ranked results, refreshed every week.

Shown in blue on the panel.

The second number
A trained AI model

A machine learning model trained on 1,019,892 games our simulator played between 2,203 decks. It reads the cards in two decks and predicts the winner, going first or second.

Shown as the yellow tick on the panel.

Why both? Real games know things a simulator cannot, like how well people actually pilot each deck. The simulator knows things ranked data cannot, like how two specific decklists do against each other when nobody has played that exact pairing yet. Each covers the other's blind spot, and the panel never blends them into one number you cannot check.

The players' number

It starts from the ranked win rate of decks on the same three Legends, then adjusts for your cards. Three steps:

  1. The Legends. Take the ranked win rate of every deck on your three Legends. A trio with few games gets pulled toward the win rate of its color combination, and that toward 50%, as if it had 40 extra games at the average. This is called shrinkage: it stops a lucky streak on a rare trio from looking like a great deck.
  2. Your cards. For each card in your list, compare how lists on those Legends do with it against the trio's rate, again shrunk by how many games back it up. Add those up, capped at 12 points either way, so no handful of cards can swamp the Legends.
  3. Keep it sensible. The result is held between 15% and 85%. Single games are too random for anything outside that to be believable.
Example, a public deck
AFTERLIFE CONTRACT
Red-Red-Green
Decks on its Legends win
62%
step 1, after shrinkage
Its cards add
+8 pts
step 2, capped at 12
Predicted, ranked play
70%
about 70 wins in every 100 games

Does it work on games it never saw?

What this shows. The numbers fixed on 2 Nov were scored on the ranked games played after that, which they had never seen. Each bar is a different way of guessing the winner. The score is log loss: lower means better guesses, and saying 50% every time scores 0.693.

Log loss on new ranked games, lower is better
0.67250.67820.68380.68950.6952Coin flip, 50%coin flip 0.69320.6932Guess from the colorscolor split 0.68420.6842Raw win rate of the Legendsraw trio rate 0.68190.6819PREDICT's players' numbershipped 0.67650.6765
Data table
Way of guessingLog loss
Coin flip, 50%0.6932
Guess from the colors0.6842
Raw win rate of the Legends0.6819
PREDICT's players' number0.6765
Conclusion
PREDICT's number was the best of the four on games it had never seen. Beating the raw win rate is the part that matters: the raw rate chases lucky streaks, and shrinkage holds exactly that back. That is what not overfitting looks like. This check now runs automatically every week.

Is it calibrated?

What this shows. Calibration asks whether the percentages mean what they say: of all the decks given 60%, do about 60% of their games end in a win? This chart is a reliability diagram, also called a calibration curve. Results are grouped by the predicted chance (across) and show the share actually won (up). A perfectly calibrated number sits on the dashed line.

Players' number: predicted against actual, on ranked games played after 2 Nov
PREDICT's players' number
20%32%45%57%70%20%32%45%57%70%predicted chance to winshare of games wonpredicted 30.7%, won 25.9%predicted 42.7%, won 37.2%predicted 47.9%, won 63.2%predicted 53.1%, won 49.4%predicted 58.3%, won 58.3%predicted 61.8%, won 64.5%
Data table
PredictedActually won
30.7%25.9%
42.7%37.2%
47.9%63.2%
53.1%49.4%
58.3%58.3%
61.8%64.5%
Conclusion
Too early to judge, and honest about it. The points sit an average of 4.7 points from the line, but with only a few days of new games, a perfectly calibrated number would wobble about that much by chance alone, so this neither proves nor disproves calibration yet. Every weekly refresh now adds its games to this check, and the chart will tighten as they pile up.

The simulator and its data

CHOOMDECK's own rules engine, the same code you play against on the site, runs outside the browser at a few thousandths of a second per game. Its built-in player pilots both decks. Every game is seeded, so any one can be replayed exactly.

  • The decks. 441 real lists: our own themed and meta decks, 321 public lists, and 57 consensus lists built from what ranked players on each Legend trio actually run. Each one was checked legal by the deck builder's own rules, then given four legal variants with one to four cards swapped: 2,203 decks in 385 families. A deck and its near copies share a family.
  • The features. Each deck is described by what is printed on it, 176 numbers in all: how many of each card, the three Legends, the cost curve, card types, cards that can be sold, keywords and RAM. That is what lets the model score a deck it has never seen.
  • An honest split. Whole families, not single decks, were split into training (70%), tuning (15%) and testing (15%), so a near copy of a training deck can never sneak into the test.
The games, by what they were used for
Data table
SetWhat it is forGames
Trainingthe model learns from these799,932
Validationchoosing settings, never for learning59,995
Testgraded once, at the end59,990
Dense pairings200 test pairings played 500 times each99,975
Total1,019,892

Choosing the model, as a risk decision

Picking a model is not a contest won by the best score. A model becomes part of the site: it has to be right, honest about its own uncertainty, stable, explainable to the people who use it, cheap to run and easy to check. Seven candidates were compared, from simple guesses to gradient boosting.

What this shows. Every candidate, graded on test decks it never saw, in the hardest case: both decks new to it. Gray bars are the simple guesses every model must beat. The dashed line is the best any model could do, given how random single games are.

Log loss on held-out decks, both decks new, lower is better
0.6210.6390.6580.6760.695best possibleCoin flipCoin flip: 0.69310.693Seat onlySeat only: 0.69310.693Table by colorsTable by colors: 0.67050.670Bradley-TerryBradley-Terry: 0.64300.643Logistic, both decksLogistic, both decks: 0.64270.643LightGBMLightGBM: 0.64060.641Bradley-Terry + cycle termBradley-Terry + cycle term: 0.64700.647
Data table
ModelLog lossBrierAUCAccuracy
Coin flip0.69310.25000.50050.4%
Seat only0.69310.25000.50050.4%
Table by colors0.67050.23870.62758.9%
Bradley-Terry0.64300.22580.68163.2%
Logistic, both decks0.64270.22570.68163.2%
LightGBM0.64060.22480.68363.3%
Bradley-Terry + cycle term0.64700.22720.67962.9%
Conclusion
All four real models beat the simple guesses by a wide margin and sit close together. Bradley-Terry, the simplest, scores 0.643 against 0.670 for a table by colors and 0.693 for guessing by seat.

Are the differences real?

What this shows. Each bar is how much better (left of zero) or worse (right of zero) one model is than another, per game, with the range the true difference most likely sits in. Blue: the whole range is on one side of zero, so the difference is real. Pink: the range crosses zero, so it could be luck.

Difference in log loss per game, with 95% intervals
-0.034-0.023-0.013-0.002+0.008no differenceBradley-Terry vs Table by colors-0.02748 [-0.03827, -0.01890]-0.027Logistic, both decks vs Table by colors-0.02775 [-0.03887, -0.01994]-0.028Logistic, both decks vs Bradley-Terry-0.00027 [-0.00101, +0.00044]-0.000LightGBM vs Table by colors-0.02990 [-0.03915, -0.02326]-0.030LightGBM vs Bradley-Terry-0.00242 [-0.00781, +0.00220]-0.002Bradley-Terry + cycle term vs Table by colors-0.02344 [-0.03346, -0.01553]-0.023Bradley-Terry + cycle term vs Bradley-Terry+0.00403 [+0.00202, +0.00699]+0.004
Data table
ComparisonDifference95% low95% high
Bradley-Terry vs Table by colors-0.02748-0.03827-0.01890
Logistic, both decks vs Table by colors-0.02775-0.03887-0.01994
Logistic, both decks vs Bradley-Terry-0.00027-0.00101+0.00044
LightGBM vs Table by colors-0.02990-0.03915-0.02326
LightGBM vs Bradley-Terry-0.00242-0.00781+0.00220
Bradley-Terry + cycle term vs Table by colors-0.02344-0.03346-0.01553
Bradley-Terry + cycle term vs Bradley-Terry+0.00403+0.00202+0.00699
Conclusion
Every model is really better than the table by colors. LightGBM's edge over Bradley-Terry (-0.0024 per game) is inside the noise, and the cycle term, built to capture deck A beats B beats C beats A, made things a little worse (+0.0040). A gain that might be luck does not pay for a harder model.

The scorecard

What this shows. The same three finalists, judged on everything a model has to get right once it is part of a site, not only on accuracy.

Bradley-Terry, LightGBM and the cycle term, side by side
What mattersBradley-Terry (chosen)LightGBMCycle term
Accuracy on new decks0.643 log loss0.641, better by an amount inside the noise0.647, worse
Calibration (average gap)1.9 points0.7 points, the best2.6 points
Stabilitythe same result in all 5 cross-validation folds, 0.610 to 0.643more settings to tune, more ways to driftadds a second set of weights to keep stable
Explainableone weight per card and Legend: the "cards that move the number" list comes straight from ithundreds of trees; why it said 62% is hard to showthe cycle part has no plain meaning per card
Cost to run176 numbers in a small file, pure Python, a fraction of a millisecond per deck on the web servera model library on the server, slower per readingabout twice Bradley-Terry
Going first or secondgives both directlygives bothgives both
Known weaknessa little too sure on brand new kinds of decks, measured and correctable (see calibration)harder to see where it failsno advantage found
Conclusion
Bradley-Terry ships: as accurate as anything tried within the noise, stable, explainable card by card, and cheap. LightGBM's one clear edge is calibration, and that is the reason this page measures calibration for the model that shipped, below.

Is it overfit or underfit?

What this shows. The deck families were split into 5 groups. Five times over, the model learned from 4 groups and was graded on the fifth, at several levels of caution (regularization). For each level: how well it did on the decks it learned from, on decks it never saw, and the gap between them.

Average of the 5 folds, log loss, lower is better
Data table
CautionDecks it learned fromDecks it never sawGap
3e-020.61310.6243+0.0111
1e-02 (chosen)0.61270.6243+0.0116
3e-030.61250.6251+0.0125
1e-030.61250.6256+0.0131
3e-040.61250.6259+0.0134
1e-040.61250.6260+0.0135
3e-050.61250.6260+0.0135
3e-060.61250.6260+0.0135

Simple guesses on the same unseen decks: by seat 0.6931, by colors 0.6724.

Log loss on never-seen decks in each fold, at the chosen caution
0.6050.6150.6250.6350.646Fold 1fold 10.624Fold 2fold 20.643Fold 3fold 30.610Fold 4fold 40.631Fold 5fold 50.613
Conclusion
Not overfit: on decks it never saw it does only 0.012 worse than on decks it learned from. Not underfit: on those decks it scores 0.624, far better than guessing by seat (0.693) or by colors (0.672). The folds differ a little from each other only because of which decks land in which group.

What this shows. Cross-validation picked a more cautious setting than the first model used. Both were then scored once on the untouched test decks. Negative means the new model is better; the interval says whether that is real.

The update that shipped on 3 Nov: new model minus old, per game
Data table
Untouched decksDifference95% intervalGames
Test, both decks new-0.00187[-0.00292, -0.00119]29,992
Test, one deck new-0.00088[-0.00141, -0.00045]29,998
Validation, both new-0.00052[-0.00105, -0.00006]29,996
Dense pairings-0.00153[-0.00308, -0.00063]99,975
Conclusion
Better on all four sets, and every interval stays below zero, so the gain is real. It is also small, so the numbers on the sites barely moved when it shipped.

Is the trained model calibrated?

What this shows. The reliability diagram again, for the model that shipped, on the untouched test decks. Pink: both decks new to the model. Yellow: one deck new. A perfectly calibrated model sits on the dashed line; points below it on the right and above it on the left mean the model is a little too sure of itself.

Trained model: predicted against actual, on test decks it never saw
both decks newone deck new
10%30%50%70%90%10%30%50%70%90%predicted chance the first seat winsshare of games wonboth new: predicted 16.4%, won 22.2%, 1,234 gamesboth new: predicted 25.5%, won 27.8%, 3,466 gamesboth new: predicted 35.1%, won 37.8%, 4,403 gamesboth new: predicted 45.3%, won 45.0%, 5,427 gamesboth new: predicted 54.7%, won 54.9%, 5,765 gamesboth new: predicted 64.9%, won 62.5%, 4,480 gamesboth new: predicted 74.6%, won 70.5%, 3,714 gamesboth new: predicted 83.7%, won 80.7%, 1,378 gamesone new: predicted 16.1%, won 14.0%, 1,409 gamesone new: predicted 25.5%, won 26.5%, 3,384 gamesone new: predicted 35.2%, won 37.5%, 4,750 gamesone new: predicted 45.1%, won 45.8%, 5,084 gamesone new: predicted 55.0%, won 54.6%, 5,049 gamesone new: predicted 64.9%, won 62.2%, 4,913 gamesone new: predicted 74.6%, won 73.1%, 3,587 gamesone new: predicted 83.9%, won 84.1%, 1,570 games
Data table
Test setPredictedActually wonGames
both new9.0%5.2%58
both new16.4%22.2%1,234
both new25.5%27.8%3,466
both new35.1%37.8%4,403
both new45.3%45.0%5,427
both new54.7%54.9%5,765
both new64.9%62.5%4,480
both new74.6%70.5%3,714
both new83.7%80.7%1,378
both new91.2%94.0%67
one new8.0%6.2%113
one new16.1%14.0%1,409
one new25.5%26.5%3,384
one new35.2%37.5%4,750
one new45.1%45.8%5,084
one new55.0%54.6%5,049
one new64.9%62.2%4,913
one new74.6%73.1%3,587
one new83.9%84.1%1,570
one new91.9%92.1%139
Validation decks
0.4 pts
average gap from the line; slope 1.01
Test, one deck new
1.4 pts
slope 0.94
Test, both decks new
2.0 pts
slope 0.85; 1.00 is perfect
Conclusion
Well calibrated in the middle and on decks like the ones it learned from. On brand new kinds of decks it is a little too sure at the edges: games it calls 84% are won about 81% of the time, and games it calls 16% about 22%. The calibration slope of 0.85 means its odds run about 15% too strong there. That is the overconfidence on unfamiliar cases that model choice has to watch for, it is small, and the fix is known: pull the odds toward even by that measured amount, using cross-validation so the test decks stay untouched.

How close is it on one specific matchup?

What this shows. Two hundred pairs of never-seen decks were each played 500 times, so their true result is well known. This is the hardest test: the exact number for one specific pairing.

Typical miss, one pairing
±10 pts
trained model on never-seen decks
How much matchups really differ
±18 pts
spread of true pairing win rates
Guessing by colors
±15 pts
for comparison
Conclusion
It gets the direction of most matchups right and the size roughly right. Read a single head to head number as a strong tendency, not a promise.

More decks or more games?

What this shows. The model was trained on a quarter, a half, three quarters and all of the training families, and graded on never-seen decks each time. A line still falling at the right means more would help.

Log loss on never-seen decks, by deck families trained on
0.6220.6300.6390.6470.65554108162216deck families trained onlog loss54 families: 0.6529108 families: 0.6279162 families: 0.6263216 families: 0.6243never-seen decks
Data table
FamiliesLog loss
540.6529
1080.6279
1620.6263
2160.6243
Log loss on never-seen decks, by games trained on (log scale)
both decks newone deck new
0.6240.6290.6340.6390.64425k50k100k200k400k799ktraining gameslog loss25,000 games50,000 games100,000 games200,000 games400,000 games799,932 gamesboth new25,000 games50,000 games100,000 games200,000 games400,000 games799,932 gamesone new
Data table
Training gamesBoth newOne new
25,0000.64190.6270
50,0000.64150.6261
100,0000.64090.6252
200,0000.64140.6257
400,0000.64270.6258
799,9320.64300.6259
Conclusion
More variety is what the model learns from; more games between the same decks teach it nothing new. The next improvement comes from new decks, not more games.

Where it falls short

  • The simulator does not play like people. Its built-in player pilots some strategies, blue control above all, worse than people do. By color matchup, the simulator's results line up only loosely with ranked play (a correlation of 0.25, where 1.00 would be a perfect match), and going first wins 50% of simulator games against about 60% in ranked play. That is why the headline number comes from real games, and the simulator's number sits beside it as a tendency.
  • Every number is best of one. Ranked play here is single games. Tournaments play best of three, which favors the stronger deck more than a single game does.
  • The card adjustment is a correlation. Lists that run a card may win for reasons beyond that card, such as who tends to play them. The 12 point cap is there because of that.
  • One rules revision at a time. The simulator plays the rules as CHOOMDECK runs them today. A rules update or a new set means new games and a retrain.

How it stays current

  • Every week the server pulls fresh ranked results and rebuilds the players' number and the deck grade's results half, for both CHOOMDEX and CHOOMDECK.
  • Safety checks first. A pull with too few games, an odd first seat rate, win rates outside 5% to 95%, or a sudden collapse in games is refused, and last week's numbers stay up.
  • Scored every week. The numbers that were live are graded on the games played since, beside the simple guesses, and the calibration check above grows with them.
  • The trained model is retrained when the decks, the rules or the simulator's player change, and only ships if it beats the current one on untouched decks with an interval that stays below zero.

Words used on this page

Win rate, 62%
Out of 100 games, the deck wins about 62.
Log loss
A score for how good predicted chances were, game by game. Lower is better. Saying 50% every time scores 0.693. A difference of 0.01 is a real improvement.
Calibration and reliability diagram
Whether predicted chances match what happens. The diagram groups predictions and plots what was predicted against what was won; honest predictions sit on the diagonal.
Calibration slope
1.00 is perfect. Below 1 means the predictions are too extreme, too sure of themselves; above 1 means too timid.
Training data and unseen data
A model learns from some decks and is graded on decks it never saw. Only the unseen grade counts.
Deck family
A deck and its near copies. Families are kept together so a near copy of a training deck never reaches the test.
Cross-validation
Split the decks into 5 groups, train on 4, grade on the fifth, and repeat so every group gets a turn.
Overfit and underfit
Overfit: memorized the training decks and does much worse on new ones. Underfit: too simple to learn much. A good model does nearly as well on new decks and far better than simple guesses.
Regularization, or caution
How strongly the model is held back from chasing noise.
Shrinkage
Pulling a rate built on few games toward a broader average, so luck does not look like skill.
Bradley-Terry
The trained model: logistic regression on the difference between two decks' cards and Legends. One weight per feature, which is what makes it explainable.
95% interval
The range a true difference most likely sits in. If it does not cross zero, the difference is real, not luck.

PREDICT is part of CHOOM+ on CHOOMDEX and CHOOMDECK. This page was written on 3 Nov 2026 and is updated when the model changes. See it in action: How PREDICT reads a deck, step by step.

More guides

RULESHow the Cyberpunk TCG WorksSTRATEGYCyberpunk TCG Deck Building GuideCOLLECTINGCyberpunk TCG Rarity ExplainedCOLLECTINGCollecting Welcome to Night City