Updated TSR and PDO through Bundesliga Matchday 10

Two matchdays have passed since I provided  you with our first look at the TSR and PDO numbers (after Matchday 8) for Bundesliga clubs this season. It’s time for an update.

I do not expect you to remember everything about TSR and PDO, so I’ll give you a refresher. Basically, these numbers stand for two ratios that get us beyond the table position, since winnings matches and just scoring goals can be influenced by random, fluky events, or simply not indicative of a club’s “true performance.” This last concept matters, since in general clubs tend to regress toward the mean, and their performance (again, over time) tends to match up to the “true performance,” so it’s helpful to look for over- and under- performers both to get a more accurate picture of what’s going on and to get a better grip on what might happen in the future.


TSR, or “Total Shots Ratio,” is a number indicating how dominant a club’s play is (or isn’t!). More dominant clubs tend to create more shots than they concede. And vice-versa for wimpy clubs. The ratio itself is simple:

TSR = Total Shots Taken / Total Shots Taken + Total Shots Conceded

Again, James Greyson and Richard Whittall deserve credit for originating and popularizing this ratio as a metric for gauging dominance. Follow them on Twitter, read their work, and learn. Good stuff.

Throuh Matchday 10, here’s what the TSR numbers are looking like (listed by table position with table points following the TSR):

  1. Bayern: 0.6847 / 26 points
  2. Dortmund: 0.7156 / 25 points
  3. Leverkusen: 0.5103 / 25 points
  4. Mönchengladbach: 0.4491 /16 points
  5. Hertha Berlin: 0.4871 /15 points
  6. VfL Wolfsburg: 0.5921 /15 points
  7. Schalke 04: 0.4591 / 14 points
  8. VfB Stuttgart: 0.4981 / 13 points
  9. Hoffenheim: 0.5257 / 13 points
  10. Hannover: 0.4892 / 13 points
  11. Mainz 05: 0.4882 / 13 points
  12. Hamburger SV: 0.5048 / 12 points
  13. Bremen: 0.3694 / 12 points
  14. E. Frankfurt: 0.5037 / 10 points
  15. FC Augsburg: 0.7196 / 10 points
  16. 1.FC Nürnberg: 0.3441 / 7 points
  17. SC Freiburg: 0.3346 / 5 points
  18. E. Braunschweig: 0.4229 /4 points

If you’re wondering what the total shots taken and total shots conceded numbers are, simply take a look at WhoScored.com’s Bundesliga page for “Team Statistics.” Of course, a bar chart is necessary to visualize the TSR numbers for all 18 clubs (listed by table position:

Whoa. The Bundesliga's best and worst clubs (by TSR) are cellar dwellers. (Data courtesy of JImmy Coverdale and BSports Football.)
Whoa. The Bundesliga’s best and worst clubs (by TSR) are cellar dwellers. (Data courtesy of JImmy Coverdale and BSports Football.)

I used dark blue to highlight the clubs with the highest (FCA) and lowest (SCF) TSRs. I also labeled clubs who numbers merit a quick discussion.

Something weird should immediately jump out at you: the Bundesliga’s cellar contains both its best and worst clubs in terms of TSR. Trippy stuff, guys. I doubt you’ll see anything else like this effect in Europe right now. Blame FCA, who keep losing matches, despite their wonderful ability both to take shots (15.1 taken per match) and stop shots (only 11.3 conceded per match). FCA is a curious case, worth watching the rest of the season. Their TSR identifies them as a pretty severe underperformer. But what do we attribute this effect to? It’s hard to say. Some candidates are: 1) simply bad luck (probably), 2) “poor quality” shots taken, 3) high quality shots conceded, 4) schedule difficulty (they’ve had a brutal run of it lately: Gladbach, S04, VfL, and Leverkusen). At this point, we can be TSR agonistics, since the stat’s explaining power diminishes a bit with a case like FCA. It melts in the air. Hence metrics like “Game States” might be useful to look at, too, if anyone lurking around has this data. Surely, surely FCA will climb up the table. Surely. At least I keep wanting to believe in them.

Anyhow, BVB isn’t far behind FCA, TSR-wise. Dortmund’s shot tally has dropped off a bit the last couple matches; nonetheless, BVB still lead the Bundesliga with 219 shots taken (that’s 21.9 per match). Bayern is actually next with 189 shots taken (18.9 per match). With BVB and Bayern, TSR dominance is certainly reflected in their expected positions atop the Bundesliga table.

VfL Wolfsburg has shot up both the table and the TSR rankings list, as their results are finally matching their offensive dominance, it seems. Last time, we saw VfL at 14th (!) in the table. See how they rise … the devilish Wolves. VfL is putting up 15.1 (5th best in the Bundesliga) shots a match, while conceding a stingy 10.4 (3rd best in the Bundesliga). The presumptive European candidate is making its move on the table, finally. The tea leaves bode well for VfL.

Poor SC Freiburg. Did someone poison the water down there in the mountains? This club takes only 8.5 shots a match with 9 (!) goals scored through ten league matches. Ugh. (Only poor Braunschweig has scored fewer goals, 7.) Making matters worse, SCF is conceding 16 shots a match (4th worst in the Bundesliga). This is how you earn the league’s lowest TSR, folks. Christian Streich has a mess on his hands, and spends sleepless nights pining for Max Kruse.


Our second metric, named after the Canadian hockey analyst, Brian King. This ratio is awesome because it so quickly and severely regressing toward the statistical mean, which in this case is always 1000 (because it acconts for all goals scored/conceded in the league).  PDO can tell us who’s lucky and unlucky in relation to this mean. Again, James Greyson and Richard Whittall deserve credit for bringing this concept to the wide world of fußball.

