No black box

What is actually under the bonnet

Plenty of FPL tools will tell you who they would captain. Very few will tell you what they weight, where the number comes from, or what they get wrong. This page does all three. If you want to disagree with the engine, you should be able to disagree with it specifically.

The spine of every call

Every player gets one number. Captain, bench order, optimal eleven, transfer case: all of it falls out of ranking that number. It is built in two parts.

60% — projection

FPL's own expected points for the coming gameweek, plus a modelled figure for defensive contribution points, which the official projection does not include.

40% — recent form

Points per game over the recent window, tilted by the quality of the fixture in front of them.

That blend is then scaled by expected minutes, and adjusted by a small number of multipliers that the projection systematically under-prices:

Penalties

First-choice taker gets an 8% lift, second choice 2%. A penalty is worth roughly 0.77 expected goals, so being the designated taker is the single largest edge available before a ball is kicked.

Other dead balls

First-choice corners and indirect free kicks: 4%, or 2% for forwards, because an assist is a smaller share of a striker's expected return. First-choice direct free kicks: 2%.

Clean sheet lean

Keepers and defenders only. Built from win probability and the expected total goals in the match. Clamped at plus or minus 12% so it can tilt a call and never decide one on its own.

Double gameweeks

The second fixture is worth 65% of a first, scaled by that player's own expected minutes. A nailed starter and a rotation risk do not get the same credit for a second game.

Note what is not in that list: fixture difficulty is not a top-line weight. See the next two sections for why.

Where the fixture number comes from

Most tools run on FPL's own Fixture Difficulty Rating. FDR is a hand-assigned integer from 1 to 5 that is set before the season and barely moves. We use it third.

First choice — bookmaker odds

Match odds are de-vigged into a win probability. It is the only fixture signal with real money behind it, it updates on team news, and it prices the specific match rather than the badge.

Second choice — underlying team xG

Where odds have not resolved for a fixture, expected goals for and against per 90 stand in. Held at parity with the fallback below, never stacked on top of the odds.

Third choice — FPL's FDR

Only when neither of the above is available for that match.

Home advantage in the multi-week outlook is not a guess either. It was calibrated against a per-fixture goals model across all twenty clubs, in which the venue effect came out at 55% of the size of the opponent-quality effect. Our fixture term uses that same ratio rather than a number that felt about right.

Four things we refuse to count twice

This is where most FPL scoring models quietly go wrong. A signal is already sitting inside another input, gets added again on top, and the model ends up violently overweighting whatever is easiest to see.

Fixture, on the projection

FPL's expected points already prices the opponent. So fixture does not enter as its own weight. It enters as a small multiplier on the projection, and only for midfielders and forwards.

Fixture, on defenders

Defenders and keepers take their fixture exposure through the clean sheet lean, which is built from the same win probability. Applying the attacking fixture multiplier to them as well would be the identical signal counted twice.

Home advantage, on the odds path

Bookmakers have already priced venue into the win probability. When the odds resolve, no separate home or away adjustment is applied. It is only added on the fallback paths, where it is genuinely missing.

Availability, on the projection

FPL's expected points already carries its own fitness discount: a player listed at 75% prices at roughly 0.75 times an unflagged peer of the same cost. Multiplying our own minutes model on top of that discounted a 75% doubt to 0.56. The projection now takes usage only; the fitness discount is applied once.

There is a fifth. In a double gameweek, fixture quality is averaged across the two matches rather than summed, because the volume of a second game is paid for separately by the double gameweek multiplier. Summing it would pay for the same extra fixture twice.

Things the engine will not do, whatever the number says

A scoring model left unsupervised produces defensible arithmetic and unusable advice. These are hard blocks that sit above the score.

It will not captain a defender

Early in a season, form is zero for everyone, so the score collapses towards the raw projection and the clean sheet lean can float a centre-back to the top of a squad. The arithmetic is defensible. Nobody captains a centre-back. The armband is restricted to midfielders and forwards.

It will not buy anyone under 75% fit

The bar for keeping a player you already own is not the bar for actively spending a transfer on one. Any incoming player carrying a fitness flag is refused, however well they score.

It will not captain anyone under 50% fit, or anyone with a blank

