Cheonan City FC's 2026 splits in two on 31 May. In the 13 matches before it they took 18 points; in the 13 since, they have not won once. Yet the football in the two halves is almost identical — the chances made, the chances allowed. What changed was how often the opponents' shots went in. I put all 212 league matches on one scale and opened both halves through the four phases and the match status.
On 31 May Cheonan won 3-1 away at Ansan: 16′ 1-0 · 30′ 1-1 · 60′ 2-1 · 90+4′ 3-1. It took them to 18 points from 13 matches (1.38 a match). With half the season still to come, Jin-seop Park's first year looked to be going well.
13 matches have passed since. Cheonan have not won any of them: 5 draws, 8 defeats. In the September table they are 4W 11D 11L, 14th on 23 points.
A slide like that usually has a visible cause — a key player out, opponents who worked them out, performances that fell apart. Cheonan's numbers show almost no sign of performances falling apart. This piece puts the two halves side by side and goes through what stayed the same and what changed, phase by phase and by match status.
I cut the 25 matches with event data at R14. In the first 13 Cheonan went 4W 6D 3L for 18 points. In the next 12 they went 0W 4D 8L for just 4 (the R25 draw with Hwaseong has no event data and is left out).
Re-take the same shots 20,000 times and the expected points are 15.3 for the first part and 14.9 for the second — 1.18 and 1.24 a match. The second part is, if anything, slightly better. Chances made and chances allowed are almost the same.
The first 13 matches brought 2.7 points more than expected; the next 12 brought 10.9 fewer. Re-taking the same shots 20,000 times, a return of 4 points or fewer from the second part came up 0.3% of the time. Over the season: 30.2 expected, 22 taken, a gap of −8.2 — the 4th-largest in the league.
The scoring side did not change. Non-penalty goals: 14 from 14.3 xG in the first part, 12 from 13.0 in the second. Both on expectation.
The conceding side flipped. In the first part Cheonan allowed 17.2 xG and conceded 11 — 6.2 fewer than expected. In the second they allowed 15.1 and conceded 19 — 3.9 more. The swing between the two is about 10 goals, enough to move a season's points by double figures.
Over the whole season, goals conceded are close to expectation (non-penalty goals conceded − xG −2.3, 4th-fewest in the league). The first part was lucky and the second unlucky — on the numbers, that is the most honest explanation. But one more thing sits on that boundary: the goalkeeper.
Dae-han Park kept goal in R1–14 and again in R20–21. Seung-gyu Lee played R15–19, and Ju-won Park from R22. Here they are against the goals expected from where the shots on target were placed.
Dae-han Park faced 68 shots on target and conceded 14, a 79.4% save rate — 6.2 goals fewer than the placement expectation, 2nd of the 20 keepers in the league over the season. Seung-gyu Lee (64.0%) and Ju-won Park (66.7%) were close to expectation. In Park's 15 starts Cheonan took 19 points (expected 17.5); in the other two keepers' 10 starts, 3 (expected 12.8).
This does not show the goalkeeper was the cause · A few dozen shots on target is a small sample, and I could not confirm why Park was left out (injury or selection). Lee and Park did not collapse; they stopped roughly what was expected — it was Dae-han Park's first part that was among the best in the league. What the data supports is this: the rise in goals conceded in the second part came from how often shots went in, not from their quality, and it coincides with the goalkeeper change.
The 25 matches laid out minute by minute: when Cheonan led, when it was level, when they trailed, and when the goals went in.
Cheonan led for 12% of the time, 16th in the league, and trailed for 29%, 4th. They led in 10 matches and gave up the lead in 7 of them — 14 points dropped from winning positions. In the other direction, they came back to draw 5 of the 15 matches in which they conceded first. Cheonan's matches were mostly a chase from behind and a chase from in front.
Cheonan get forward a lot. 38.7 final-third entries a match is 2nd in the league, and 57% of them arrive within ten seconds of the move starting (4th). Cheonan do not hold the ball for long.
But they do not shoot as often as they arrive. 22.7% of entries end in a shot (16th), and for settled attacks it is 22.0% — the lowest in the league. Settled attacks produced 4 goals all season, 16th. Average xG per shot is 0.091, 16th: even once in, they shoot from distance rather than from good positions.
Split by match status, settled attacks were empty whatever the score. Level: 393 chains, 3.4 xG, 2 goals. Trailing: 3.5 xG, 2 goals. Leading: 0.5 xG, 0 goals. Over the season, settled attacks brought 4 goals from 7.4 xG, −3.4 against expectation, 15th in the league.
What the data shows — attack
Cheonan face a lot of shots. 13.5 a match is 3rd in the league, and opponents get into the box 13.8 times a match (3rd). The average height of their defensive actions is 7th — neither high nor deep.
The quality of those shots is ordinary (0.097 xG per shot, 14th). They are shot at often, but from far out. The xG they allow, 1.45 a match, is 6th: on the high side, but not a defence falling apart.
Split by match status, opponents' settled attacks scored 5 from 4.2 xG when level, 0 from 3.8 when Cheonan trailed and 0 from 1.0 when they led. Over the season that is −4.0 against expectation, the 3rd-best in the league. Against opponents with the ball, Cheonan held firm.
The leak is right in front of goal. From 31 shots inside the six-yard box (7.3 xG) they conceded 10 — 2.7 more than expected, the second-largest gap in the league. In the central part of the box it went the other way: 10 from 15.1 xG, 5.1 fewer. Scrambles, second balls and short-range finishes decided it.
What the data shows — defensive block
Cheonan's identity is in transition. 62.0 regains a match and 5.9 in the opponents' half are both the most in the league. Winning the ball back within five seconds of losing it, 27.5% of the time, is also first. And no team loses the ball more often than Cheonan — 75.0 times a match, again first.
So the ball never settles in a Cheonan match. When level, possession changes hands 89.7 times per 90 for Cheonan and 89.9 for their opponents, both the most in the league. The attack that "gets there often and is cut off at the end" and the defence that is "shot at often" are two sides of this table-tennis football.
Split by match status, this phase has two faces. When trailing, Cheonan's attacks after a regain — 403 of them — produced 11 goals from 5.8 xG: +5.2 against expectation, the best in the league. 11 of their 18 goals after a regain came while behind.
Level, it went the other way: 6 goals from 8.0 xG (−2.0, 15th), and 10 conceded to opponents' regains from 12.6 xG. Leading, they conceded 5 to opponents' regains from 2.6 xG — nearly double. When chasing, transition was the weapon; when protecting a lead, it was the hole.
What the data shows — transition
Set pieces are unremarkable. Non-penalty set-piece chains brought 4 goals from 4.0 xG and conceded 6 from 4.8. Both close to expectation. Only one cell stands out: when level, Cheonan conceded 6 from set pieces against 3.6 xG, +2.4 — the largest in the league.
Penalties are strange. Cheonan have conceded 4 goals from the spot this season. All four came while Cheonan were ahead, and all four were equalisers. No team conceded more penalties while leading.
What the data shows — set pieces and penalties
I recounted the goals by match status. In 736 minutes behind, Cheonan scored 15 from 12.0 xG and conceded 4 from 7.8. Goal difference while trailing was +6.8 against expectation — the best in the league.
In 312 minutes ahead they scored 1 from 2.9 xG and conceded 9 from 7.1. While leading that is −3.8 against expectation, 14th in the league. Level, it was −4.2 (14th); Cheonan scored 36% of the goals while level against an expected 42%.
So the draws piled up. Of 10 draws in matches with event data, 5 came after conceding first, 3 after scoring first and 2 were 0-0. 9 goals turned a Cheonan lead into a level score — four of them penalties, two in stoppage time (R15 90+10′, R20 90+7′).
When ahead, Cheonan went long. Their long-pass share while leading, 23.5%, is the highest in the league (average 17.0%). It looks as if they chose to drop off and clear their lines once in front — but that is a tendency read from the numbers; the intent could not be confirmed.
Cheonan scored 6 goals in second-half stoppage time and conceded 6. In points that nets out at −1 — but the order split.
Up to R14, stoppage time was on Cheonan's side. Away at Daegu in R8 they turned 0-1 into 2-1 with goals in the 95th and 99th minutes. From R15 it ran the other way: against Suwon FC in R15 they went ahead in the 96th minute and were caught in the 100th; Yongin equalised in the 97th in R20, and Gyeongnam won it in the 101st in R16. The same picture again — a similar number of goals that turned into points early in the season and into losses later.
The 25 matches side by side on non-penalty xG, labelled Edge, Even or Outplayed with a ±0.3 threshold.
In R1–14 Cheonan had the edge in 4 matches (1W 3D 0L), were even in 2 (1W 1D 0L) and outplayed in 7 (2W 2D 3L). In R15–27: edge 4 (0W 0D 4L), even 2 (0W 0D 2L), outplayed 6 (0W 4D 2L). The first part took points from matches they could have lost; the second could not win the matches they should have won.
1–3 sit on the boundary between the two parts, 4–5 on chasing and protecting, 6–7 on Cheonan's style, 8–10 around them.
The series picks its four matches by rule: (1) the match closest to the season average (2) the match most typical of the team (for Cheonan, xG created within ten seconds of a regain) (3) the match where the result most exceeded the performance (4) the match where the performance most exceeded the result.
Behind from late in the first half, level in the 90th minute. Cheonan at their most typical: concede first, then chase it down.
The opening day. The most xG created within ten seconds of a regain all season. Ahead twice, pegged back by a penalty both times.
The last win. Second-best on the night; pegged back by a penalty, then ahead again. The first part's luck at its clearest.
More than two and a half times the opponents' final-third arrivals. Lost to one goal in the 62nd minute. The second part in miniature.
(1) and (2) are Cheonan at their most typical: they chase when behind and get caught when ahead. (3) is the luck of the first part, (4) the misfortune of the second.
Expected points per match after R15 were 1.24, slightly higher than before (1.18). xG for and against are almost unchanged.
In both parts they scored their xG (14 from 14.3 / 12 from 13.0). It was the conceding side that changed.
Seung-gyu Lee and Ju-won Park conceded close to the placement expectation. The comparison point, Dae-han Park's first part, was among the best in the league. The reason for the change is also unconfirmed.
The opposite. Goal difference against expectation while trailing is the best in the league, and they scored 6 in second-half stoppage time.
Against opponents' settled attacks they conceded fewer than expected. Being shot at often is the cost of a game where the ball never settles; the extra goals came right in front of goal.
Cheonan played the same football all season. They win the ball back the most and lose it the most, get forward often but are cut off at the end, are shot at often but from far out. With that football they took 2.7 points more than expected in the first 13 matches and 10.9 fewer in the next 12. What made the difference was how often opponents' shots went in right in front of goal — and the goalkeeper change sits on that boundary.
Still to play: R28 Gyeongnam (home) · R30 Ansan (home) · R31 Gimhae (away) · R32 Busan (home) · R33 Paju (away) · R34 Daegu (home). Three things to watch.
Limits · The portal's xG model is not published. Expected points treat shots as independent and ignore the order of goals. The portal gives penalties no xG. Match status uses live-feed goal times moved onto the event clock. R25 has no event data and is left out of event-based measures. Each part is only 12–13 matches, and the R14 boundary was chosen after seeing the results. The reason for the goalkeeper change is unconfirmed. These values were found by scanning many measures (multiple comparisons).