All methodology

What will he become — and how high can he go?

Trajectory & Ceiling Forecasting

How Oraca forecasts a player's future, not just his present — a causal model that reads an entire career match by match, a multi-horizon forecast of where he'll be in one to five years, and a separate model for the right-tail question of how high he could ever peak.

Player-trajectory forecasting asks the hardest scouting question of all: not how good is this player now? but what will he become, and how high can he go? Oraca answers it with a deep model that reads a player's whole career match by match, compresses it into a compact numerical signature, and forecasts his future state — what level he'll be playing at, how much he'll play, whether he'll move, how his standard will change — at one, two, three and five years out. A separate ceiling model forecasts the right tail: not the expected outcome, but the chance of ever reaching the very top.

In one line: the rating systems score the present; this stack forecasts the future. A model reads "every match this player has ever played" and turns it into a signature of his career so far; one head projects that signature forward in time; another asks the different question of how good he could peak — with the most ambitious work, forecasting a player's path conditioned on a specific destination club, still in active research.

Two different questions

A useful forecast has to separate two things the eye runs together:

  • The expected path. Where is this player most likely to be in five years? That is a forecast of the middle of the distribution.
  • The ceiling. What is the best he could realistically become? Two players with the same expected path can have very different upside, so the ceiling is modelled as the right tail of the outcome distribution, not its centre.

Both sit on a shared foundation — a learned signature of the player's career to date — and both are forecasts from a fixed point in time, so they can be scored honestly against what actually happened next.

Reading a career

Everything downstream reads one object: a time-varying signature of a player's career. "Time-varying" is the whole point — the same player at 22 and at 32 produces a different signature, because the model is strictly causal: the signature at any match is built only from matches up to and including that one, and is never allowed to peek at the future.

The model reads a player's match sequence — each match described by who the opponent was and how strong, the competition's level, home or away, the player's age and minutes, the result, his position, his recent form, and his production on the day — and learns to summarise "his career so far" into that signature. It runs every night for every active player, and the same signatures also power the similar-players search that runs throughout the product.

A failure that shaped the design. An earlier version of this model was trained with a technique that quietly collapsed: every player's signature drifted toward the same average, so the model looked trained while having learned almost nothing. We caught it with a diagnostic that watches how distinct the signatures are from one another, and rebuilt the training so that the only way for the model to do well is genuine player-by-player differentiation. That diagnostic now lives permanently in the training loop. Collapse is the failure mode this whole sub-system is engineered against — and the honesty to keep checking for it is part of why we trust the output.

From signature to forecast

The forecaster takes the signature plus a little context and projects it forward, with a specialist head for each horizon (one, two, three, five years). Each head predicts several things about the player's state at that point: what tier he'll be playing in, what stage his career will be at, how much he'll play, whether he'll have moved club, and how much his team's strength will change — the last one added deliberately, because the plain "what tier" question saturates (most players stay in the same tier), making it a poor way to rank, whereas a continuous "how much stronger an environment" target ranks cleanly.

The several predictions are balanced automatically rather than by hand: the model learns how noisy each one is and weights the reliable ones more, instead of us guessing the trade-off. And unlike the career-reading step, this forecaster is supervised — every training example pulls its prediction toward that specific player's known future — so it cannot collapse: the only way to lower its error is to match what really happened.

In production we run the forecaster as an ensemble of several independently trained copies and surface its five-year, top-tier judgement as a discovery flag, reporting the copies' disagreement with each other as an honest measure of how uncertain the call is. The fuller forecast runs behind the scenes to inform research, rather than being exposed as a number we'd over-trust.

Building a forecast leak-free

To train and test honestly, we slide a series of anchor points across each player's career and, at each one, read his actual state one, two, three and five years later from a window of real matches — a window, so a single freak game can't define the label. The genuinely hard part is what to do when a player simply disappears from the data: he might have retired, been injured, or dropped to a league we don't cover. Where age makes retirement the clear explanation, we label it so. Where it doesn't — a young player who vanishes — we refuse to guess, and drop the example, because we cannot honestly tell "fell out of football" apart from "moved somewhere we can't see." This is conservative, and it introduces a known bias toward players who stayed visible, which we call out below.

The ceiling — the right tail

The ceiling model answers a different question from the expected path: how high could this player peak, ever? Its labels are career-cumulative rather than tied to a single horizon, so it reads the same career signature and estimates the chance of ever reaching the top tiers by his late twenties, and roughly when he'd peak.

On the hardest version of that question — the chance of ever reaching a top-tier league — the model reaches strong discrimination on a held-out test set of tens of thousands of players, well clear of naive baselines, and its top 5% by predicted ceiling captures the overwhelming majority of the players who actually got there — a large lift over the base rate. It is proof that "how elite could he get?" is genuinely learnable from a player's career signature, with real predictive lift, rather than a story told after the fact. Past model performance is not a guarantee of future results.

The research frontier

Our most ambitious work reframes the whole problem around a single business question: of the handful of players we tell a resource-constrained club to go and watch, how many turn out to be worth it — measured out-of-time, against the players the club would have backed anyway? Behind that sit several genuinely research-stage efforts, which we are candid are not shipped: forecasting each individual facet of a player's game as its own time series; and the real prize — forecasting a player's trajectory conditioned on a specific destination club, in effect asking "what version of this player would our club get?" These are where the platform is heading; they are deliberately not dressed up as finished features.

What it can't do

  • Only part of the forecast is exposed. We surface the five-year, top-tier judgement as a flag; the fuller multi-horizon forecast and the ceiling model run behind the scenes rather than as numbers we'd encourage you to over-read.
  • Collapse is an ever-present risk. This family of model can learn nothing while looking trained. It is guarded, monitored, and was rebuilt once — but the risk never fully goes away, which is why the diagnostic stays in the loop.
  • Censoring bias. A young player who disappears from our covered leagues is dropped rather than guessed at. That keeps us honest, but biases the training toward players who stayed visible.
  • Coverage, not model. Players in leagues we don't cover are invisible to the forecaster, as everywhere.
  • The frontier is research. The club-conditional and per-facet forecasting work is genuinely experimental. We'd rather say so than imply it's running in production.

The research behind it

The stack draws on the sequence-modelling, self-supervised-representation, multi-task, and time-series-forecasting literatures.

  • Vaswani, A. et al. (2017). Attention is all you need. — The neural architecture underpinning the career-reading model.
  • van den Oord, A., Li, Y. & Vinyals, O. (2018). Representation learning with contrastive predictive coding. — The contrastive training idea behind making each player's signature genuinely distinct.
  • Grill, J.-B. et al. (2020). Bootstrap Your Own Latent. — The self-supervised family whose tendency to collapse is the failure we engineered against — a cautionary reference as much as a basis.
  • Kendall, A., Gal, Y. & Cipolla, R. (2018). Multi-task learning using uncertainty to weigh losses. — The automatic balancing of the several things each forecast head predicts.
  • Nie, Y. et al. (2023). A time series is worth 64 words (PatchTST). — Transformer-based long-term forecasting; one basis for the per-facet research work.
  • Liu, Y. et al. (2024). iTransformer: Inverted Transformers are effective for time series forecasting. — Treating each facet of the game as its own series that move together; the design the per-facet forecaster builds on.
  • Sohn, K., Lee, H. & Yan, X. (2015). Learning structured output representation using deep conditional generative models. — The basis for sampling whole future trajectories rather than a single point estimate.