Skip to content
Not supported

Does form matter more than underlying performance?

"Forget the stats, look at the form." Over 26 Scottish Premiership seasons, a side's shot difference predicted its next six games better than its recent points did, and a gap of eight points in form shrank to under one.

Intermediate

Contents

The claim

"Forget the stats. Look at the form."

Form is the first thing anyone checks before a match: the little row of Ws, Ds and Ls next to each team's name. A side on a winning run is confident and hard to beat. A side on a bad run is in trouble, whatever the numbers say about how well it's playing.

Why people believe it

Form is results, and results are what count. Points win leagues, not shots. It also feels like it captures something the numbers miss: confidence, momentum, a dressing room that's together. When a side keeps winning, it's natural to believe it has found something, and when it keeps losing, that something has gone.

The data

Every Scottish Premiership match from 2000/01 to 2025/26 that records shots: 5,877 matches, from football-data.co.uk. Each team's season was cut into spells of six games, giving 1,546 pairs of a six-game spell and the six games that followed it.

The method

For each spell, measure two things:

  • Form: the points the side took from those six games.
  • Underlying performance: its shot difference over the same six games, shots taken minus shots faced.

Then ask which one better predicts the points it takes from the next six games. If form matters more, the points should win.

The evidence

Shot difference predicts better

Measured over the last six games Link with points in the next six
Points (form) 0.44
Goal difference 0.47
Shots on target difference 0.49
Shot difference 0.51

Each number is a correlation: 0 means no link, 1 a perfect one. Recent points are the weakest of the four. Shot difference is the strongest, and the gap between them is too consistent to be chance: across 2,000 resamples of the data, shot difference beat points in 1,998 of them, typically by between 0.03 and 0.10.

Put both into the same prediction and shot difference does about twice as much of the work as recent points.

Hot form, poor football

The clearest test is where form and performance disagree:

Last six games Spells Points then Points in the next six
Hot form (12+ points), but outshot 60 13.1 8.4
Poor form (6 or fewer), but outshooting 96 4.7 7.6

A gap of more than eight points in form shrank to less than one over the next six games. Both groups ended up close to the league average of 8.3 points per six games. The hot side's run was mostly luck, and so was the cold side's slump.

In plain football

  • A side taking 13 points from six games while being outshot is winning more than its football deserves. Expect that to stop.
  • A side taking 5 points from six while outshooting its opponents is playing better than its results. Expect that to turn.
  • Six games is a short run. A couple of deflections, a missed penalty or a red card can swing it, and they don't carry over.

This is regression to the mean: extreme runs of results are partly luck, and luck doesn't last, so what comes next is usually closer to average. Form or luck? lets you see how long a streak pure chance can produce.

Verdict

Not supported. Recent form does predict the next few games, but less well than how a side has actually been playing. When form and performance disagree, back the performance. A winning run while being outshot is a warning sign, and a losing run while outshooting everyone is usually about to end.

Caveats

  • Shots are a rough measure of performance. Expected goals (xG) would be better, but these files don't include it. Shots still did better than points.
  • The correlations are all modest. Six games is a small sample of anything, so none of these measures predicts the next six games well. Shot difference is just the least bad.
  • Confidence and momentum might still exist. This shows that form adds less than shot difference; it doesn't prove that form adds nothing. In a model with both, recent points still carry some weight.
  • Scotland's top two win most games and outshoot most opponents, which strengthens every one of these links a little.

Reproduce the analysis

The results files are published by football-data.co.uk. Download the Premiership file (SC0) for each season and save each under its own name, such as SC0_2425.csv; they aren't rehosted on this site. Then:

import csv, glob, statistics
from datetime import datetime

form, shot_diff, next_points = [], [], []
for path in glob.glob("SC0_*.csv"):
    games = {}
    with open(path, encoding="latin-1") as f:
        for r in csv.DictReader(f):
            if not all(r.get(c) for c in ("FTHG", "FTAG", "HS", "AS")):
                continue
            day = datetime.strptime(r["Date"], "%d/%m/%Y" if len(r["Date"]) == 10 else "%d/%m/%y")
            hg, ag, hs, as_ = (int(r[c]) for c in ("FTHG", "FTAG", "HS", "AS"))
            for team, gf, ga, sf, sa in ((r["HomeTeam"], hg, ag, hs, as_), (r["AwayTeam"], ag, hg, as_, hs)):
                games.setdefault(team, []).append((day, 3 if gf > ga else 1 if gf == ga else 0, sf - sa))
    for rows in games.values():
        rows.sort()
        for start in range(0, len(rows) - 11, 6):              # six games, then the next six
            spell, after = rows[start:start + 6], rows[start + 6:start + 12]
            form.append(sum(g[1] for g in spell))
            shot_diff.append(sum(g[2] for g in spell))
            next_points.append(sum(g[1] for g in after))

print(len(form), "spells")
print(f"form:            {statistics.correlation(form, next_points):.2f}")
print(f"shot difference: {statistics.correlation(shot_diff, next_points):.2f}")

Spotted a flaw in the method, or have a football claim you'd like tested? Suggest it on LinkedIn, where discussion of these articles happens.

Get new pieces by email

An email when something new is published, and the occasional update. Unsubscribe in one click. How your email is used.