How it works · Jungle decision engine

We measure the decision, not the outcome.

Every stats site will tell you teams that take the first drake win ~62% of games. That number is useless — you took the drake because you were already ahead. This is how we strip that bias out and measure what a choice is actually worth.

01 The confounding problem

“Win rate when you get X” is the most common stat in League analytics, and it is almost always confounded. The team that secures Baron usually had a gold lead first; the jungler who lands a gank was often already winning the matchup. The stat measures the state that led to the action, not the action itself.

Our whole engine exists to answer the harder, more useful question: holding the game state constant, how much does this one decision move your win probability? We call that number a decision delta.

02 De-confounding, by example: the gank

A “gank” only exists in most datasets when it produces a kill — so any win rate built on it is conditioned on success. A kill is a lead, so of course it correlates with winning. We instead detect a gank attempt from position (the jungler closing within engage range of an enemy laner), whether or not it killed.

Kill-gank WR (the usual stat)
52.3%
conditioned on the gank succeeding — inflated
Gank-attempt WR (de-confounded)
49.3%
going for the play, win or lose — honest

Three points of pure selection bias, removed. And the honest number lands below 50% — at even gold, indiscriminate ganking is not the free win the kill-conditioned stat implies. (16,000 high-elo junglers.)

03 The objective-state clock

To hold state constant, we first have to reconstruct it. From the raw event timeline of every game we rebuild a per-minute clock of everything that matters and — crucially — everything that is path-dependent:

  • Dragons — count and elements, Soul status, and seconds-to-next-drake (a drake respawns 5:00 after the last one dies, so when you took drake 1 sets when drake 2 is up)
  • Baron / Herald / Grubs — taken, buff time remaining, time-to-spawn
  • Structures & economy — towers, plates, and the gold / level / kill difference each minute

This is the piece that lets the model reason past 10 minutes, where a fixed “archetype” label falls apart — because late-game value is the state, and the state is a function of the whole history.

04 The model: a stateful sequence net

Order matters. Ganking before finishing your clear versus after reaches the same minute-10 state by a different route — and the routes win at different rates. Worse, the number of possible orderings is combinatorial; you can’t bucket and count your way through “every option.”

So the engine is a recurrent value model (a GRU with champion embeddings) that reads the full-game per-minute sequence — action + gank attempt + objective-state clock — and predicts win probability at every minute. The hidden state carries the history, so it represents order natively, and the champion embeddings let a rare line still get a stable estimate by borrowing signal from similar champions.

Validation

From mid-game state alone (minute 12), the model predicts the eventual winner at 0.80 AUC — and 0.94 by the final minutes. It learned the structure that the old 10-minute model couldn’t represent.

05 The output: a comparable menu of deltas

The decision delta is a counterfactual on that value model: take the current game state, apply what a decision would actually do (secure a drake → +1 drake, reset the timer, flip Soul if it’s the fourth), and ask how much the predicted win probability moves. Do that for every available option and you get one ranked menu, all on the same win-probability scale, with farming as the zero baseline:

Now “should I take this drake, gank mid, or just farm?” is a single comparison instead of three disconnected stats.

06 What the de-confounded data actually says

Stripping the bias out changes the conclusions. A few findings, all measured at even gold so the lead isn’t doing the talking:

DecisionHonest deltaRead
First drake+18 ptsreal, but the smallest dragon
Third drake+29 ptslater drakes are worth fighting for more
Dragon Soul+35 ptsthe escalation peaks here
Rift Herald+13 ptsthe cheap one — fine to trade
Ganking when even (vs farming)≈ −1 ptnot the free value it’s assumed to be
Invading early (7–9 min)+4.7good — but turns negative if you do it late

And on sequence: farming straight through your clear (52.7% WR) beats interrupting it to gank mid-clear (48.6%) — the same camps cleared, a worse order.

07 The honest limits

A model is only as trustworthy as its disclosed failure modes. Here are ours, stated plainly.

Soul is rare, so escalation is under-learned

Only 4.7% of games reach Dragon Soul — 0.37% of all minute-rows. The model can barely see it, so it under-rates the late drakes that approach Soul. The fix is data, not a trick: more games (we’re scraping NA, KR and EUW) put Soul in front of the model often enough to learn it.

Baron is collinear with gold

You almost always have Baron because you’re ahead, so once the model holds gold constant, the buff itself looks small. That’s not a bug — it’s two different true numbers: “among even teams, securing Baron → win” (large) versus “Baron’s value net of the lead it rides in on” (small). We report the one that matches the question.

No live feed

This is a website, not an overlay — it can’t read your live game. So it’s a reference and a trainer: deltas conditioned on your draft, plus a scenario solver you drive by hand. Not a real-time assistant.

High-elo only

The data is Master, Grandmaster and Challenger. These deltas describe how the game is won at the top — aspirational, not necessarily what works in your bracket. An all-elo model is the next pool to collect.