‹ ›

1947-48 Prva savezna liga Season

90 games

Final

Champion

Dinamo Zagreb

29 points

Relegated

No relegation

Biggest Overachiever

Dinamo Zagreb

4.39 points above expected

29 points · 24.61 expected points

Biggest Disappointment

Red Star Belgrade

5.10 points below expected

16 points · 21.10 expected points

League Table

The final standings for the season. vsSim shows actual points minus the simulation's mean — positive means the team overachieved against the model, negative means they underperformed.

# Team GP W D L Pts GF GA GD SimPts vsSim
1 Dinamo Zagreb 18 14 1 3 29 56 20 +36 24.61 +4.39
2 Hajduk Split 18 11 2 5 24 40 15 +25 21.51 +2.49
3 Partizan 18 10 4 4 24 46 22 +24 23.25 +0.75
4 Lokomotiva Zagreb 18 7 5 6 19 21 18 +3 15.86 +3.14
5 Red Star Belgrade 18 5 6 7 16 24 25 -1 21.10 -5.10
6 Metalac Beograd 18 4 8 6 16 16 24 -8 15.33 +0.67
7 Ponziana Trieste 18 6 4 8 16 21 45 -24 13.94 +2.06
8 Vardar 18 5 4 9 14 22 39 -17 13.61 +0.39
9 Spartak Subotica 18 5 1 12 11 21 38 -17 15.45 -4.45
10 Sarajevo 18 2 7 9 11 19 40 -21 15.34 -4.34

Top Overachievers & Disappointments

Teams that most beat — or most fell short of — their simulated point projections. A positive vsSim means the team accumulated more points than the model expected on average; a negative one means fewer.

Biggest Overachievers

# Team Actual Sim vsSim
1 Dinamo Zagreb 29 24.61 +4.39
2 Lokomotiva Zagreb 19 15.86 +3.14
3 Hajduk Split 24 21.51 +2.49
4 Ponziana Trieste 16 13.94 +2.06
5 Partizan 24 23.25 +0.75

Biggest Disappointments

# Team Actual Sim vsSim
1 Red Star Belgrade 16 21.10 -5.10
2 Spartak Subotica 11 15.45 -4.45
3 Sarajevo 11 15.34 -4.34
4 Vardar 14 13.61 +0.39
5 Metalac Beograd 16 15.33 +0.67

Top Streaks

Ranked by model unlikelihood — the product of pregame W/D/L probabilities over the games in each team's streak. A short streak by a poor team can outrank a longer one by a strong team since the poor team's per-game probabilities were lower going in. Unbeaten counts consecutive wins or ties; Winless counts consecutive losses or ties.

Most Unlikely Winning Streaks

# Team Games Dates Probability
1 Dinamo Zagreb 8 Oct 26 – Apr 25 1 in 69
2 Hajduk Split 4 Sep 28 – Mar 14 1 in 40
3 Spartak Subotica 3 Sep 28 – Oct 19 1 in 20
4 Lokomotiva Zagreb 3 Aug 31 – Sep 14 1 in 10
5 Ponziana Trieste 1 Aug 24 – Aug 24 1 in 6

Most Unlikely Losing Streaks

# Team Games Dates Probability
1 Spartak Subotica 5 Aug 17 – Sep 18 1 in 121
2 Red Star Belgrade 4 Apr 27 – May 22 1 in 36
3 Hajduk Split 2 Sep 17 – Sep 21 1 in 23
4 Sarajevo 3 Oct 5 – Mar 14 1 in 15
5 Metalac Beograd 2 Mar 28 – Apr 4 1 in 9

Most Unlikely Unbeaten Streaks

# Team Games Dates Probability
1 Hajduk Split 7 Sep 28 – Apr 4 1 in 14
2 Sarajevo 4 Sep 7 – Sep 28 1 in 14
3 Spartak Subotica 4 Sep 21 – Oct 19 1 in 9
4 Red Star Belgrade 6 Aug 17 – Sep 21 1 in 8
5 Metalac Beograd 3 Aug 17 – Aug 31 1 in 7

Most Unlikely Winless Streaks

# Team Games Dates Probability
1 Partizan 3 Aug 24 – Sep 7 1 in 27
2 Red Star Belgrade 5 Sep 21 – Mar 21 1 in 24
3 Metalac Beograd 7 Oct 26 – Apr 11 1 in 14
4 Spartak Subotica 6 Aug 17 – Sep 21 1 in 11
5 Sarajevo 7 Mar 28 – Jun 1 1 in 7

Position Race

Each team’s league position across the whole season. Colored teams are the season’s headline finishers — champion, promoted, and relegated; everyone else is gray as context.

Recent Form

Each team’s last 5 games, hottest first. Form shows the results (navy win, gray draw, red loss, newest on the right); the bars show Elo change over the window, points taken, points expected from the odds, and actual minus expected. Beside each team: current Elo and season points.

Team Elo Season Pts Form Elo Δ (5) Points (5) Expected (5) Actual − Exp
Dinamo Zagreb 1798 29 +34 8 6.8 +1.2
Partizan 1776 24 +42 8 5.9 +2.1
Hajduk Split 1688 24 +1 5 6.0 -1.0
Lokomotiva Zagreb 1547 19 +14 6 4.6 +1.4
Metalac Beograd 1457 16 -26 5 4.9 +0.1
Ponziana Trieste 1429 16 -21 5 4.3 +0.7
Red Star Belgrade 1590 16 -42 1 5.2 -4.2
Vardar 1454 14 -7 5 4.7 +0.3
Spartak Subotica 1465 11 -4 4 4.7 -0.7
Sarajevo 1446 11 -15 3 3.7 -0.7

Head-to-Head

Each cell shows a team's record in that matchup (row vs column, formatted W-D-L) with the model's expected points on the line below. Navy-tinted cells mean the team beat the model's expectations by more than one point in that matchup; gold-tinted cells mean they fell short by the same margin.

Beat expectations Fell short Within expectations
Team DZ HS LZ MB PAR PT RSB SAR SS VAR
Dinamo Zagreb —
2-0-0
3.26
0-0-2
4.19
2-0-0
4.44
1-0-1
3.02
2-0-0
4.33
1-1-0
3.41
2-0-0
4.41
2-0-0
3.95
2-0-0
4.35
Hajduk Split
0-0-2
2.26
—
1-1-0
3.63
1-0-1
3.66
1-0-1
2.36
0-1-1
4.01
2-0-0
2.87
2-0-0
3.51
2-0-0
3.86
2-0-0
3.84
Lokomotiva Zagreb
2-0-0
1.37
0-1-1
1.89
—
2-0-0
2.90
1-0-1
1.49
1-0-1
3.31
0-2-0
2.10
0-2-0
3.07
0-0-2
3.13
1-0-1
3.11
Metalac Beograd
0-0-2
1.13
1-0-1
1.88
0-0-2
2.62
—
0-2-0
1.47
1-1-0
2.95
1-1-0
1.91
0-2-0
2.71
1-1-0
2.77
0-1-1
2.97
Partizan
1-0-1
2.50
1-0-1
3.16
1-0-1
4.05
0-2-0
4.08
—
2-0-0
4.33
1-1-0
3.32
1-1-0
4.08
2-0-0
4.17
1-0-1
4.28
Ponziana Trieste
0-0-2
1.24
1-1-0
1.54
1-0-1
2.21
0-1-1
2.56
0-0-2
1.24
—
1-0-1
1.80
1-1-0
2.50
2-0-0
2.50
0-1-1
2.77
Red Star Belgrade
0-1-1
2.12
0-0-2
2.65
0-2-0
3.42
0-1-1
3.62
0-1-1
2.19
1-0-1
3.74
—
1-0-1
3.60
2-0-0
3.59
1-1-0
3.75
Sarajevo
0-0-2
1.15
0-0-2
2.02
0-2-0
2.45
0-2-0
2.80
0-1-1
1.46
0-1-1
3.02
1-0-1
1.92
—
0-0-2
2.81
1-1-0
2.79
Spartak Subotica
0-0-2
1.60
0-0-2
1.68
2-0-0
2.39
0-1-1
2.74
0-0-2
1.39
0-0-2
3.01
0-0-2
1.94
2-0-0
2.71
—
1-0-1
2.93
Vardar
0-0-2
1.21
0-0-2
1.70
1-0-1
2.40
1-1-0
2.55
1-0-1
1.28
1-1-0
2.74
0-1-1
1.78
0-1-1
2.72
1-0-1
2.59
—

Points vs. Goals Scored, Allowed, and Differential

Points plotted against goals scored, allowed, and differential. Use the buttons to switch views; hover a team for exact values. The table gives each fit's R² and slope (the change in points per 10 goals).

Fit Metrics