Both are hard blocks. If the top pick is blocked, it falls through to the next candidate rather than quietly shrugging.

It will not price a decision the chip has removed

On a Bench Boost there is no bench order, because all fifteen score. On a Wildcard or Free Hit there is no single transfer recommendation, because transfers are unlimited. Confidently advising on a decision you are not making is worse than saying nothing.

When it tells you it does not know

The internal score can separate two players whose published projection is identical, because it also prices minutes, fixture and dead-ball duty. When that happens, the separation is coming from priors rather than from any measurement, and the honest label is a coin flip however confident the arithmetic looks.

The coin-flip rule

If the two leading captain candidates are within 0.05 expected points of each other, the call is reported as a coin flip. Not narrow. A coin flip. Every reading in the briefing is forced to agree on that, so you never get one line calling it razor thin and another calling it clear.

Two numbers, never swapped

The internal ranking score and FPL's published expected points sit on different scales. Only the published one is ever quoted at you. Printing the internal delta with an expected-points label produces a briefing that contradicts its own figures.

Confidence and fragility are separate

Confidence grades the data: is the projection missing, is it early season, are starters flagged. Fragility grades the decision: will this call survive Friday's press conference. A call can be high confidence and highly fragile at the same time, and collapsing them into one number hides exactly the week you needed to check team news.

Every call names its own counter-case

The engine records the alternative it rejected and the specific reason it lost, before the gameweek is played. After the gameweek, the alternative is scored too. If the rejected option beat ours, that is logged as wrong, and no amount of the rest of the week going well can overturn it.

What it is bad at

If a tool cannot tell you where it is weak, it has not looked. These are known and open.

Defensive contribution points are inert until roughly GW5

The model needs a minimum sample of minutes before it trusts a player's own defensive rate, so for the opening weeks the term contributes nothing. Cheap defenders are under-priced in that window.

Spiky defensive players are understated

The probability of clearing the defensive threshold is modelled as a Poisson process, which assumes the variance matches the average. Real defensive-action counts are more volatile than that, so genuinely spiky players come out slightly low.

Before September, minutes are half a guess

With no minutes played, the model blends last season's starts with current ownership at 65 to 35. Last season is a real measurement of a squad that no longer exists. Ownership reflects the current squad but is a crowd opinion, not a measurement. Neither is good and they are less bad together.

Transfers are graded directionally, not to the point

A captain call has a clean counterfactual: the same week, the same squad, one swap. A transfer plays out over a run of gameweeks and interacts with everything else you do, so it is graded over a rolling window and never presented as a precise points figure. Anyone quoting you an exact points gain from a transfer is guessing with decimal places.

The track record is one gameweek deep

The engine grades itself from GW1 2026/27 onward, and results are published whether they flatter it or not. GW1 is now in play. The track record starts building from settlement and this page will link to it when there is more than one gameweek to look at.

The staff do not agree about it either

On the early-season minutes model, above

Arjun Sharma — Performance Analyst

Before a ball is kicked there is no minutes data, so we blend last season's starts with current ownership. Sixty-five, thirty-five. Which means a player nobody owns is scored as a player nobody starts.

Jimmy MacLeod — Chief Scout

Which is how ye bury every good shout A make in August. A've watched him all pre-season. He starts. Yer model's telling ye he disnae because forty thousand folk havnae noticed him yet.

Klaus Brandt — Sporting Director

The scout is right about the mechanism and wrong about the objection. The model is not measuring whether the player starts. It is measuring whether we will look foolish. Those are different quantities and we have optimised for one while calling it the other.

The Assistant Manager — Ruling

Both correct. It stays. Recommending a player who does not get off the bench is a mistake you see on Saturday. Missing a differential is a mistake nobody ever notices. I will take the invisible error over the visible one every week of the season, and Jimmy loses about one good August shout a year to it. That is the price and I am paying it. Green arrows by Sunday, or Klaus gets to file the memo he has clearly already written.

That argument is real and it is in the code. Every trade-off on this page was decided by someone choosing one cost over another, and the room is where you get to hear which.

Now go and watch it be wrong in public.

A free briefing on the house squad every gameweek, graded afterwards whether it went well or not.