Methodology

How a Riftcast probability is produced, how it is graded once the match is over, and what the resulting numbers mean. This is the technical companion to the About page.

Corpus: 15,622 matches indexed, 35,844 predictions graded. Figures on this page were resolved at 2026-09-10 03:03 UTC.

1. What we do

Riftcast publishes a probability for each side of a professional League of Legends match, produced by machine-learning models trained on historical match data. A probability is generated before the match starts, stored, and then graded against the result once the game is played. The prediction is never revised after the fact.

A probability is not a forecast of what will happen. It is a statement about a long run of similar matches: when we say a team wins 65% of the time, we are claiming that across many matches given that rating, roughly 65 of every 100 are won. A team rated at 65% losing is not a failed prediction. A team rated at 65% winning only half the time across a large sample is.

We do not sell predicted winners. We publish calibrated probabilities and our own track record, including the markets where that record is negative.

2. The models

Four models run on every match. They are trained independently on the same data and disagree often, which is deliberate: the spread between them is itself information about how certain a matchup really is.

FastTree

A gradient-boosted decision tree, and the baseline every other model is measured against. It is fast to train, stable across retrains, and handles the ordinary case well: two known teams in an established league with plenty of recent history. It is the model available on the free tier, and it is the one that degrades most gracefully when a team has thin data.

LightGBM

A leaf-wise gradient boosting implementation. It adapts faster than FastTree when the underlying game shifts, which makes it the stronger model across patch changes and at international events where teams from different regions meet for the first time and regional form is a poor guide.

PCA Sweep

A principal-component pipeline whose hyperparameters are selected by a large offline sweep, with dimensionality reduction applied before the classifier. Compressing correlated team statistics into fewer components reduces overfitting on the many near-duplicate features a team profile contains, and it is typically the most accurate of the three base models.

Consensus

Not a fourth model but a weighted blend of the three above, weighted by each model's recent log loss so that a model going through a bad stretch contributes less. Consensus is the most reliable single number on the site, and it is also the most conservative: it rarely produces the extreme probabilities that individual models sometimes do.

Each model exists in two variants. The base variant predicts from team and player form before the game begins. The draft-aware variant re-prices the same game once all ten champions are locked, adding champion win rates, synergy within a composition and matchup counters on top of team form. The draft-aware variant is only available once champion select has finished, which is why a prediction can change shortly before a game starts.

3. Training data

  • 15,622 individual games indexed
  • 450 teams tracked
  • 230 tournaments covered
  • 35,844 predictions graded and on record

Two sources feed the system. Schedules, live game state and champion select come from the official LoL Esports API at lolesports.com. Completed match statistics, which are what every model is trained on and every prediction is graded against, come from scraping gol.gg. Where the two disagree about a result, gol.gg is treated as the source of truth and the live feed is discarded.

Models see team form over rolling recent windows, an Elo-style strength rating adjusted for regional tier and cross-region results, side win rates, objective and gold statistics, player-level form for the current roster, and, in the draft-aware variant, the champions actually picked. Features are computed symmetrically for both sides so that the model cannot learn anything from which team happens to be listed first.

All models retrain daily at 00:10 UTC on the full history available at that moment, and predictions for upcoming matches are regenerated once training completes. A model file is never edited between retrains.

No tournament is excluded from training. Earlier versions of the pipeline held out some smaller and international events; that was dropped in 2026 because the excluded events were exactly the ones where the models needed the data most.

4. How accuracy is tracked

Predictions made before match start remain on record permanently and are used to compute these numbers. There is no mechanism to delete, revise or retroactively re-score a published prediction.

A prediction is graded only once the match appears in the scraped result data. Live game state is never used to settle a prediction, because it is best-effort and occasionally wrong; a match whose winner cannot yet be established from scraped data stays ungraded rather than being resolved by inference. This is slower than reading the live feed and it is the reason the published record can lag a result by a few hours.

Evaluation is holdout by date: a model is only ever measured on matches that had not happened when it was trained, which is the only honest test for a system that retrains daily. Every graded prediction enters the figures below. There is no editorial step where a bad week is excluded, and no market is hidden for performing poorly.

