PitchMetric

Home

FPL & La Liga analytics — score predictions and squad recommendations backed by real data.

Does Blending In Price and Squad Depth Actually Improve Our Predictions?

We shipped an update that leans on a player’s price and squad standing when their own track record is thin. Then we backtested it against a full season, gameweek by gameweek, and held players out entirely to check we weren’t just fitting noise. One idea didn’t survive contact with the data — here’s what we found, and what we reverted before it really shipped.

TL;DR

We backtested our price-and-squad-depth model update across an entire season, gameweek by gameweek, with players held out entirely to check it wasn't just memorizing. The update helped exactly where designed — players with thin current-season history — and a bundled “momentum” idea didn't survive testing, so we reverted it before it shipped.

Key takeaways

  • Season-wide error fell ~3% on average, but that hides the real story: players with zero current-season history saw error drop ~15%, fading to near-zero for established players.
  • A short-term momentum adjustment made established players' predictions worse, not better — we pulled it rather than ship something the data argued against.
  • Rebuilding the price-based estimate with different players held out each time produced almost the same accuracy as the ordinary fit — evidence it's learning something general, not memorizing specific players.

A few days ago we described, in plain terms, an update to how PitchMetric prices players who don’t have much of a current-season track record yet — leaning more on what their price and squad standing already imply, fading out as real form takes over. That’s a reasonable-sounding story. It’s also exactly the kind of claim that should be tested against real results before anyone trusts it, so that’s what this post is: a proper backtest, not a victory lap.

How we tested it

We reran the update, gameweek by gameweek, across the entire 2025-26 Premier League season — 37 separate tests, each one predicting a gameweek using only the information that would genuinely have been available before it (no hindsight, no rerunning history with the benefit of knowing what actually happened). Alongside that walk-forward test, we ran a second, stricter check: for several gameweeks, we split the players who inform the price-based part of the model into groups, rebuilt that part of the model with entire groups of players excluded, and scored predictions only for the players who’d been excluded — the closest thing to testing on players the model has genuinely never seen.

The headline number

Averaged across the full season, the updated model’s prediction error came down by about 3% against the version it replaced. Not enormous — but real, and worth digging into where it actually came from, because the average hides a much more interesting pattern.

Brand new (no current-season minutes) Brand new (no current-season minutes): 15.1% 15.1% 1–2 matches of history 1–2 matches of history: 9.0% 9.0% 3–5 matches of history 3–5 matches of history: 4.4% 4.4% 6+ matches (well established) 6+ matches (well established): 0.6% 0.6%
Prediction-error reduction (lower error is better), grouped by how much current-season history a player actually had going into that prediction.

The gain is concentrated almost exactly where it was designed to be, and fades out to almost nothing everywhere else. A player with no current-season track record yet saw the single biggest error reduction of the season — about 15%. By the time a player has six or more matches of real evidence behind them, the improvement shrinks to under 1%. That fade is the point, not a disappointment: if the price-based estimate were still moving the needle for well-established players, that would be a sign it was fighting a player’s actual form for influence, not filling in for its absence.

The honest part: one piece of this didn’t survive testing

The update we tested here originally had a third component too: a short-term “momentum” adjustment, nudging a prediction up or down based on whether a player’s recent form was running hotter or colder than their season average. It’s an intuitive idea. It’s also exactly the kind of idea that’s easy to talk yourself into without checking — so we checked.

Price-based estimate alone Price-based estimate alone: 2.1% 2.1% Price-based estimate + momentum Price-based estimate + momentum: -2.7% -2.7%
Prediction-error reduction for established players only (6+ matches of history) — negative means the error got worse, not better.

For players with little history, momentum barely moved anything either way — there isn’t enough recent form yet for a “recent vs. average” comparison to mean much. But across the roughly 90% of a season where most players already have a real track record, adding momentum made predictions measurably worse, not better — enough to wipe out more than the gain everything else in the update was providing on its own. Short-term hot and cold streaks in football are famously noisy, and a model that reacts to them mostly ends up reacting to the noise, not the signal. We pulled it before it shipped in anything but this test.

The same lesson, twice now

This is close to the exact same lesson our first Deep Research post landed on, with a completely different question: an intuitive-sounding idea that doesn’t survive being tested honestly is worth more to know about than one that quietly ships because nobody checked.

Does it generalize, or did it just memorize its own training data?

A model that only works well on the exact players used to build it isn’t actually learning a general relationship — it’s just curve-fitting. So for several gameweeks across the season, we rebuilt the price-based part of the model multiple times per gameweek, each time with a different slice of players entirely removed from what it was allowed to learn from, and then scored it only on the players it had just been denied.

Old model Old model: 2.36 2.36 New model (ordinary fit) New model (ordinary fit): 2.33 2.33 New model (players it never saw) New model (players it never saw): 2.33 2.33
Mean absolute prediction error (fantasy points), same population of players in all three bars — only which players informed the price-based estimate differs.

The gap between “players used to inform the price-based estimate” and “players it had never seen at all” is small enough to be noise. That’s the result we wanted: it means the price-based estimate is learning something genuinely general about how price relates to output, not memorizing the specific players who happened to train it.

What’s next

Momentum as a short-term recency multiplier didn’t hold up — that doesn’t mean recent form is worthless, only that our first attempt at capturing it wasn’t. A more careful, properly-lagged version of the same idea is worth another look before we write it off entirely. We’re also keeping an eye on whether the price-based estimate’s benefit holds up the same way once a second season of results exists to test it against — one season, however thoroughly tested, is still one season. If you want to see the current model in action, Predictions and Transfer Finder are both running on exactly what’s described here — and see Methodology for the plain-language version of how it all fits together.

← All posts · How predictions work