R² Slope
Scored 0.82 +4.0
Allowed 0.55 -4.1
Differential 0.90 +2.6

Scoreline Distribution

Percentage of games ending with each combination of team-goals (rows) and opponent-goals (columns). The diagonal shows draws; cells below the diagonal are wins from the row team's perspective, cells above are losses. Marginal totals on the right and bottom show how often each goal count occurred regardless of opponent. Use the picker to switch between the league-wide view and any individual team.

↓ Scored | Allowed →012345+Total
07.78%7.22%5.56%3.33%1.67%1.67%27.22%
17.22%12.22%6.67%2.22%0.56%4.44%33.33%
25.56%6.67%2.22%2.22%1.67%—18.33%
33.33%2.22%2.22%1.11%0.56%0.56%10.00%
41.67%0.56%1.67%0.56%——4.44%
5+1.67%4.44%—0.56%——6.67%
Total27.22%33.33%18.33%10.00%4.44%6.67%100%

Summary Statistics

Scored Allowed Difference
Mean 1.59 1.59 +0.00
SD 1.72 1.72 2.56
CV 1.08 1.08 —
Max 12 12 +11
Min 0 0 -11

Games Played: 90

↓ Scored | Allowed →012345+Total
0—5.56%5.56%———11.11%
15.56%5.56%—5.56%——16.67%
25.56%5.56%————11.11%
35.56%5.56%11.11%———22.22%
45.56%—————5.56%
5+5.56%22.22%—5.56%——33.33%
Total27.78%44.44%16.67%11.11%——100%

Summary Statistics

Scored Allowed Difference
Mean 3.11 1.11 +2.00
SD 2.05 0.96 2.30
CV 0.66 0.87 —
Max 6 3 +5
Min 0 0 -2

Games Played: 18

↓ Scored | Allowed →012345+Total
011.11%5.56%11.11%———27.78%
111.11%—11.11%———22.22%
211.11%5.56%————16.67%
311.11%—————11.11%
45.56%—11.11%———16.67%
5+—5.56%————5.56%
Total50.00%16.67%33.33%———100%

Summary Statistics

Scored Allowed Difference
Mean 2.22 0.83 +1.39
SD 2.84 0.92 2.97
CV 1.28 1.11 —
Max 12 2 +11
Min 0 0 -2

Games Played: 18

↓ Scored | Allowed →012345+Total
016.67%11.11%5.56%5.56%——38.89%
111.11%5.56%5.56%———22.22%
25.56%5.56%5.56%—5.56%—22.22%
311.11%5.56%————16.67%
4———————
5+———————
Total44.44%27.78%16.67%5.56%5.56%—100%

Summary Statistics

Scored Allowed Difference
Mean 1.17 1.00 +0.17
SD 1.15 1.19 1.69
CV 0.99 1.19 —
Max 3 4 +3
Min 0 0 -3

Games Played: 18

↓ Scored | Allowed →012345+Total
016.67%——16.67%——33.33%
15.56%22.22%11.11%5.56%——44.44%
25.56%11.11%5.56%———22.22%
3———————
4———————
5+———————
Total27.78%33.33%16.67%22.22%——100%

Summary Statistics

Scored Allowed Difference
Mean 0.89 1.33 -0.44
SD 0.76 1.14 1.46
CV 0.85 0.85 —
Max 2 3 +2
Min 0 0 -3

Games Played: 18

↓ Scored | Allowed →012345+Total
05.56%5.56%————11.11%
15.56%11.11%5.56%5.56%——27.78%
25.56%5.56%————11.11%
3—11.11%5.56%5.56%5.56%—27.78%
45.56%—————5.56%
5+5.56%11.11%————16.67%
Total27.78%44.44%11.11%11.11%5.56%—100%

Summary Statistics

Scored Allowed Difference
Mean 2.56 1.22 +1.33
SD 2.04 1.17 2.38
CV 0.80 0.95 —
Max 8 4 +7
Min 0 0 -2

Games Played: 18

↓ Scored | Allowed →012345+Total
05.56%—11.11%5.56%—16.67%38.89%
111.11%16.67%———5.56%33.33%
2—5.56%————5.56%
35.56%—5.56%——5.56%16.67%
4——5.56%———5.56%
5+———————
Total22.22%22.22%22.22%5.56%—27.78%100%

Summary Statistics

Scored Allowed Difference
Mean 1.17 2.50 -1.33
SD 1.29 2.46 2.93
CV 1.11 0.98 —
Max 4 8 +3
Min 0 0 -7

Games Played: 18

↓ Scored | Allowed →012345+Total
05.56%16.67%——5.56%—27.78%
1—22.22%11.11%——5.56%38.89%
211.11%5.56%5.56%———22.22%
3———————
4—5.56%————5.56%
5+—5.56%————5.56%
Total16.67%55.56%16.67%—5.56%5.56%100%

Summary Statistics

Scored Allowed Difference
Mean 1.33 1.39 -0.06
SD 1.37 1.29 2.04
CV 1.03 0.93 —
Max 5 5 +4
Min 0 0 -4

Games Played: 18

↓ Scored | Allowed →012345+Total
011.11%11.11%—5.56%——27.78%
1—16.67%5.56%—5.56%16.67%44.44%
25.56%5.56%5.56%—5.56%—22.22%
3———5.56%——5.56%
4———————
5+———————
Total16.67%33.33%11.11%11.11%11.11%16.67%100%

Summary Statistics

Scored Allowed Difference
Mean 1.06 2.22 -1.17
SD 0.87 1.90 1.92
CV 0.83 0.85 —
Max 3 6 +2
Min 0 0 -5

Games Played: 18

↓ Scored | Allowed →012345+Total
0—5.56%11.11%———16.67%
116.67%5.56%11.11%5.56%—11.11%50.00%
25.56%5.56%—16.67%5.56%—33.33%
3———————
4———————
5+———————
Total22.22%16.67%22.22%22.22%5.56%11.11%100%

Summary Statistics

Scored Allowed Difference
Mean 1.17 2.11 -0.94
SD 0.71 1.75 1.80
CV 0.61 0.83 —
Max 2 6 +2
Min 0 0 -5

Games Played: 18

↓ Scored | Allowed →012345+Total
05.56%11.11%11.11%—11.11%—38.89%
15.56%16.67%5.56%——5.56%33.33%
2—11.11%—5.56%——16.67%
3———————
4———5.56%——5.56%
5+5.56%—————5.56%
Total16.67%38.89%16.67%11.11%11.11%5.56%100%

Summary Statistics

Scored Allowed Difference
Mean 1.22 2.17 -0.94
SD 1.59 2.75 3.33
CV 1.30 1.27 —
Max 6 12 +6
Min 0 0 -11

Games Played: 18

Season Summary

Every team's regular-season finish compared against 100,000 simulations. Click any column header to sort. Luck is the team's actual points minus the sim's mean — positive means the team beat the model. Percentile is where the actual result fell in the team's sim distribution (e.g. 90% = the team did this well or better in only 10% of sims).

Team Elo Points Avg Luck Percentile Min 5th Q1 Median Q3 95th Max
Dinamo Zagreb 1798 29 24.61 +4.39 96.0% 19 20 22 25 26 29 31
Partizan 1776 24 23.25 +0.75 67.0% 15 17 21 23 25 28 31
Hajduk Split 1688 24 21.51 +2.49 81.0% 15 17 19 21 24 27 29
Red Star Belgrade 1590 16 21.10 -5.10 7.0% 12 15 19 21 23 27 29
Lokomotiva Zagreb 1547 19 15.86 +3.14 90.0% 9 11 14 16 17 20 26
Spartak Subotica 1465 11 15.45 -4.45 13.0% 8 9 13 15 18 20 23
Metalac Beograd 1457 16 15.33 +0.67 64.0% 8 10 13 15 18 21 24
Vardar 1454 14 13.61 +0.39 59.0% 7 8 11 13 16 18 20
Sarajevo 1446 11 15.34 -4.34 18.0% 8 10 13 15 17 21 23
Ponziana Trieste 1429 16 13.94 +2.06 79.0% 6 8 11 14 16 20 26

Point Totals in Context

How did each team's actual results compare to their simulated points, Elo rating, average opponent Elo, and percentile within simulated outcomes? Use the buttons to switch between views. In each chart, dashed crosshairs at the league means split the plot into four quadrants: pastel green (team did well, model agreed), pastel red (team did poorly, model agreed), and pastel yellow (model and reality disagreed).

Home-Field Advantage Edge

The simulation applies the same home-field boost to every game across the league, so the per-game home win probabilities bake in the model's idea of HFA. For each team, we sum expected points at home and compare to actual home points, and the same on the road. The bar shows (home points above expected) minus (away points above expected). A tall positive bar means the team's home/road split exceeded what the model predicted — a real fortress effect. A tall negative bar means the reverse: they played worse at home or better on the road than expected.

