Who designs the game? Three points for a win and the rules behind the football
Every part of this series took the rules as fixed. The people who write them are playing a game too, choosing payoffs so that players' own best moves give the football they want. Three points for a win shows how, and 25 Scottish seasons re-scored at two points show what it changed.
Intermediate Part 6 of Game Theory Through Football
New to the notation? The symbols explained
Contents
The football question
Until the 1980s, a win in most leagues was worth two points and a draw one. England moved to three points for a win in 1981, Scotland's Premier Division in 1994/95, and FIFA adopted it for international football in 1995. Why change it, and did it change anything?
Every part of this series so far has taken the rules as given and asked what the players should do. This last part turns it round. The people who write the rules are playing a game too: they can't tell teams what to do, but they can choose what each result is worth, and teams then do whatever pays.
The concept
Designing the rules of a game so that each player's own best move leads to the outcome the designer wants is called mechanism design. Leonid Hurwicz, Eric Maskin and Roger Myerson shared the 2007 economics Nobel prize "for having laid the foundations of mechanism design theory". Their examples were auctions, elections and markets, but a football league is a mechanism too: the points system, the tie-breaks and the fixture list are all choices someone made.
The question a designer asks is the reverse of the one in Parts 1 to 5. Not "given the payoffs, what will players do?" but "what payoffs will make players do what we want?"
A football example
It's 0–0 with ten minutes left. Each side can settle for the draw or push for a winner. Pushing makes a goal at either end more likely. Here are the home side's chances of a win, draw and loss (made-up numbers):
| Home v away | Home win, draw, loss |
|---|---|
| Settle v settle | 5, 90, 5 |
| Push v settle | 20, 55, 25 |
| Settle v push | 25, 55, 20 |
| Push v push | 32, 36, 32 |
Whether pushing is worth it depends on what a win is worth. Compared with settling, pushing turns some draws into wins and some into defeats. With W points for a win and 1 for a draw, it pays when
$$(W - 1) \times \text{extra wins} > \text{extra defeats}$$
In plain football
- A draw that becomes a win gains W − 1 points. A draw that becomes a defeat loses 1 point.
- With two points for a win, a win is only one point better than a draw, so pushing pays only if it brings more extra wins than extra defeats.
- With three points, a win is two points better than a draw, so pushing pays even if it brings up to twice as many extra defeats as extra wins.
With two points for a win, both settle: settling is each side's best move whatever the other does, the match is drawn 90% of the time, and each side expects 1.00 point. With three points, both push: pushing is now best whatever the other does, a draw happens only 36% of the time, and each side expects 1.32 points. Nothing about the teams changed. The designer changed one number, and the equilibrium moved from one corner of the table to the other.
That was the case for the change: make a win worth more than two draws, and teams level late on stop settling. Whether it worked is harder to show. Leagues changed many other things at the same time, and our data only starts in 2000/01, after Scotland's switch, so it can't compare before and after. What it can show is how much the rule decides on its own.
What two points would have changed
Here are 25 Scottish Premiership seasons, 2000/01 to 2025/26 (leaving out 2019/20, which was stopped early and decided on points per game), with every result kept exactly as it was and re-scored at two points for a win. Because of the split, each team stays in the half of the table it really played in.
47 of the 300 final positions would change. Most are swaps in mid-table. Two are titles:
| Season | Won, drawn, lost | Goal difference |
|---|---|---|
| 2010/11 Rangers | 30, 3, 5 | +59 |
| 2010/11 Celtic | 29, 5, 4 | +63 |
| 2025/26 Celtic | 26, 4, 8 | +32 |
| 2025/26 Hearts | 24, 8, 6 | +33 |
In 2010/11, Rangers won the league with 93 points to Celtic's 92. With two points for a win, both would have had 63, and Celtic's better goal difference would have made them champions. In 2025/26, Celtic finished on 82 to Hearts' 80. With two points, both would have had 56, and Hearts would have won the league by a single goal of goal difference.
In both seasons, the champions under three points won more matches and drew fewer. That's exactly what the rule rewards. Under two points, the steadier team that lost less often would have edged it.
The bottom club would never have changed, and second place would have changed once, in 2013/14 (Aberdeen above Motherwell).
These are lower limits on what the rule does. Teams played those seasons knowing a win was worth three, and under two points some of them would have played differently, as the late-game table shows.
Rules with side effects
A rule changes what pays, and players follow what pays, including where the designer didn't intend:
- Gijón, 1982 (Part 3): playing the last group games on different days let two teams know exactly which result suited them. The fix, from 1986, was to kick off together, taking away the information rather than the incentive.
- Away goals: UEFA counted away goals double in tied two-legged ties to encourage away teams to attack. In June 2021 it scrapped the rule for all its club competitions from 2021/22. UEFA President Aleksander Čeferin said its impact "now runs counter to its original purpose as, in fact, it now dissuades home teams – especially in first legs – from attacking, because they fear conceding a goal that would give their opponents a crucial advantage".
- The split: a team seventh after 33 games can't finish higher than seventh, however many points it takes after that. It's a fixture-list rule with a points consequence; the split myth looks at what it does.
Each is the same lesson: designers set the payoffs, and the players then play the game, including the parts the designer didn't foresee.
The series in one page
| Part | The game | The idea |
|---|---|---|
| 1 | Penalty, two choices | Mix, and the Nash equilibrium |
| 2 | Penalty, with the middle | Minimax with three choices |
| 3 | Gijón, the wage race | Prisoner's dilemma, and deals that need no trust |
| 4 | Substitutions | Moving in turn, backward induction |
| 5 | Ball back, tit-for-tat | Repeated games |
| 6 | Three points for a win | Designing the rules |
Why it matters
Every rule in football, from points for a win to tie-breaks, fixture lists and substitution limits, is a payoff someone chose. Game theory says how players will respond to those payoffs, and mechanism design runs it backwards: decide what football you want, then find the payoffs that make it each team's best move. When a rule seems to backfire, as away goals did, it's usually because teams found a best move the designers hadn't thought of.
Limitations
- The late-game chances are made up. They show how one number can move the equilibrium, not the real effect of three points on real matches.
- The re-scoring keeps every result as it was. Teams would have played differently under two points, so the 47 changes are what the rule decides on its own, not the full effect.
- The split halves are kept as they really were. Under two points, a different team might have been sixth after 33 games and played a different run-in.
- Points deductions aren't in the data. In 2013/14, for example, Hearts were really bottom after a 15-point deduction. The comparison uses the results-only table under both rules, so the two are like for like.
- Our data can't show whether three points led to fewer draws, because it starts after the change.
Try it yourself
What would a rule have to look like to stop the 0–0 settling without making football reckless? Try four points for a win in the snippet's late game, or a bonus point for scoring three. Then think about what a team 3–0 up would do under each.
Reproduce the analysis
The late game needs nothing. For the re-scoring, download the Scottish Premiership files (SC0) from football-data.co.uk for each season from 2000/01 to 2025/26 and save each under its own name, such as SC0_2425.csv; they aren't rehosted on this site. Then:
Show the Python83 lines, ready to copy and run.
import csv
# Made up: 0-0 with ten minutes left. Each side settles or pushes for a winner. The home side's chances (%) of a win,
# draw and loss for each pair of choices (home first).
late = {("settle", "settle"): (5, 90, 5), ("push", "settle"): (20, 55, 25),
("settle", "push"): (25, 55, 20), ("push", "push"): (32, 36, 32)}
def points(win):
"""Expected points (home, away) for each pair of choices, with `win` points for a win and 1 for a draw."""
return {k: ((win * w + d) / 100, (win * l + d) / 100) for k, (w, d, l) in late.items()}
def equilibria(game):
moves = ["settle", "push"]
return [(h, a) for h in moves for a in moves
if game[h, a][0] == max(game[x, a][0] for x in moves) and game[h, a][1] == max(game[h, y][1] for y in moves)]
for win in (2, 3):
game = points(win)
(h, a), = equilibria(game)
print(f"{win} points for a win: both {h}, {game[h, a][0]:.2f} points each, a draw {late[h, a][1]}% of the time")
# Real: every Scottish Premiership season 2000/01 to 2025/26 except 2019/20 (stopped early, decided on points
# per game), re-scored with 2 points for a win. Needs the SC0 files from football-data.co.uk (see above).
seasons = [f"{y % 100:02d}{(y + 1) % 100:02d}" for y in range(2000, 2026) if y != 2019]
def final_order(season, win):
"""Final positions with `win` points for a win. After 33 games the league splits: each half plays the other five
teams in it once more, so teams in the same half meet four times and the rest three. Each team stays in the half
it really played in, and ranks within it on points, then goal difference, then goals scored."""
t, meetings = {}, {}
with open(f"SC0_{season}.csv", encoding="latin-1") as f:
for r in csv.DictReader(f):
if r.get("FTR") not in ("H", "D", "A"):
continue
pair = frozenset((r["HomeTeam"], r["AwayTeam"]))
meetings[pair] = meetings.get(pair, 0) + 1
for team, gf, ga in ((r["HomeTeam"], int(r["FTHG"]), int(r["FTAG"])),
(r["AwayTeam"], int(r["FTAG"]), int(r["FTHG"]))):
p, gd, g, real = t.get(team, (0, 0, 0, 0))
t[team] = (p + win * (gf > ga) + (gf == ga), gd + gf - ga, g + gf, real + 3 * (gf > ga) + (gf == ga))
top = max(t, key=lambda k: t[k][3]) # the real leader is in the top half
half = {top} | {k for k in t if meetings.get(frozenset((top, k))) == 4}
assert len(half) == 6
return [k for h in (half, set(t) - half) for k in sorted(h, key=lambda k: t[k][:3], reverse=True)]
changed = {"champions": [], "bottom": [], "top two": []}
moves = 0
for s in seasons:
three, two = final_order(s, 3), final_order(s, 2)
moves += sum(a != b for a, b in zip(three, two))
if three[0] != two[0]:
changed["champions"].append(f"20{s[:2]}/{s[2:]}: {three[0]} -> {two[0]}")
if three[-1] != two[-1]:
changed["bottom"].append(f"20{s[:2]}/{s[2:]}: {three[-1]} -> {two[-1]}")
if set(three[:2]) != set(two[:2]):
changed["top two"].append(f"20{s[:2]}/{s[2:]}: {', '.join(three[:2])} -> {', '.join(two[:2])}")
print()
print(f"{len(seasons)} seasons, {12 * len(seasons)} final positions; {moves} would change with 2 points for a win")
for k, v in changed.items():
print(f" {k} different in {len(v)}: {'; '.join(v) or '-'}")
def record(season, team):
"""Wins, draws, losses and goal difference for one team."""
w = d = l = gd = 0
with open(f"SC0_{season}.csv", encoding="latin-1") as f:
for r in csv.DictReader(f):
if team in (r["HomeTeam"], r["AwayTeam"]) and r.get("FTR") in ("H", "D", "A"):
gf, ga = (int(r["FTHG"]), int(r["FTAG"])) if r["HomeTeam"] == team else (int(r["FTAG"]), int(r["FTHG"]))
w, d, l, gd = w + (gf > ga), d + (gf == ga), l + (gf < ga), gd + gf - ga
return w, d, l, gd
for s, teams in [("1011", ("Rangers", "Celtic")), ("2526", ("Celtic", "Hearts"))]:
for team in teams:
w, d, l, gd = record(s, team)
print(f" 20{s[:2]}/{s[2:]} {team:<8} won {w}, drew {d}, lost {l}, goal difference {gd:+}: "
f"{3 * w + d} points with 3 for a win, {2 * w + d} with 2")
It prints:
Show the Text11 lines, ready to copy and run.
2 points for a win: both settle, 1.00 points each, a draw 90% of the time
3 points for a win: both push, 1.32 points each, a draw 36% of the time
25 seasons, 300 final positions; 47 would change with 2 points for a win
champions different in 2: 2010/11: Rangers -> Celtic; 2025/26: Celtic -> Hearts
bottom different in 0: -
top two different in 1: 2013/14: Celtic, Motherwell -> Celtic, Aberdeen
2010/11 Rangers won 30, drew 3, lost 5, goal difference +59: 93 points with 3 for a win, 63 with 2
2010/11 Celtic won 29, drew 5, lost 4, goal difference +63: 92 points with 3 for a win, 63 with 2
2025/26 Celtic won 26, drew 4, lost 8, goal difference +32: 82 points with 3 for a win, 56 with 2
2025/26 Hearts won 24, drew 8, lost 6, goal difference +33: 80 points with 3 for a win, 56 with 2
The re-scoring keeps each team in its real half by counting meetings rather than dates: some seasons had fixtures rearranged into the run-in, so "the last five games" isn't always the five after the split.
Further reading
- Three points for a win, Wikipedia. Where and when each league switched, and the arguments for it.
- Mechanism design, Wikipedia. The theory of designing rules, with its main results.
- The 2007 Nobel prize in economic sciences, Nobel Prize website. Hurwicz, Maskin and Myerson, for mechanism design.
- Abolition of the away goals rule in all UEFA club competitions, UEFA (2021). The decision and Čeferin's reasons.