Skip to content

Decision Science Through Football

Operations research on the pitch and in the boardroom: signings under a budget, squads, schedules and set pieces, and how to choose well when you can't try every option.

13 parts Beginner to Advanced

New to this? These parts are Beginner level: 1 and 10.

Start at part 1

Foundations

What you're optimising, the limits you work within, and trading one aim against another. Parts 1 to 3.

Who's the best signing? It depends what you're optimising

Five players on a shortlist, £10m to spend. Chase goals and you sign the striker. Chase points and three cheaper players beat him. Add one rule and the answer changes again. The three parts of every optimisation problem, with a transfer window.

Beginner Part 1

Who's the best striker? The Pareto front

The best striker usually means more than one thing: goals, fee, age. The Pareto front throws out every option beaten on all of them and leaves the ones worth arguing about. It also shows why some good choices never top a weighted score, and which 2025/26 Premiership sides nobody beat at both ends.

Intermediate Part 3

Classic problems

Squad minutes, signings, marking, routes and rotation: the standard problems and how they're solved. Parts 4 to 9.

Who plays how much? Squad minutes as a linear program

A season has a fixed number of minutes to share out, every player has limits, and the club has rules. Linear programming finds the best split, explains why the answer always sits at a corner, and says what each rule costs, including where a youth-minutes rule should take its minutes from.

Intermediate Part 4

Inside the solver: the simplex method by hand

Part 4 handed a squad's minutes to a solver and got the answer back. Here's what the solver does. Start at a corner, find the change that gains most, go until a rule stops you, repeat. Two steps solve the two-striker problem, and the shadow prices fall out at the end for free.

Advanced Part 5

£30m and five gaps: why you can't sign 0.83 of a centre-back

A transfer budget and five positions to strengthen. Treat it as a linear program and the answer signs 0.83 of one centre-back and 0.17 of another. Integer programming finds the best set of whole players, branch and bound finds it without trying every combination, and the budget's value turns into a staircase.

Intermediate Part 6

Who marks whom? The assignment problem at set pieces

Five markers, five attackers at a corner. Putting your best header on their most dangerous man sounds right and concedes more. The assignment problem finds the best set of pairings, the Hungarian method solves it by hand, and 190 real corners a season turn the difference into goals.

Intermediate Part 7

Playing out under a press: the safest route isn't the shortest

The opposition presses high and every pass is a risk. Treat the team as a network, with each passing lane carrying its chance of getting through, and the safest way from keeper to striker turns out to be three passes, not one. Dijkstra's method finds it, and shows which lane the press should aim at.

Intermediate Part 8

Seven games in 21 days: who plays when?

A congested run of fixtures and a rule that nobody starts three in a row. Picking the best team every game rests the stars for the cup semi-final. Treating the whole run as one scheduling problem rests them for the right games instead, and shows why they can't play every big one.

Advanced Part 9

Uncertainty

Choosing well when you don't know what will happen. Parts 10 to 12.

Shoot, cross or keep the ball? It depends on the score

A goal isn't worth the same at every score. Real half-time results show one down a side can afford to risk two goals against for every goal it might score, and one up barely half of one. The same chance can be the right call in one game and the wrong one in the next.

Beginner Part 10

Striker or centre-back? Let the simulation decide

When the answer is a chance, you estimate it by playing the season thousands of times. On 2025/26 at halfway, a striker beats a centre-back for the bottom sides and loses for the top ones, and two simple habits stop the simulation's noise from fooling you.

Advanced Part 11

Go for it or play it steady? Planning the run-in backwards

Bottom of the league with five games to play. Dynamic programming works out how to play every match by starting at the final whistle and working back, and finds that gambling on wins pays when you're two points or more behind, and never when you're level.

Advanced Part 12

On the pitch

Split-second choices with the ball: who gets there first, and when to release it. Part 13.

Who gets there first? Timing a pass, and the cost of waiting

A pass is a race between the ball and the nearest defender. Work out when each gets there, turn the gap into a chance, and one touch on the ball turns a switch that gets there 95% of the time into one that gets there 78%. The idea behind pitch control and the Action and Reaction board.

Intermediate Part 13