Season Trends

How each metric evolved across the season - Elo rating, actual and projected points, title/promotion probability, and relegation probability - day by day.

Edges & Scoring

How these are measured

The navy dot is the actual value, the gold line and key are the model's reference where one applies, and the slate ticks are the cutoffs between read labels listed under each metric.

Home Edge
Share of matches won by the home team minus the share won by the away team.
No Edge: under 33.5% * Slight Edge: 33.5% to 40% * Clear Edge: 40% to 45.5% * Strong Edge: 45.5% and up.
Elo Value
Number of Elo rating points one goal is worth. A team this many Elo points better than another is expected to win by one goal on a neutral field.
Scoring Tilt
Average home goals minus average away goals per match. The gold line is the home goals edge implied by the scoring value of an Elo point and the home-field Elo bonus.
Road-Tilted: under -0.2 * Neutral: -0.2 to 0.5 * Home-Tilted: 0.5 to 1.2 * Strong Home: 1.2 and up.
Home Edge
HomeDrawAway
+27.78%
No Edge
52.22%23.33%24.44%
Elo Value
Home Edge
129 Elo
0.008 goals per Elo point
099.11400
Scoring Tilt
Expected
+0.67 goals
Home-Tilted
-2+0.77+2

Title Race

How these are measured

The navy dot is the actual value, the gold line and key are the model's reference where one applies, and the slate ticks are the cutoffs between read labels listed under each metric.

Title-Race Openness
Effective number of teams with a live shot at finishing 1st, from the simulation. 1 means the favorite is a near-lock; larger means a wide-open race. Equal to 1 divided by the sum of squared title odds.
One-Team Race: under 4 * Top-Heavy: 4 to 5 * Open: 5 to 7 * Wide Open: 7 and up.
Champion Preseason Odds
Preseason probability that the eventual champion would finish 1st, from the simulation. The dot marks their rank across all teams, from longshot to favorite.
Preseason Favorite: 1st * Among the Favorites: 2nd * Middle of the Pack: 3rd to 5th * Longshot: 6th or lower.
Title Margin
Points-per-game gap between the champion and the runner-up. Shown per game so it reads the same across long and short seasons. The gold line is the winning margin the model expected, so a dot to the right means a more one-sided race than projected. A title won on goal difference shows 0.00.
Photo Finish: under 0.05 * Tight Race: 0.05 to 0.09 * Comfortable: 0.09 to 0.17 * Runaway: 0.17 and up.
Title-Race Openness
3.0
One-Team Race
145710
Champion Preseason Odds
48%
Dinamo Zagreb, 1st of 10
LongshotFavorite
Title Margin
Expected
0.28/gm
Runaway
00.130.5/gm

Simulation-Based Surprises

How these are measured

The navy dot is the actual value, the gold line and key are the model's reference where one applies, and the slate ticks are the cutoffs between read labels listed under each metric.

Luck Spread
Standard deviation of the gap between each team's actual points and their simulated average points. The gold line is the spread the model expected from chance alone.
As Expected: under 2.58 * Some Luck: 2.58 to 3.87 * Lucky: 3.87 to 5.16 * Wild Swing: 5.16 and up.
Average Finish Error
Average gap between where each team was projected to finish and where they actually finished in the table.
Pinpoint: under 1.26 * Close: 1.26 to 1.88 * Off: 1.88 to 2.51 * Way Off: 2.51 and up.
Biggest Overachiever
The team that finished highest inside its own range of simulated outcomes. The gold line is where the top team in a league of 10 typically lands.
Biggest Underachiever
The team that finished lowest inside its own range of simulated outcomes. The gold line is where the bottom team in a league of 10 typically lands.
Season Outliers
Number of teams that finished above the 95th or below the 5th percentile of their own simulated range. Even a well-calibrated model expects about 10% of teams in the extremes.
Minimal Outliers: under 10 * As Expected: 10 to 16 * Several Outliers: 16 to 22 * Many Outliers: 22 and up.
Luck Spread
Expected
3.25 points
Some Luck
03.228
Average Finish Error
Expected
1.60
Close
01.574
Biggest Overachiever
Expected 95.00%
96.00%
Dinamo Zagreb
50100
Biggest Underachiever
Expected 5.00%
7.00%
Red Star Belgrade
050
Season Outliers
Expected
1 of 10
Minimal Outliers
01.010

Parity

How these are measured

The navy dot is the actual value, the gold line and key are the model's reference where one applies, and the slate ticks are the cutoffs between read labels listed under each metric.

Gini Index
How evenly points were spread across the league. Lower means a tight, balanced table; higher means a few teams ran off with most of the points.
Balanced: under 0.09 * Even: 0.09 to 0.11 * Top-Heavy: 0.11 to 0.16 * Lopsided: 0.16 and up.
Noll-Scully
Take a league where every match is a coin flip and nobody is better than anybody. You would still get a table, with a leader and a bottom club, purely by luck, and you can work out how far apart that table would be. This is the real table measured against it. At 1.00 the season was no more spread out than pure chance; at 2.00 it was twice as spread out, which takes genuine differences in quality. Dividing by the luck figure is what makes seasons of different lengths comparable, because a short season spreads a table by luck alone far more than a long one does. Elo SD in the corner is the same question in rating points: how far apart the teams finished on the ratings.
Coin-Flip Parity: under 1.15 * Moderate Separation: 1.15 to 1.35 * Strong Separation: 1.35 to 1.65 * Wide Separation: 1.65 and up.
Interquartile Edge
Chance the team at the 75th percentile of Elo would beat the team at the 25th percentile on a neutral field. Higher means a bigger gap between the upper and lower half of the table.
Even: under 61% * Slight Edge: 61% to 63.5% * Clear Edge: 63.5% to 67% * Wide Edge: 67% and up.
Best vs. Worst
Chance the top-rated team would beat the bottom-rated team on a neutral field. The gold line is how large that gap tends to be in a league of this size; a dot to the right flags an unusually dominant or unusually weak team.
Even: under 82% * Clear Edge: 82% to 86.5% * Strong Edge: 86.5% to 92% * Dominant: 92% and up.
Close Games
Share of matches decided by 1 goal or fewer, draws included. The gold line is how many close games the matchups and the scoring value of an Elo point predict.
Few: under 56% * Some Drama: 56% to 60.5% * Frequent: 60.5% to 64% * Very Frequent: 64% and up.
Blowouts
Share of matches decided by 3 goals or more. The gold line is how many routs the matchups and the scoring model predict.
Rare: under 15.5% * Occasional: 15.5% to 18.5% * Frequent: 18.5% to 20.5% * Very Frequent: 20.5% and up.
Gini Index
0.17
Lopsided
00.090.160.5
Noll-Scully
Elo SD: 142.22
1.61
Strong Separation
0.91.151.351.652.5
Interquartile Edge
77%
Wide Edge
50%61%67%100%
Best vs. Worst
Baseline 94%
89%
Strong Edge
50%100%
Close Games
Expected
57%
Some Drama
0%44%100%
Blowouts
Expected
24%
Very Frequent
0%33%100%

Predictability

How these are measured

The navy dot is the actual value, the gold line and key are the model's reference where one applies, and the slate ticks are the cutoffs between read labels listed under each metric.

Brier Score
How close the pregame probabilities landed to the actual result, averaged over the season. Confident, correct calls are rewarded most; confident misses are punished most. Lower is better; since draws are possible, a score under 0.66 beats guessing the base rate.
Highly Predictable: under 0.56 * Predictable: 0.56 to 0.62 * Hard to Predict: 0.62 to 0.66 * Coin-Flip: 0.66 and up.
Matchup Imbalance
How lopsided the matchups were on paper, averaging the gap between the two win probabilities over their sum. 0 means every match was a toss-up; 1 means every match was a heavy favorite against a big underdog.
Very Even: under 0.54 * Slight Separation: 0.54 to 0.62 * Notable Separation: 0.62 to 0.69 * Lopsided: 0.69 and up.
Strangeness
How wild the final table was versus what the model expected. A value of 1 means teams landed about one standard deviation from their projections on average. Above 1 is a stranger season; below 1 hugged the projections.
Very Predictable: under 0.8 * As Expected: 0.8 to 1.1 * Wilder Than Modeled: 1.1 to 1.4 * Chaotic: 1.4 and up.
Repeatability
How closely the final table order matched the preseason Elo order, by Spearman rank correlation. Higher means last season's ratings strongly predicted this season's finish. Shows N/A for an inaugural season.
Weak Carryover: under 0.47 * Some Carryover: 0.47 to 0.6 * Strong Carryover: 0.6 to 0.69 * Near-Lock: 0.69 and up.
Upset Rate
Share of matches the underdog won. The gold line is how often the model expected underdogs to win; a dot to the right means upsets ran hotter than expected.
Chalky: under 13.5% * As Expected: 13.5% to 15.5% * Upset-Prone: 15.5% to 20% * Very Upset-Prone: 20% and up.
Clear Favorite Upset Rate
Share of matches the underdog won, counting only games with a clear favorite (at least 60% likely to win once a draw is set aside). The gold line is how often the model expected these favorites to slip.
Solid Favorites: under 13% * As Expected: 13% to 14.5% * Shaky Favorites: 14.5% to 18.5% * Very Shaky: 18.5% and up.
Brier Score
Expected
0.55
Highly Predictable
00.552
Matchup Imbalance
0.51
Very Even
00.5
Strangeness
Expected
1.07
As Expected
01.002
Repeatability
0.57
Some Carryover
00.470.61
Upset Rate
Expected
18%
Upset-Prone
0%19%50%
Clear Favorite Upset Rate
Expected
16%
Shaky Favorites
0%16%50%

