With the dust settling following the conclusion of Europe's top five leagues, now is the perfect opportunity to look back on the season and reflect.
Manchester City, Bayern Munich, Real Madrid, Paris Saint-Germain and Milan were the teams that ultimately succeeded, with the latter claiming their first Scudetto in 11 years.
But focusing just on the title winners serves to only scratch the surface of the narratives of the respective leagues, with each team playing out its own unique story.
Some will have exceeded expectations; others may have fallen short and potentially even suffered relegation. But how do you analyse overachievement in the context of a full season?
Well, back at the start of the campaign, Stats Perform's AI team ran their League Prediction Model on the five competitions in question.
Using Opta data, the model estimates the probability of each match outcome (win, draw or loss) based on teams' attacking and defensive qualities, which considers four years' worth of results, with weighting based on recency and the quality of opposition. The season is then simulated 10,000 times to calculate the likelihood of each outcome.
But how did the real thing pan out in comparison to the prediction? Let's take a look…
PREMIER LEAGUE
While the title race in England played out as the predictor suggested, Manchester United's final position of sixth was three places lower than expected, while Tottenham ended up three spots higher – call it the 'Antonio Conte effect'.
But United weren't the biggest underachievers in the league, not by a long shot.
Everton and Leeds United were expected to finish just inside the top 10 but ended up narrowly avoiding relegation – the latter's 17th-place end to the season was eight lower than predicted, which was the worst such record in the division.
Brighton and Hove Albion (ninth), Crystal Palace (12th) and Brentford (13th) all ended up five places higher than the in pre-season predictor – they were the biggest overachievers.
SERIE A
While three Premier League teams ended the season in the same position as the prediction suggested, none in Serie A did.
Although Milan didn't register the biggest improvement in the league in relation to their pre-season prediction, it's difficult to look past them when thinking about the team that exceeded expectations the most.
It was said they would not even end up with Champions League football, yet Stefano Pioli guided them to a momentous title success.
Genoa were the biggest disappointments, however. Slated to end the season 11th, their actual end-of-campaign position was 19th as they dropped down to Serie B for the first time since 2007.
Cagliari, who were also relegated, suffered a similar level of disappointment. Initially also tipped to finish around mid-table (12th), they ended the campaign in 18th.
BUNDESLIGA
It was a season to forget for Wolfsburg. Having been in the Champions League, they were predicted to claim a second successive top-four finish, but all they could manage in the end was 12th.
That was comfortably the worst underachievement in the division. Eintracht Frankfurt weren't much better in that regard, but Oliver Glasner's side were clearly concentrating on the Europa League – which they won – towards the business end of the campaign, so you can excuse them to a degree.
Given those two and Borussia Monchengladbach failed to secure the top-half finishes many would have expected, there were several big overachievers in the spots outside the Champions League places.
Cologne were the most surprising of all. Predicted to finish in the relegation play-off spot, they ended up nine places better off. Union Berlin (fifth), Freiburg (sixth) and Mainz (eighth) all confirmed positions four higher than the prediction model suggested.
LALIGA
Of all five leagues, LaLiga ended up being by far the closest to the initial prediction, with nine teams finishing in the same position they were tipped to.
Among them were each of the top four, with Barcelona finishing well to take second while Sevilla finished poorly to – just about – take fourth.
No one in the top 10 ended the season more than two places higher or lower than expected, but in the bottom half Rayo Vallecano (12th) and Elche (13th) made a mockery of the suggestion they would be the bottom two.
Meanwhile, none of the three relegated teams were predicted to finish in the bottom three, with Granada and Levante proving especially disappointing.
LIGUE 1
From one extreme to the other… While a host of teams matched up with their pre-season prediction in LaLiga, only one in Ligue 1 did.
You can probably guess who…
But ignoring PSG, there were some significant movers and shakers in Ligue 1, with the French top-flight living up to its reputation as an unpredictable – if you ignore the top one – division.
Lille's 10th-place finish was eight lower than predicted; Saint-Etienne's relegation play-off position (and subsequent relegation) was nine worse than expected; Nice ended up eight spots better off than their forecast of 13th.
And that's just the tip of the iceberg.
Strasbourg, Brest, Montpellier, Troyes and Metz all either over or underachieved by at least five positions in what proved to be a topsy-turvy campaign.