How the league learned to play FC Seoul
This began as an attempt to sort Seoul's opponents into high, mid and low blocks. It failed: the same team did not turn up the same way the second time. Following that failure produced something else — 8 of 11 teams dropped their block for the rematch, and the expected goal Seoul get from each ball played into the centre of the box fell by a third over the second half of the season. Their points per game went up anyway.
WHAT THE DATA SAYS
- A team is not a type. Across 17 repeat pairings the within-team correlation of block height is r = −0.280. Ulsan set the second-highest block in the league in March and one of the lowest in August.
- A match is a type. Split the measurement in half inside a single match and it reproduces at 0.930; it correlates −0.874 with PPDA; intraclass correlation 0.844. Round-level classification holds.
- The league changed direction. 8 of 11 teams dropped their block for the rematch. Mean −5.7, exact sign test p = 0.012. It survives controls for match status, possession and home/away.
- Part 1's axis moved by the same amount. xG per delivery into zone 17 — the expected goal earned each time the ball is played into the central cell in front of goal — fell from 0.0587 to 0.0414, −30%. The fall is locatable: the phase where Seoul win the ball in the opponent's half and build from it fell −46%.
- The points held. Opponents attacking less meant xG conceded per game fell −42%. Points per game 2.00 → 2.08.
1A team cannot carry a label
The scouting table that fell apart first
The original plan was simple. Sort the 11 teams Seoul faced into high, mid and low blocks, then see which approach worked. A table you could carry straight into next season's opposition analysis.
That table was never built. Ulsan stopped it.
Same club, same manager, five months apart. In March, Ulsan came to win the ball off Seoul above the halfway line. In August they put ten players in front of their own box and waited. Between the two matches their PPDA — how many passes Seoul get to play in the opponent's half per opposing defensive action — went from 2.61 to 10.65, a fourfold drop in pressing intensity.
It was not only Ulsan. Across all 11 teams, I took the 17 repeat pairings and correlated block height between a team's own matches.
Negative means the teams that pressed highest at the first meeting sat deepest at the next. A scouting note reading “Ulsan sit in a low block” is wrong in one of those two matches, guaranteed.
2Can a match be classified?
Validating the ruler before using it
Block height is the average position of the opponent's defensive actions — tackles won and lost, interceptions, clearances, recoveries, blocks, fouls — expressed as distance from their own goal. 0 is their own goal line, 100 is Seoul's. Sample size runs 103–185 actions per match.
Does the measurement reproduce?
I split each match's defensive actions into odd- and even-numbered events and computed block height twice. If the two halves of the same match disagree, the number cannot be trusted.
| Check | Value | Reading |
|---|---|---|
| Odd/even split-half correlation | +0.868 | Spearman-Brown corrected 0.930 |
| Correlation with PPDA | −0.874 | An independent metric agrees |
| Correlation with share of defending in own third | −0.969 | Same |
| Between-match SD ÷ within-match SE | 4.92 ÷ 1.94 | Signal is 2.5× the noise |
| Intraclass correlation | 0.844 | Match-level classification holds |
Splitting by first and second half instead gives only +0.445. That is not a flaw in the measurement, it is an observation — some sides change their block at the interval. Section 4 returns to it.
Where should the cut go?
My first cut was near-terciles: low below 37, high at 43 or above. Then I resampled each match's defensive actions 1,000 times to see whether the label survived. Nine of 25 matches did not. A match near a boundary flips between mid and low on a slightly different draw of the same events.
| Boundary | Mean label agreement | Unstable (under 70%) |
|---|---|---|
| Low < 37 / High ≥ 43 | 77.5% | 9 matches |
| Low < 36 / High ≥ 44 | 85.8% | 3 matches |
| Low < 35 / High ≥ 45 | 91.2% | 0 matches |
| Low < 34 / High ≥ 46 | 92.6% | 1 match |
I took low below 35, high at 45 or above. It widens the middle band to 18 matches, but a wide honest middle beats a tidy three-way split whose labels do not hold.
The resulting classification:
| Type | Matches |
|---|---|
| High (45+) | R10 Gangwon 49.5 · R02 Ulsan 46.9 |
| Mid (35–45) | R21 Jeonbuk 43.7 · R09 Bucheon 43.4 · R15 Daejeon 43.0 · R01 Incheon 41.6 · R04 Pohang 41.5 · R05 Gwangju 41.3 · R24 Anyang 40.4 · R16 Incheon 40.0 · R22 Gimcheon 39.3 · R08 Daejeon 38.9 · R11 Gimcheon 38.8 · R06 Anyang 38.8 · R03 Jeju 37.7 · R17 Gangwon 37.5 · R12 Anyang 37.5 · R07 Jeonbuk 37.4 · R18 Bucheon 37.1 · R23 Daejeon 36.8 |
| Low (under 35) | R14 Gwangju 33.6 · R25 Bucheon 32.4 · R19 Pohang 32.3 · R20 Ulsan 28.8 · R13 Jeju 28.0 |
All five low-block matches fall in round 13 or later. That is the rest of this piece.
3The league changed direction
Eight dropped, three raised
The eight teams that dropped moved −8.9 on average; the three that raised moved +2.8. The split is not in direction alone but in magnitude. Enumerating all 2,048 sign combinations of the 11 differences, 24 give a mean at or below the observed −5.70 — p = 0.012.
Plotted against round number the same thing appears. Round ↔ block height r = −0.390; round ↔ PPDA r = +0.339. As the season went on, opponents sat deeper and pressed less.
Could something else explain it?
In Part 1, match status destroyed the correlation between crosses and points. The same trap had to be checked here.
| Candidate | Test | Result |
|---|---|---|
| Match status Did opponents step up because Seoul led? |
Recomputed on 0-0 passages only 6 matches with under 30 level-state actions excluded, n=19 |
Round ↔ block r = −0.312 Round ↔ PPDA r = +0.238 Direction holds |
| Possession Did Seoul simply have the ball more later? | Pass share by half of season | 56.9% → 56.6% No change |
| Home / away Were away games back-loaded? | Home matches | 6 of 13 · 6 of 12 Balanced |
4The same thing happens inside a match
Season-long learning and 90-minute learning point the same way
This grid reads two ways.
Read across and you get the scoreboard. When Seoul lead, opponents defend at 41–47; when Seoul trail, they drop to 29–35. Block height is a tactical preference and a function of the score at the same time. This is also why an earlier hypothesis — that Seoul are vulnerable to sides who defend deep and counter — did not survive: opponents did not sit deep and beat Seoul, they stepped up because Seoul were ahead.
Read down and you get time. Even restricting to level passages, the block falls from 39.8 in the opening 15 minutes to 35.6 after the 76th. Seoul are not ahead and the opponent is not chasing, yet the line keeps retreating. That is why the first-half/second-half split-half correlation in section 2 came out at only +0.445.
What took 25 matches to happen across the season also happens inside 90 minutes. Opponents try to meet Seoul high, pay for it, and drop.
5What happened to Seoul
Measured on Part 1's axis
Part 1 concluded that Seoul's goals come not from how often they get the ball into the central cell in front of goal (zone 17) but from how good each of those deliveries is. What that axis did when the league dropped its block is the substantive question here.
A delivery is one ball played into the central cell in front of goal (zone 17). Most are crosses, but not all — of the 604 across these 25 matches, 475 (79%) carry a cross code and the remaining 129 are passes of 8m or more played from outside the box into it. A cutback pulled back along the byline and a through-ball from the half-space both count as one delivery.
xG per delivery is not the xG of the shot that delivery produced. It is the total xG of every shot taken from zone 17 in that period, divided by the number of deliveries. So it measures something different from cross completion, or from the share of crosses that become shots — it is closer to the expected goal a team earns, on average, each time it puts the ball into that place. A shot off the second delivery, or off a clearance won back and played in again, counts in the numerator just the same. This is the number Part 1 meant when it said the answer lay not in how many deliveries but in how good each one is.
xG per delivery went from 0.0587 to 0.0414, −30%. The number of deliveries did not fall — it rose, from 22.5 to 25.9 per match. Put on Part 1's scatter, the shape of it is immediate.
Part 1 showed the wins clustering in the top left: fewer deliveries, more xG from each. Second-half-of-season Seoul moved down and to the right — deliveries up, return on each one down.
Where the xG went
Every shot was traced back through its possession to the moment the ball was won, then sorted into three phases: won in the opponent's half and finished within 15 seconds (counter), won in the opponent's half but built slowly (transition), and built from Seoul's own half (settled).
The largest loss is not the counter but the transition: −46%. Once opponents settle deep in their own half, the chance to win the ball high disappears — there is no one there to win it from. Settled possession fell −23% too. Only counters rose (+35%), and that reads less like “the counter improved” than like the counter being what was left.
And yet the points went up
The same cause ran in the other direction. A side sitting deep also attacks less. xG conceded per game fell from 1.36 to 0.79, −42%, and goals against from 11 to 8. Four fewer goals scored were offset by three fewer conceded.
6What belongs in a scouting report
How far this classification can be pushed
One more trap sits here. Tie the labels straight to results and a very convincing number appears.
| Labelled on | High | Mid | Low |
|---|---|---|---|
| Whole match → points per game | 3.00 (2) | 2.20 (20) | 0.33 (3) |
| 0-0 passages only → points per game | 1.50 (2) | 2.00 (13) | 2.50 (4) |
Read the top row and the headline is “Seoul take 0.33 points per game against a low block”. It is wrong. Two of those three matches (R13 Jeju, R20 Ulsan) are games where Seoul conceded first and the opponent then dropped. Relabel using only the 0-0 passages and the order inverts.
Three things that do survive
One. Opposition profiles have to be versioned by round. Not “this is how they set up” but “this is how they set up last time, and this is what happened”. In a league where the within-team correlation is negative, a profile written in March is unusable in August.
Two. For Seoul, a low block is a cost, not a threat. Labelled on 0-0 passages, low-block matches return the most points. What changes is the way the points arrive — xG per delivery falls, the transition phase disappears, and goals conceded fall with it. The accurate line is not “Seoul cannot break down a deep block” but “against a deep block, Seoul end up playing 1-0 matches”.
Three. The next thing to measure sits before the delivery. Part 1 ended unable to say what determines the quality of a delivery. This piece shows that quality moving −30% with the opponent's block height. What is left is the variance within a given block height, and that will live in the three seconds before the ball is played — the gaps between defenders, the body orientation of the passer, the timing of the far-post run. None of those moments exist in an event feed. Writing the next part needs tracking data.
Appendix · Data and definitions
Source
- K League data portal CHALK BOARD event feed. 2026 season, FC Seoul's 25 matches, 34,518 events for both sides.
- Coordinates are normalised 0–100. Attacking direction was determined per (round, team, half) from shot end X-coordinates and validated against the sum of opponent duel X-coordinates (99.9 agreement).
- Every metric is expressed in Seoul's attacking frame (0 = Seoul's goal, 100 = the opponent's).
Definitions
- Block height — the average position of the opponent's defensive actions (tackle won, tackle lost, interception, clearance, recovery, block, foul committed), as distance from their own goal. Aerial and ground duels are excluded because possession is ambiguous in them.
- PPDA — Seoul's passes attempted in the opponent's half (block-height zone 40 and above) divided by the opponent's defensive actions in the same zone. Lower means more intense pressing.
- Zone 17 — the central cell directly in front of goal on the standard 18-cell grid. X ≥ 83.3, Y 33.3–66.7.
- Delivery, xG per delivery — identical to Part 1. A delivery is a cross that lands in zone 17, or a pass of 8m or more from outside the box into it. xG per delivery is the total xG of that period's zone-17 shots divided by the number of deliveries. Across 25 matches: 604 deliveries, 163 zone-17 shots, 30.08 xG.
- Phase classification — every shot's possession was traced back to the moment the ball was won. Possession changes only on on-ball events (pass, dribble, shot, recovery, tackle won, interception, duel won); defensive interventions (clearances, blocks, fouls) do not transfer possession. Counter = won at 40 or above, within 15 seconds, 4 passes or fewer. Transition = won at 40 or above but slower. Settled = started in Seoul's own half.
- Match status — the goal difference at each event. Own goals are credited to the scoring side (the portal records them under the scorer's own team).
Validation
- Split-half reliability of block height — odd/even split r = +0.868, Spearman-Brown corrected 0.930.
- Convergent validity — PPDA r = −0.874, share of defending in own third r = −0.969, Seoul's final-third pass completion r = −0.349.
- Discrimination — between-match SD 4.92, mean within-match bootstrap SE (1,200 draws) 1.94, ICC 0.844.
- Boundary stability — label retention over 1,000 resamples per match. At the adopted boundary (35/45), mean 91.2%, zero matches below 70%.
- Rematch change — exact sign-randomisation test on the 11 paired differences (all 211 = 2,048 combinations). 24 at or below the observed mean of −5.70, p = 0.012.
Limitations
- One season. 25 matches, 11 teams, 17 repeat pairings. The p = 0.012 comes from 11 values, and whether the direction repeats next season is untested.
- No causation. What opponents were reacting to cannot be recovered from an event feed. The claim here stops at timing, direction and magnitude.
- Some matches have too little 0-0 time. R02, R04, R05, R13, R20 and R24 had fewer than 30 opponent defensive actions at 0-0 because of an early goal, and were excluded from match-status-controlled analysis. Two of the five low-block matches (R13, R20) sit in that group, so their labels are valid on whole-match data only.
- Set-piece coding changes at R19. From that round the portal began recording crosses taken from corner positions with open-play codes, so any first-half/second-half set-piece comparison is unreliable. This piece makes none. Delivery counts apply the same criterion across all rounds, as in Part 1.
- Block height measures position only. A 4-4-2 mid block and a 5-3-2 mid block can share an average position and be different things. Shape and spacing cannot be recovered from event coordinates.
What carries over from Part 1
“Everyone gets the ball to the same place” showed that Seoul's goals come from the quality of their zone-17 deliveries, and ended without being able to say what determines that quality. This piece identifies one variable moving it from the outside: the opponent's block height. Both pieces use the same event feed, the same coordinate normalisation and the same own-goal handling.