Calibration

How these are measured

The navy dot is the actual value, the gold line and key are the model's reference where one applies, and the slate ticks are the cutoffs between read labels listed under each metric.

Probability calibration
An all-in-one chi-square test of the model's probabilities. Matches are grouped by how confident the model was, and within each group the predicted and actual counts of home wins, draws, and away wins are compared. The p-value is plotted; above 0.05 means well-calibrated.
Miscalibrated: under 0.05 * Borderline: 0.05 to 0.1 * Well Calibrated: 0.1 to 0.5 * Excellent: 0.5 and up.
Calibration slope
Checks whether the spread of the probabilities is right. Each probability is turned into log-odds and a line is fit predicting the actual results. A slope of 1.00 is perfect; below 1 is overconfidence (favorites lost more than their odds implied); above 1 is under-confidence.
Overconfident: under 0.85 * Calibrated: 0.85 to 1.15 * Underconfident: 1.15 to 1.3 * Very Underconfident: 1.3 and up.
Calibration error (ECE)
The average gap between the model's stated chances and how often the predicted result actually happened. Smaller is better. The gold line is the noise ceiling, the error luck alone can produce even with perfect probabilities; below it, the model's error is no larger than chance.
Well Within Noise: under 0.17 * Near Noise Ceiling: 0.17 to 0.25 * Above Noise: 0.25 to 0.33 * Well Above Noise: 0.33 and up.
Probability calibration
0.91
Excellent
0.010.050.10.51
Calibration slope
Ideal
0.94
Calibrated
0.51.001.5
Calibration error (ECE)
Noise ceiling
0.121
Well Within Noise
00.1660.4

Final Table Odds

Each cell is the probability — across 100,000 simulations — that the team (row) finished at that position (column). Rows are sorted by actual finish (champion at top, bottom of the table at the bottom).

Team12345678910
Dinamo Zagreb48.00%28.00%14.00%9.00%1.00%—————
Hajduk Split13.00%21.00%27.00%19.00%13.00%6.00%1.00%———
Partizan29.00%33.00%18.00%13.00%3.00%1.00%1.00%1.00%1.00%—
Lokomotiva Zagreb1.00%—3.00%3.00%19.00%20.00%25.00%14.00%10.00%5.00%
Red Star Belgrade7.00%15.00%30.00%27.00%7.00%9.00%1.00%2.00%2.00%—
Metalac Beograd—1.00%2.00%10.00%16.00%14.00%8.00%21.00%17.00%11.00%
Ponziana Trieste1.00%1.00%2.00%5.00%5.00%8.00%18.00%7.00%21.00%32.00%
Vardar——1.00%2.00%6.00%13.00%15.00%17.00%21.00%25.00%
Spartak Subotica—1.00%2.00%4.00%16.00%17.00%13.00%21.00%14.00%12.00%
Sarajevo1.00%—1.00%8.00%14.00%12.00%18.00%17.00%14.00%15.00%

Points Required Per Position

The empirical CDF of simulated point totals per finishing position. Each curve shows, for one position (1st, 2nd, ..., last), the spread of point totals teams accumulated across simulations. Reading the curve at the 50% mark gives the median points typically needed to finish at that position. Steep curves mean the position is tightly clustered around a particular point range; shallow curves mean the position came with a wide variety of point totals.

Next-Season Status

Across 100,000 regular-season simulations, the probability of each team's next-season status. Columns appear in best-to-worst outcome order: promotion-positive on the left, relegation-positive on the right. Cells with darker shading indicate higher likelihood.

Team Same level Qualified for relegation playoff Direct relegation
Dinamo Zagreb 100% — —
Hajduk Split 100% — —
Partizan 98.00% 1.00% 1.00%
Red Star Belgrade 96.00% 2.00% 2.00%
Lokomotiva Zagreb 71.00% 14.00% 15.00%
Spartak Subotica 53.00% 21.00% 26.00%
Metalac Beograd 51.00% 21.00% 28.00%
Sarajevo 54.00% 17.00% 29.00%
Vardar 37.00% 17.00% 46.00%
Ponziana Trieste 40.00% 7.00% 53.00%

Overall Game Log

Summary of every completed game this season. Sort any column by clicking its header.