What we report

Hit rate
The share of picks that were correct, always shown with the number of picks behind it. On its own it is a weak measure: a model that only ever calls heavy favourites can post a high hit rate while adding nothing over simply following the market.
Brier score
The mean squared difference between the stated probability and what happened. Lower is better. Saying 50% on everything scores 0.25, so any figure above 0.25 means the confidence attached to the picks was worse than useless. This is the metric that catches a model being confidently wrong, which hit rate alone will not.
Log loss
A second scoring rule over the same predictions, penalising confident errors far more sharply than Brier does. It is what the Consensus blend uses to decide how much weight each model currently deserves.
Return on investment
What a flat one-unit stake on every qualifying pick would have returned, priced at the market odds available before the match. A correct pick returns the odds minus one; an incorrect pick loses one unit. ROI is the net divided by the number of picks. This is the only measure here that accounts for price, and it is the one where a model can be accurate and still unprofitable.

See the full record, by model, by market and by league

5. Calibration

A model is calibrated when its stated confidence matches reality over a large sample: of all the matches it called at 60%, close to 60% should have been won. A model can be accurate and badly calibrated at the same time, by picking the right side while being far too sure about it.

Raw model output is not well calibrated on its own, so a calibration layer is applied at display time, fitted on past graded predictions only and never on the match being predicted. Because it is applied when the page is read rather than baked into the stored prediction, the historical record stays exactly as it was published while the calibration behind it continues to improve.

Calibration is pooled by league, so a league with few graded matches borrows from the wider sample rather than trusting a handful of results. This is also why leagues below a minimum sample are marked low-accuracy and left out of the headline figures: not because their results are bad, but because there are not yet enough of them to mean anything.

6. Value picks

A value pick is a case where our probability is higher than the market's implied probability for the same outcome. It is a disagreement with the market price, not a prediction of a certain result.

expected value = (model probability x market odds) - 1

When that figure is above zero, the market is offering a price we rate as too generous, and the pick is recorded. Every recorded pick is stored with the probability, the price and the timestamp it was published at, then graded like any other prediction. Picks in leagues flagged low-accuracy are tracked but excluded from published returns, because a percentage over a handful of results is noise.

A market must have at least 50 graded picks before it is allowed to headline anything. Below that threshold the figures are still published in the full table, with their sample sizes, but they are not treated as a result.

Currently the strongest market on record is PCA Sweep on Series Winner: +10.1% return over 130 graded picks. This figure is derived, not chosen, and it changes as results land.

See every market, including the losing ones

7. Frequently asked

Can you predict individual games within a series?

Yes, and they are graded separately. Game-level and series-level predictions are different markets with different denominators and are never mixed into one figure, because a best-of-five contains several games and averaging them together would silently weight long series more heavily than short ones.

Do you use private or insider information?

No. Everything the models see is public: published match results, official schedules and champion select as it is broadcast. There is no scout network, no private roster information and no contact with teams or players.

How do you handle a new patch?

Models retrain daily, so a patch works its way in as matches on it are played rather than through any manual adjustment. This means the first days of a major patch are the least reliable period on the site, and the draft-aware variants recover fastest because champion-level statistics shift before team-level ones do. We do not hand-tune models around a patch, as that would make the published accuracy unreproducible.

How are ties and unplayed games resolved?

A prediction on a game that is never played is voided rather than counted as a loss, and voided picks are removed from every figure. Where a market can push, such as a total that lands exactly on the line, the pick is voided and the stake returned. Series that appear in the scrape with an incomplete scoreline are held ungraded until the missing games arrive.

Why not just use the single best model?

Because which one is best changes, and it is only knowable in hindsight. Each of the three has led on different markets and in different periods, and the ranking shifts across patches and between regional and international play. Blending them by recent log loss produces a number that is more stable than any individual model, at the cost of rarely being the very best on any single market.

Predictions are generated by machine-learning models and do not guarantee outcomes. Figures on this page describe past graded predictions and are not a forecast of future results. For informational purposes only; not financial advice.