Recap: PDO is a ratio of a club’s shooting% (SH%) and save% (SV%). The formula is simple, and is expressed like this:

PDO = (SH% + SV%) * 1000

In case you’re wondering, SH% is simply goals scored/shots on target, while SV% is saves/shots on target conceded. So here’s our updated PDO numbers for the Bundesliga (listed by table position with SH%, SV%, then PDO):

  1. Bayern: SH% = 0.3013 | SV% = 0.7586 | PDO = 1059
  2. Dortmund: SH% = 0.2778 | SV% = 0.7187 | PDO = 997
  3. Leverkusen: SH% = 0.4 | SV% = 0.6666 | PDO = 1066
  4. Mönchengladbach: SH% = 0.4791 | SV% = 0.6981 | PDO = 1177
  5. Hertha Berlin: SH% = 0.3541 | SV% = 0.7021 | PDO = 1056
  6. VfL Wolfsburg: SH% = 0.2372 | SV% = 0.659 | PDO = 896
  7. Schalke 04: SH% = 0.4186 | SV% = 0.5208 | PDO =939
  8. VfB Stuttgart: SH% = 0.3846 | SV% = 0.6875 | PDO =1072
  9. Hoffenheim: SH% = 0.4716 | SV% =  0.5576| PDO = 1029
  10. Hannover: SH% = 0.2448 | SV% =  0.6274 | PDO =872
  11. Mainz 05: SH% = 0.3488 | SV% = 0.5576 | PDO =906
  12. Hamburger SV: SH% = 0.3333| SV% = 0.5862 | PDO =919
  13. Bremen: SH% = 0.2647 | SV% = 0.7076 | PDO =972
  14. E. Eintracht: SH% = 0.3095 | SV% = 0.6346 | PDO =944
  15. FC Augsburg: SH% = 0.2391 | SV% = 0.5744 | PDO =814
  16. 1.FC Nürnberg: SH% = 0.3055 | SV% = 0.7083 | PDO =1014
  17. SC Freiburg: SH% = 0.3214 | SV% = 0.6811 | PDO =1002
  18. E. Braunschweig: SH% = 0.2| SV% = 0.5862 | PDO =786

If you need to, spend a couple of minutes studying the three categories of numbers. Or you can skip ahead and studying the bar graph of PDO numbers (again, the clubs are listed by current table position):

Our 18 Bundesliga clubs are getting closer to the mean ...
Our 18 Bundesliga clubs are getting closer to the mean …

Again, the highest and lowest numbers I’ve highlighted in blue, and included data labels for other meaningful numbers. In general, we’re getting closer to the 1000 mean for all 18 clubs, although we still have some extreme outliers, like Gladbach (hello Foals!) Braunschweig (yikes). Before we get to the interesting numbers, poke around for the clubs lurking near 1000, just to get a sense of which clubs’ results more closely match their “true performance.”

The Foals of Mönchengladbach are still riding (their luck?) high. Bless them. Two weeks ago, they were also the Bundesliga PDO leaders (1192). The Foals’ league-best SH% (0.4791!) propels them to this #1 position in the charts. I’ll sound like a broken tape-player and wonder aloud about this club sliding down the table a bit in the future. It’s written in the PDO number. The statistical mean is calling! We all know that Gladbach plays impressive stuff at home (routinely scoring 4 goals a match) and struggles on the road. However, their attack is impressive with Max Kruse and Raffael close to the top of “creativity” metrics on charts like BSports Football’s “Leaderboards.” However, I’m still not crashing any checks on these Foals yet. I want to, mind you – they do play lovely football. The Gladbach attack certainly opens the possibility that the Foals simply score goals more efficiently contrasted with everyone else; however, this claim is hard to prove or differentiate from a random effect. Indeed, Gladbach’s PDO performance – thus far – is similar to what we saw from Manchester United last season, who consistently over-performed.

Two weeks ago, both VfL and FCA had low PDOs, leading me to speculate about bad luck fouling things up for these clubs. Sure enough, VfL’s PDO is now 896 (from a league lowest 808 two weeks ago). See? Regression (up!) to the mean. FCA is stuck. Their current PDO of 814 is actually a bit lower than two weeks ago (819). Only Braunschweig is worse than FCA (786). Considering FCA’s league best TSR and 2nd worst PDO, this club is just screaming for regression to the mean and climbing up the table. Come on, FCA. Come on, FCA! If you’re curious, it’s FCA’s low SH% (0.2391 – 3rd lowest in the league after Braunschweig and VfL) is the culprit here, pulling down their PDO number.

With a PDO of 1072, VfB sits just above mean-ville. I signal out the Swabians because their PDO decreased slightly from 1099 two weeks ago, meanwhile VfB sits confidently at 8th place in the league table. If you’re a VfB supporter you can breathe easy, since your club’s results seem to be “true” indicators of the club’s ability to win matches, given how close to the mean their PDO is.

Alright, hopefully you can connect some of the these numbers I’ve discussed (e.g. FCA’s high-flying TSR and abysmal PDO) to what unfolds on the pitch every Matchday. The numbers are fun, because they provide contours for the narratives we match unfold in incremental fashion each week. So ride the tension – and say your prayers for FC Augsburg.

The following two tabs change content below.
Travis serves as an editor and regular columnist here. Born and groomed in Santa Fe, New Mexico, Travis is a college English instructor in Pittsburgh. Coffee, books, and sports are his passions. His writing has also appeared in Howler magazine, 11Freunde, America Magazine, The Short Pass, Bloomberg Sports, the Good Man Project, his former blog, Sportisourstory.tumblr.com, and elsewhere. He tweets at @tptimmons. Heja BVB!

Be the first to comment

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.