Date Opponent ScoreExcitement Pre Elo Opp Elo Win % Tie % Loss %Proj. Margin Elo Δ Points
1947-08-17 Red Star Belgrade D 1-166.2 1502 1624 42.46% 24.74% 32.80%-0.18 -0.4 1
1947-08-17 @ Lokomotiva Zagreb D 1-166.2 1624 1502 32.80% 24.74% 42.46%+0.18 +0.4 1
1947-08-17 Hajduk Split W 1-055.7 1478 1626 39.02% 24.68% 36.30%-0.37 +8.2 2
1947-08-17 @ Metalac Beograd L 0-155.7 1626 1478 36.30% 24.68% 39.02%+0.37 -8.2 0
1947-08-17 Vardar W 4-042.3 1730 1460 74.91% 20.10% 4.99%+2.86 +4.8 2
1947-08-17 @ Partizan L 0-442.3 1460 1730 4.99% 20.10% 74.91%-2.86 -4.8 0
1947-08-17 Dinamo Zagreb L 1-655.7 1527 1720 32.74% 24.45% 42.80%-0.73 -27.5 0
1947-08-17 @ Spartak Subotica W 6-155.7 1720 1527 42.80% 24.45% 32.74%+0.73 +27.5 2
1947-08-21 Ponziana Trieste D 1-161.4 1525 1456 62.90% 23.64% 13.46%+1.31 -2.5 1
1947-08-21 @ Sarajevo D 1-161.4 1456 1525 13.46% 23.64% 62.90%-1.31 +2.5 1
1947-08-24 Lokomotiva Zagreb W 4-253.8 1617 1501 66.37% 22.98% 10.65%+1.67 +4.2 2
1947-08-24 @ Hajduk Split L 2-453.8 1501 1617 10.65% 22.98% 66.37%-1.67 -4.2 1
1947-08-24 Metalac Beograd D 0-066.4 1735 1486 73.90% 20.56% 5.54%+2.70 -4.0 3
1947-08-24 @ Partizan D 0-066.4 1486 1735 5.54% 20.56% 73.90%-2.70 +4.0 3
1947-08-24 Sarajevo W 4-149.4 1624 1523 65.34% 23.20% 11.46%+1.56 +7.2 3
1947-08-24 @ Red Star Belgrade L 1-449.4 1523 1624 11.46% 23.20% 65.34%-1.56 -7.2 1
1947-08-24 Ponziana Trieste L 0-157.5 1500 1459 60.61% 23.96% 15.43%+1.09 -12.7 0
1947-08-24 @ Spartak Subotica W 1-057.5 1459 1500 15.43% 23.96% 60.61%-1.09 +12.7 3
1947-08-24 Dinamo Zagreb L 2-361.8 1456 1748 21.34% 23.46% 55.20%-1.50 -4.7 0
1947-08-24 @ Vardar W 3-261.8 1748 1456 55.20% 23.46% 21.34%+1.50 +4.7 4
1947-08-31 Ponziana Trieste W 5-042.4 1752 1471 75.45% 19.85% 4.71%+2.95 +5.5 6
1947-08-31 @ Dinamo Zagreb L 0-542.4 1471 1752 4.71% 19.85% 75.45%-2.95 -5.5 3
1947-08-31 Partizan W 3-164.5 1497 1731 27.63% 24.12% 48.25%-1.05 +16.7 3
1947-08-31 @ Lokomotiva Zagreb L 1-364.5 1731 1497 48.25% 24.12% 27.63%+1.05 -16.7 3
1947-08-31 Vardar D 0-056.4 1490 1451 60.46% 23.97% 15.57%+1.08 -2.5 4
1947-08-31 @ Metalac Beograd D 0-056.4 1451 1490 15.57% 23.97% 60.46%-1.08 +2.5 1
1947-08-31 Hajduk Split L 0-355.3 1516 1622 44.62% 24.75% 30.64%-0.05 -26.3 1
1947-08-31 @ Sarajevo W 3-055.3 1622 1516 30.64% 24.75% 44.62%+0.05 +26.3 4
1947-08-31 Red Star Belgrade L 0-255.0 1487 1631 39.46% 24.69% 35.86%-0.35 -16.4 0
1947-08-31 @ Spartak Subotica W 2-055.0 1631 1487 35.86% 24.69% 39.46%+0.35 +16.4 5
1947-09-07 Spartak Subotica W 2-044.7 1648 1471 70.17% 21.96% 7.87%+2.15 +4.0 6
1947-09-07 @ Hajduk Split L 0-244.7 1471 1648 7.87% 21.96% 70.17%-2.15 -4.0 0
1947-09-07 Metalac Beograd W 2-150.0 1514 1488 59.23% 24.11% 16.66%+0.97 +4.1 5
1947-09-07 @ Lokomotiva Zagreb L 1-250.0 1488 1514 16.66% 24.11% 59.23%-0.97 -4.1 4
1947-09-07 Sarajevo D 3-377.3 1714 1489 72.74% 21.04% 6.22%+2.51 -2.1 4
1947-09-07 @ Partizan D 3-377.3 1489 1714 6.22% 21.04% 72.74%-2.51 +2.1 2
1947-09-07 Dinamo Zagreb D 1-170.9 1648 1758 44.07% 24.75% 31.18%-0.09 -0.6 6
1947-09-07 @ Red Star Belgrade D 1-170.9 1758 1648 31.18% 24.75% 44.07%+0.09 +0.6 7
1947-09-07 Ponziana Trieste W 6-038.6 1453 1466 55.55% 24.43% 20.02%+0.67 +26.7 3
1947-09-07 @ Vardar L 0-638.6 1466 1453 20.02% 24.43% 55.55%-0.67 -26.7 3
1947-09-14 Vardar W 1-045.5 1518 1480 60.29% 23.99% 15.71%+1.06 +4.1 7
1947-09-14 @ Lokomotiva Zagreb L 0-145.5 1480 1518 15.71% 23.99% 60.29%-1.06 -4.1 3
1947-09-14 Metalac Beograd D 0-057.5 1491 1484 57.54% 24.28% 18.19%+0.83 -2.1 3
1947-09-14 @ Sarajevo D 0-057.5 1484 1491 18.19% 24.28% 57.54%-0.83 +2.1 5
1947-09-17 Hajduk Split W 2-157.2 1759 1652 65.70% 23.13% 11.18%+1.60 +2.9 9
1947-09-17 @ Dinamo Zagreb L 1-257.2 1652 1759 11.18% 23.13% 65.70%-1.60 -2.8 6
1947-09-17 Ponziana Trieste W 2-043.1 1647 1439 71.88% 21.37% 6.75%+2.39 +3.5 8
1947-09-17 @ Red Star Belgrade L 0-243.1 1439 1647 6.75% 21.37% 71.88%-2.39 -3.5 3
1947-09-18 Partizan L 2-362.9 1467 1712 26.32% 24.01% 49.67%-1.13 -5.7 0
1947-09-18 @ Spartak Subotica W 3-262.9 1712 1467 49.67% 24.01% 26.32%+1.13 +5.6 6
1947-09-21 Ponziana Trieste L 1-268.8 1649 1436 72.16% 21.26% 6.58%+2.43 -14.2 6
1947-09-21 @ Hajduk Split W 2-168.8 1436 1649 6.58% 21.26% 72.16%-2.43 +14.2 5
1947-09-21 Spartak Subotica D 1-160.0 1486 1461 59.16% 24.12% 16.72%+0.96 -2.1 6
1947-09-21 @ Metalac Beograd D 1-160.0 1461 1486 16.72% 24.12% 59.16%-0.96 +2.1 1
1947-09-21 Dinamo Zagreb W 3-159.7 1717 1761 52.16% 24.61% 23.23%+0.43 +9.4 8
1947-09-21 @ Partizan L 1-359.7 1761 1717 23.23% 24.61% 52.16%-0.43 -9.4 9
1947-09-21 Red Star Belgrade D 1-166.3 1476 1651 35.18% 24.56% 40.26%-0.59 +0.2 4
1947-09-21 @ Vardar D 1-166.3 1651 1476 40.26% 24.56% 35.18%+0.59 -0.2 9
1947-09-24 Sarajevo D 0-058.9 1522 1489 59.85% 24.05% 16.10%+1.02 -2.4 8
1947-09-24 @ Lokomotiva Zagreb D 0-058.9 1489 1522 16.10% 24.05% 59.85%-1.02 +2.4 4
1947-09-28 Metalac Beograd W 3-150.5 1752 1484 74.85% 20.13% 5.02%+2.85 +2.2 11
1947-09-28 @ Dinamo Zagreb L 1-350.5 1484 1752 5.02% 20.13% 74.85%-2.85 -2.2 6
1947-09-28 Hajduk Split L 0-166.3 1650 1635 58.29% 24.21% 17.50%+0.89 -12.3 9
1947-09-28 @ Red Star Belgrade W 1-066.3 1635 1650 17.50% 24.21% 58.29%-0.89 +12.3 8
1947-09-28 Vardar W 2-042.9 1492 1476 58.29% 24.21% 17.51%+0.89 +8.6 6
1947-09-28 @ Sarajevo L 0-242.9 1476 1492 17.51% 24.21% 58.29%-0.89 -8.6 4
1947-09-28 Lokomotiva Zagreb W 2-045.7 1463 1519 50.77% 24.66% 24.57%+0.33 +11.4 3
1947-09-28 @ Spartak Subotica L 0-245.7 1519 1463 24.57% 24.66% 50.77%-0.33 -11.4 8
1947-10-05 Ponziana Trieste W 2-041.1 1482 1450 59.78% 24.05% 16.16%+1.02 +8.0 8
1947-10-05 @ Metalac Beograd L 0-241.1 1450 1482 16.16% 24.05% 59.78%-1.02 -8.0 5
1947-10-05 Red Star Belgrade D 1-171.0 1727 1638 64.40% 23.38% 12.22%+1.46 -2.6 9
1947-10-05 @ Partizan D 1-171.0 1638 1727 12.22% 23.38% 64.40%-1.46 +2.6 10
1947-10-05 Spartak Subotica L 0-157.8 1500 1475 59.23% 24.11% 16.66%+0.97 -12.5 6
1947-10-05 @ Sarajevo W 1-057.8 1475 1500 16.66% 24.11% 59.23%-0.97 +12.5 5
1947-10-05 Hajduk Split L 0-253.3 1468 1647 34.51% 24.53% 40.96%-0.63 -14.8 4
1947-10-05 @ Vardar W 2-053.3 1647 1468 40.96% 24.53% 34.51%+0.63 +14.8 10
1947-10-08 Ponziana Trieste W 5-041.1 1724 1442 75.50% 19.82% 4.68%+2.96 +5.5 11
1947-10-08 @ Partizan L 0-541.1 1442 1724 4.68% 19.82% 75.50%-2.96 -5.5 5
1947-10-08 Dinamo Zagreb W 2-061.3 1508 1754 26.18% 24.00% 49.82%-1.14 +19.8 10
1947-10-08 @ Lokomotiva Zagreb L 0-261.3 1754 1508 49.82% 24.00% 26.18%+1.14 -19.8 11
1947-10-19 Lokomotiva Zagreb W 3-044.5 1436 1528 46.50% 24.74% 28.76%+0.06 +18.7 7
1947-10-19 @ Ponziana Trieste L 0-344.5 1528 1436 28.76% 24.74% 46.50%-0.06 -18.7 10
1947-10-19 Vardar W 1-043.5 1487 1453 59.99% 24.03% 15.98%+1.04 +4.2 7
1947-10-19 @ Spartak Subotica L 0-143.5 1453 1487 15.98% 24.03% 59.99%-1.04 -4.2 4
1947-10-26 Sarajevo W 6-145.9 1734 1488 73.83% 20.59% 5.58%+2.69 +5.5 13
1947-10-26 @ Dinamo Zagreb L 1-645.9 1488 1734 5.58% 20.59% 73.83%-2.69 -5.5 6
1947-10-26 Partizan W 2-161.9 1662 1730 49.44% 24.70% 25.86%+0.25 +5.9 12
1947-10-26 @ Hajduk Split L 1-261.9 1730 1662 25.86% 24.70% 49.44%-0.25 -5.9 11
1947-10-26 Metalac Beograd D 2-271.3 1641 1490 68.63% 22.42% 8.96%+1.94 -2.3 11
1947-10-26 @ Red Star Belgrade D 2-271.3 1490 1641 8.96% 22.42% 68.63%-1.94 +2.3 9
1948-03-07 Metalac Beograd D 1-159.9 1455 1492 52.96% 24.57% 22.46%+0.48 -1.5 8
1948-03-07 @ Ponziana Trieste D 1-159.9 1492 1455 22.46% 24.57% 52.96%-0.48 +1.4 10
1948-03-14 Spartak Subotica W 3-256.7 1740 1491 73.93% 20.55% 5.53%+2.70 +1.3 15
1948-03-14 @ Dinamo Zagreb L 2-356.7 1491 1740 5.53% 20.55% 73.93%-2.70 -1.3 7
1948-03-14 Metalac Beograd W 3-044.2 1668 1493 70.02% 22.00% 7.97%+2.13 +6.0 14
1948-03-14 @ Hajduk Split L 0-344.2 1493 1668 7.97% 22.00% 70.02%-2.13 -6.0 10
1948-03-14 Sarajevo W 4-251.1 1454 1482 53.86% 24.53% 21.61%+0.55 +7.9 10
1948-03-14 @ Ponziana Trieste L 2-451.1 1482 1454 21.61% 24.53% 53.86%-0.55 -7.9 6
1948-03-14 Partizan W 4-373.7 1449 1724 23.05% 23.67% 53.28%-1.37 +9.7 6
1948-03-14 @ Vardar L 3-473.7 1724 1449 53.28% 23.67% 23.05%+1.37 -9.7 11
1948-03-21 Vardar W 4-042.4 1741 1458 75.52% 19.81% 4.67%+2.97 +4.4 17
1948-03-21 @ Dinamo Zagreb L 0-442.4 1458 1741 4.67% 19.81% 75.52%-2.97 -4.4 6
1948-03-21 Hajduk Split D 0-064.3 1509 1674 36.55% 24.61% 38.84%-0.51 +0.1 11
1948-03-21 @ Lokomotiva Zagreb D 0-064.3 1674 1509 38.84% 24.61% 36.55%+0.51 -0.1 15
1948-03-21 Partizan D 1-168.3 1487 1714 28.49% 24.19% 47.32%-0.99 +0.9 11
1948-03-21 @ Metalac Beograd D 1-168.3 1714 1487 47.32% 24.19% 28.49%+0.99 -0.9 12
1948-03-21 Red Star Belgrade W 2-160.8 1474 1639 36.63% 24.61% 38.75%-0.51 +8.1 8
1948-03-21 @ Sarajevo L 1-260.8 1639 1474 38.75% 24.61% 36.63%+0.51 -8.1 11
1948-03-28 Sarajevo W 1-047.7 1674 1482 70.97% 21.69% 7.33%+2.26 +2.0 17
1948-03-28 @ Hajduk Split L 0-147.7 1482 1674 7.33% 21.69% 70.97%-2.26 -2.0 8
1948-03-28 Lokomotiva Zagreb W 2-153.1 1713 1509 71.65% 21.45% 6.90%+2.35 +1.8 14
1948-03-28 @ Partizan L 1-253.1 1509 1713 6.90% 21.45% 71.65%-2.35 -1.8 11
1948-03-28 Dinamo Zagreb L 3-659.0 1462 1746 22.14% 23.56% 54.30%-1.44 -10.1 10
1948-03-28 @ Ponziana Trieste W 6-359.0 1746 1462 54.30% 23.56% 22.14%+1.44 +10.1 19
1948-03-28 Spartak Subotica W 5-146.2 1630 1490 67.97% 22.59% 9.44%+1.86 +7.7 13
1948-03-28 @ Red Star Belgrade L 1-546.2 1490 1630 9.44% 22.59% 67.97%-1.86 -7.7 7
1948-03-28 Metalac Beograd W 2-149.6 1454 1488 53.23% 24.56% 22.21%+0.50 +5.2 8
1948-03-28 @ Vardar L 1-249.6 1488 1454 22.21% 24.56% 53.23%-0.50 -5.2 11
1948-04-04 Lokomotiva Zagreb L 0-353.1 1483 1507 54.31% 24.51% 21.18%+0.58 -31.4 11
1948-04-04 @ Metalac Beograd W 3-053.1 1507 1483 21.18% 24.51% 54.31%-0.58 +31.4 13
1948-04-04 Vardar D 1-158.7 1452 1459 56.04% 24.39% 19.56%+0.71 -1.8 11
1948-04-04 @ Ponziana Trieste D 1-158.7 1459 1452 19.56% 24.39% 56.04%-0.71 +1.8 9
1948-04-04 Partizan L 1-554.1 1480 1715 27.54% 24.12% 48.34%-1.05 -19.5 8
1948-04-04 @ Sarajevo W 5-154.1 1715 1480 48.34% 24.12% 27.54%+1.05 +19.6 16
1948-04-04 Hajduk Split L 2-462.0 1482 1676 32.64% 24.45% 42.91%-0.73 -11.0 7
1948-04-04 @ Spartak Subotica W 4-262.0 1676 1482 42.91% 24.45% 32.64%+0.73 +11.0 19
1948-04-07 Red Star Belgrade W 5-151.5 1756 1638 66.46% 22.96% 10.58%+1.68 +8.6 21
1948-04-07 @ Dinamo Zagreb L 1-551.5 1638 1756 10.58% 22.96% 66.46%-1.68 -8.6 13
1948-04-11 Dinamo Zagreb L 0-262.8 1687 1764 48.24% 24.72% 27.04%+0.17 -19.4 19
1948-04-11 @ Hajduk Split W 2-062.8 1764 1687 27.04% 24.72% 48.24%-0.17 +19.4 23
1948-04-11 Sarajevo D 1-158.7 1452 1461 55.89% 24.41% 19.71%+0.70 -1.7 12
1948-04-11 @ Metalac Beograd D 1-158.7 1461 1452 19.71% 24.41% 55.89%-0.70 +1.7 9
1948-04-11 Spartak Subotica W 3-150.0 1734 1471 74.62% 20.24% 5.14%+2.81 +2.2 18
1948-04-11 @ Partizan L 1-350.0 1471 1734 5.14% 20.24% 74.62%-2.81 -2.2 7
1948-04-11 Lokomotiva Zagreb W 1-049.2 1461 1539 48.18% 24.72% 27.09%+0.16 +6.5 11
1948-04-11 @ Vardar L 0-149.2 1539 1461 27.09% 24.72% 48.18%-0.16 -6.5 13
1948-04-18 Partizan W 1-055.0 1784 1737 61.11% 23.89% 15.00%+1.14 +4.0 25
1948-04-18 @ Dinamo Zagreb L 0-155.0 1737 1784 15.00% 23.89% 61.11%-1.14 -4.0 18
1948-04-18 Vardar W 2-150.4 1630 1467 69.29% 22.23% 8.48%+2.03 +2.2 15
1948-04-18 @ Red Star Belgrade L 1-250.4 1467 1630 8.48% 22.23% 69.29%-2.03 -2.2 11
1948-04-18 Lokomotiva Zagreb D 2-265.9 1463 1532 49.18% 24.70% 26.11%+0.23 -0.8 10
1948-04-18 @ Sarajevo D 2-265.9 1532 1463 26.11% 24.70% 49.18%-0.23 +0.8 14
1948-04-18 Metalac Beograd L 1-259.6 1469 1450 58.62% 24.18% 17.20%+0.92 -11.6 7
1948-04-18 @ Spartak Subotica W 2-159.6 1450 1469 17.20% 24.18% 58.62%-0.92 +11.6 14
1948-04-21 Lokomotiva Zagreb D 0-064.3 1632 1533 65.13% 23.24% 11.63%+1.54 -3.0 16
1948-04-21 @ Red Star Belgrade D 0-064.3 1533 1632 11.63% 23.24% 65.13%-1.54 +3.0 15
1948-04-25 Hajduk Split D 0-062.6 1450 1667 29.57% 24.27% 46.17%-0.92 +0.8 12
1948-04-25 @ Ponziana Trieste D 0-062.6 1667 1450 46.17% 24.27% 29.57%+0.92 -0.8 20
1948-04-25 Spartak Subotica L 0-159.6 1536 1457 63.66% 23.51% 12.83%+1.38 -13.4 15
1948-04-25 @ Lokomotiva Zagreb W 1-059.6 1457 1536 12.83% 23.51% 63.66%-1.38 +13.4 9
1948-04-25 Dinamo Zagreb L 0-349.5 1462 1788 18.27% 22.97% 58.76%-1.76 -12.6 14
1948-04-25 @ Metalac Beograd W 3-049.5 1788 1462 58.76% 22.97% 18.27%+1.76 +12.6 27
1948-04-25 Sarajevo D 1-159.3 1465 1462 57.14% 24.31% 18.55%+0.80 -1.9 12
1948-04-25 @ Vardar D 1-159.3 1462 1465 18.55% 24.31% 57.14%-0.80 +1.9 11
1948-04-27 Partizan L 0-163.3 1629 1733 44.89% 24.75% 30.36%-0.04 -9.7 16
1948-04-27 @ Red Star Belgrade W 1-063.3 1733 1629 30.36% 24.75% 44.89%+0.04 +9.7 20
1948-05-02 Lokomotiva Zagreb L 0-170.6 1800 1523 75.28% 19.93% 4.79%+2.92 -15.5 27
1948-05-02 @ Dinamo Zagreb W 1-070.6 1523 1800 4.79% 19.93% 75.28%-2.92 +15.5 17
1948-05-02 Sarajevo W 2-148.1 1471 1464 57.49% 24.28% 18.23%+0.82 +4.4 11
1948-05-02 @ Spartak Subotica L 1-248.1 1464 1471 18.23% 24.28% 57.49%-0.82 -4.4 11
1948-05-06 Vardar W 12-143.0 1667 1463 71.62% 21.47% 6.92%+2.35 +14.4 22
1948-05-06 @ Hajduk Split L 1-1243.0 1463 1667 6.92% 21.47% 71.62%-2.35 -14.4 12
1948-05-11 Red Star Belgrade W 4-048.1 1681 1619 62.34% 23.72% 13.94%+1.25 +13.3 24
1948-05-11 @ Hajduk Split L 0-448.1 1619 1681 13.94% 23.72% 62.34%-1.25 -13.3 16
1948-05-16 Red Star Belgrade W 1-054.4 1451 1606 37.92% 24.65% 37.43%-0.44 +8.4 14
1948-05-16 @ Ponziana Trieste L 0-154.4 1606 1451 37.43% 24.65% 37.92%+0.44 -8.4 16
1948-05-20 Partizan L 1-850.3 1459 1742 22.20% 23.57% 54.23%-1.43 -27.3 14
1948-05-20 @ Ponziana Trieste W 8-150.3 1742 1459 54.23% 23.57% 22.20%+1.43 +27.3 22
1948-05-22 Red Star Belgrade W 2-157.8 1449 1597 38.87% 24.68% 36.46%-0.38 +7.7 16
1948-05-22 @ Metalac Beograd L 1-257.8 1597 1449 36.46% 24.68% 38.87%+0.38 -7.7 16
1948-05-23 Ponziana Trieste W 3-039.0 1538 1432 65.70% 23.12% 11.17%+1.60 +8.3 19
1948-05-23 @ Lokomotiva Zagreb L 0-339.0 1432 1538 11.17% 23.12% 65.70%-1.60 -8.3 14
1948-05-25 Spartak Subotica W 2-148.7 1449 1475 54.12% 24.52% 21.36%+0.57 +5.1 14
1948-05-25 @ Vardar L 1-248.7 1475 1449 21.36% 24.52% 54.12%-0.57 -5.1 11
1948-05-30 Spartak Subotica W 3-252.6 1423 1470 51.87% 24.62% 23.51%+0.41 +5.2 16
1948-05-30 @ Ponziana Trieste L 2-352.6 1470 1423 23.51% 24.62% 51.87%-0.41 -5.2 11
1948-05-30 Hajduk Split W 2-052.0 1770 1694 63.40% 23.56% 13.05%+1.36 +6.6 24
1948-05-30 @ Partizan L 0-252.0 1694 1770 13.05% 23.56% 63.40%-1.36 -6.6 24
1948-06-01 Dinamo Zagreb L 1-552.0 1459 1785 18.31% 22.98% 58.71%-1.76 -13.8 11
1948-06-01 @ Sarajevo W 5-152.0 1785 1459 58.71% 22.98% 18.31%+1.76 +13.8 29

Biggest Upsets

The 25 games where the underdog won despite the lowest pregame win probability. Underdog Win % is the winner's pregame chance of winning the game (lower = bigger upset). @ before a team name indicates the away side. An asterisk (*) after the date marks a playoff game.

# Date Underdog Win % Winning Team Losing Team
Team Elo Score Team Elo Score
1 1948-05-02 4.79% Lokomotiva Zagreb 1523 1 @ Dinamo Zagreb 1800 0
2 1947-09-21 6.58% Ponziana Trieste 1436 2 @ Hajduk Split 1649 1
3 1948-04-25 12.83% Spartak Subotica 1457 1 @ Lokomotiva Zagreb 1536 0
4 1947-08-24 15.43% Ponziana Trieste 1459 1 @ Spartak Subotica 1500 0
5 1947-10-05 16.66% Spartak Subotica 1475 1 @ Sarajevo 1500 0
6 1948-04-18 17.20% Metalac Beograd 1450 2 @ Spartak Subotica 1469 1
7 1947-09-28 17.50% Hajduk Split 1635 1 @ Red Star Belgrade 1650 0
8 1948-04-04 21.18% Lokomotiva Zagreb 1507 3 @ Metalac Beograd 1483 0
9 1948-03-14 23.05% @ Vardar 1449 4 Partizan 1724 3
10 1947-10-08 26.18% @ Lokomotiva Zagreb 1508 2 Dinamo Zagreb 1754 0
11 1948-04-11 27.04% Dinamo Zagreb 1764 2 @ Hajduk Split 1687 0
12 1947-08-31 27.63% @ Lokomotiva Zagreb 1497 3 Partizan 1731 1
13 1948-04-27 30.36% Partizan 1733 1 @ Red Star Belgrade 1629 0
14 1947-08-31 30.64% Hajduk Split 1622 3 @ Sarajevo 1516 0
15 1947-08-31 35.86% Red Star Belgrade 1631 2 @ Spartak Subotica 1487 0
16 1948-03-21 36.63% @ Sarajevo 1474 2 Red Star Belgrade 1639 1

Biggest Elo Changes

The 25 games that resulted in the largest shift in Elo rating.

# Date Elo Δ Winning Team Losing Team Tie %
Team Score Elo Win % Team Score Elo Win %
1 1948-04-04 31.38 Lokomotiva Zagreb 3 1507 21.18% @ Metalac Beograd 0 1483 54.31% 24.51%
2 1947-08-17 27.51 Dinamo Zagreb 6 1720 42.80% @ Spartak Subotica 1 1527 32.74% 24.45%
3 1948-05-20 27.29 Partizan 8 1742 54.23% @ Ponziana Trieste 1 1459 22.20% 23.57%
4 1947-09-07 26.71 @ Vardar 6 1453 55.55% Ponziana Trieste 0 1466 20.02% 24.43%
5 1947-08-31 26.35 Hajduk Split 3 1622 30.64% @ Sarajevo 0 1516 44.62% 24.75%
6 1947-10-08 19.83 @ Lokomotiva Zagreb 2 1508 26.18% Dinamo Zagreb 0 1754 49.82% 24.00%
7 1948-04-04 19.55 Partizan 5 1715 48.34% @ Sarajevo 1 1480 27.54% 24.12%
8 1948-04-11 19.40 Dinamo Zagreb 2 1764 27.04% @ Hajduk Split 0 1687 48.24% 24.72%
9 1947-10-19 18.74 @ Ponziana Trieste 3 1436 46.50% Lokomotiva Zagreb 0 1528 28.76% 24.74%
10 1947-08-31 16.71 @ Lokomotiva Zagreb 3 1497 27.63% Partizan 1 1731 48.25% 24.12%
11 1947-08-31 16.42 Red Star Belgrade 2 1631 35.86% @ Spartak Subotica 0 1487 39.46% 24.69%
12 1948-05-02 15.53 Lokomotiva Zagreb 1 1523 4.79% @ Dinamo Zagreb 0 1800 75.28% 19.93%
13 1947-10-05 14.81 Hajduk Split 2 1647 40.96% @ Vardar 0 1468 34.51% 24.53%
14 1948-05-06 14.39 @ Hajduk Split 12 1667 71.62% Vardar 1 1463 6.92% 21.47%
15 1947-09-21 14.16 Ponziana Trieste 2 1436 6.58% @ Hajduk Split 1 1649 72.16% 21.26%
16 1948-06-01 13.76 Dinamo Zagreb 5 1785 58.71% @ Sarajevo 1 1459 18.31% 22.98%
17 1948-04-25 13.36 Spartak Subotica 1 1457 12.83% @ Lokomotiva Zagreb 0 1536 63.66% 23.51%
18 1948-05-11 13.30 @ Hajduk Split 4 1681 62.34% Red Star Belgrade 0 1619 13.94% 23.72%
19 1947-08-24 12.73 Ponziana Trieste 1 1459 15.43% @ Spartak Subotica 0 1500 60.61% 23.96%
20 1948-04-25 12.62 Dinamo Zagreb 3 1788 58.76% @ Metalac Beograd 0 1462 18.27% 22.97%
21 1947-10-05 12.45 Spartak Subotica 1 1475 16.66% @ Sarajevo 0 1500 59.23% 24.11%
22 1947-09-28 12.26 Hajduk Split 1 1635 17.50% @ Red Star Belgrade 0 1650 58.29% 24.21%
23 1948-04-18 11.62 Metalac Beograd 2 1450 17.20% @ Spartak Subotica 1 1469 58.62% 24.18%
24 1947-09-28 11.39 @ Spartak Subotica 2 1463 50.77% Lokomotiva Zagreb 0 1519 24.57% 24.66%
25 1948-04-04 10.98 Hajduk Split 4 1676 42.91% @ Spartak Subotica 2 1482 32.64% 24.45%

Most & Least Exciting Games

The season’s games ranked by excitement rating (0–100) — a blend of closeness, upset, team quality, and scoring. An asterisk (*) after the date indicates a playoff game.

# Date Excitement Winning Team Losing Team Tie %
Team Score Elo Win % Team Score Elo Win %
1 1947-09-07 77.3 @ Partizan 3 1714 72.74% Sarajevo 3 1489 6.22% 21.04%
2 1948-03-14 73.7 @ Vardar 4 1449 23.05% Partizan 3 1724 53.28% 23.67%
3 1947-10-26 71.3 @ Red Star Belgrade 2 1641 68.63% Metalac Beograd 2 1490 8.96% 22.42%
4 1947-10-05 71.0 @ Partizan 1 1727 64.40% Red Star Belgrade 1 1638 12.22% 23.38%
5 1947-09-07 70.9 @ Red Star Belgrade 1 1648 44.07% Dinamo Zagreb 1 1758 31.18% 24.75%
6 1948-05-02 70.6 Lokomotiva Zagreb 1 1523 4.79% @ Dinamo Zagreb 0 1800 75.28% 19.93%
7 1947-09-21 68.8 Ponziana Trieste 2 1436 6.58% @ Hajduk Split 1 1649 72.16% 21.26%
8 1948-03-21 68.3 @ Metalac Beograd 1 1487 28.49% Partizan 1 1714 47.32% 24.19%
9 1947-08-24 66.4 @ Partizan 0 1735 73.90% Metalac Beograd 0 1486 5.54% 20.56%
10 1947-09-21 66.3 @ Vardar 1 1476 35.18% Red Star Belgrade 1 1651 40.26% 24.56%
11 1947-09-28 66.3 Hajduk Split 1 1635 17.50% @ Red Star Belgrade 0 1650 58.29% 24.21%
12 1947-08-17 66.2 @ Lokomotiva Zagreb 1 1502 42.46% Red Star Belgrade 1 1624 32.80% 24.74%
13 1948-04-18 65.9 @ Sarajevo 2 1463 49.18% Lokomotiva Zagreb 2 1532 26.11% 24.70%
14 1947-08-31 64.5 @ Lokomotiva Zagreb 3 1497 27.63% Partizan 1 1731 48.25% 24.12%
15 1948-03-21 64.3 @ Lokomotiva Zagreb 0 1509 36.55% Hajduk Split 0 1674 38.84% 24.61%
16 1948-04-21 64.3 @ Red Star Belgrade 0 1632 65.13% Lokomotiva Zagreb 0 1533 11.63% 23.24%
17 1948-04-27 63.3 Partizan 1 1733 30.36% @ Red Star Belgrade 0 1629 44.89% 24.75%
18 1947-09-18 62.9 Partizan 3 1712 49.67% @ Spartak Subotica 2 1467 26.32% 24.01%
19 1948-04-11 62.8 Dinamo Zagreb 2 1764 27.04% @ Hajduk Split 0 1687 48.24% 24.72%
20 1948-04-25 62.6 @ Ponziana Trieste 0 1450 29.57% Hajduk Split 0 1667 46.17% 24.27%
21 1948-04-04 62.0 Hajduk Split 4 1676 42.91% @ Spartak Subotica 2 1482 32.64% 24.45%
22 1947-10-26 61.9 @ Hajduk Split 2 1662 49.44% Partizan 1 1730 25.86% 24.70%
23 1947-08-24 61.8 Dinamo Zagreb 3 1748 55.20% @ Vardar 2 1456 21.34% 23.46%
24 1947-08-21 61.4 @ Sarajevo 1 1525 62.90% Ponziana Trieste 1 1456 13.46% 23.64%
25 1947-10-08 61.3 @ Lokomotiva Zagreb 2 1508 26.18% Dinamo Zagreb 0 1754 49.82% 24.00%
# Date Excitement Winning Team Losing Team Tie %
Team Score Elo Win % Team Score Elo Win %
1 1947-09-07 38.6 @ Vardar 6 1453 55.55% Ponziana Trieste 0 1466 20.02% 24.43%
2 1948-05-23 39.0 @ Lokomotiva Zagreb 3 1538 65.70% Ponziana Trieste 0 1432 11.17% 23.12%
3 1947-10-05 41.1 @ Metalac Beograd 2 1482 59.78% Ponziana Trieste 0 1450 16.16% 24.05%
4 1947-10-08 41.1 @ Partizan 5 1724 75.50% Ponziana Trieste 0 1442 4.68% 19.82%
5 1947-08-17 42.3 @ Partizan 4 1730 74.91% Vardar 0 1460 4.99% 20.10%
6 1947-08-31 42.4 @ Dinamo Zagreb 5 1752 75.45% Ponziana Trieste 0 1471 4.71% 19.85%
7 1948-03-21 42.4 @ Dinamo Zagreb 4 1741 75.52% Vardar 0 1458 4.67% 19.81%
8 1947-09-28 42.9 @ Sarajevo 2 1492 58.29% Vardar 0 1476 17.51% 24.21%
9 1948-05-06 43.0 @ Hajduk Split 12 1667 71.62% Vardar 1 1463 6.92% 21.47%
10 1947-09-17 43.1 @ Red Star Belgrade 2 1647 71.88% Ponziana Trieste 0 1439 6.75% 21.37%
11 1947-10-19 43.5 @ Spartak Subotica 1 1487 59.99% Vardar 0 1453 15.98% 24.03%
12 1948-03-14 44.2 @ Hajduk Split 3 1668 70.02% Metalac Beograd 0 1493 7.97% 22.00%
13 1947-10-19 44.5 @ Ponziana Trieste 3 1436 46.50% Lokomotiva Zagreb 0 1528 28.76% 24.74%
14 1947-09-07 44.7 @ Hajduk Split 2 1648 70.17% Spartak Subotica 0 1471 7.87% 21.96%
15 1947-09-14 45.5 @ Lokomotiva Zagreb 1 1518 60.29% Vardar 0 1480 15.71% 23.99%
16 1947-09-28 45.7 @ Spartak Subotica 2 1463 50.77% Lokomotiva Zagreb 0 1519 24.57% 24.66%
17 1947-10-26 45.9 @ Dinamo Zagreb 6 1734 73.83% Sarajevo 1 1488 5.58% 20.59%
18 1948-03-28 46.2 @ Red Star Belgrade 5 1630 67.97% Spartak Subotica 1 1490 9.44% 22.59%
19 1948-03-28 47.7 @ Hajduk Split 1 1674 70.97% Sarajevo 0 1482 7.33% 21.69%
20 1948-05-02 48.1 @ Spartak Subotica 2 1471 57.49% Sarajevo 1 1464 18.23% 24.28%
21 1948-05-11 48.1 @ Hajduk Split 4 1681 62.34% Red Star Belgrade 0 1619 13.94% 23.72%
22 1948-05-25 48.7 @ Vardar 2 1449 54.12% Spartak Subotica 1 1475 21.36% 24.52%
23 1948-04-11 49.2 @ Vardar 1 1461 48.18% Lokomotiva Zagreb 0 1539 27.09% 24.72%
24 1947-08-24 49.4 @ Red Star Belgrade 4 1624 65.34% Sarajevo 1 1523 11.46% 23.20%
25 1948-04-25 49.5 Dinamo Zagreb 3 1788 58.76% @ Metalac Beograd 0 1462 18.27% 22.97%