The Ligue 1 title tussle between Paris Saint-Germain and Lille is going to the wire, and it is Les Dogues who hold a slender advantage heading into the final day.
Lille could have won the title – their first since 2010-11 – last week had they beaten Saint-Etienne and PSG dropped points against Reims.
Neither of those outcomes came to fruition, however, and Lille are just one point ahead with one game left to play. It is the smallest gap between a leader and the second-placed team at this stage in a Ligue 1 campaign since 2001-02.
Christophe Galtier's team need only to beat Angers to guarantee their triumph, but the mid-table team are one of the only three sides Lille have lost to this season in Ligue 1, while PSG face Brest.
Just below the title battle, Monaco – who have a slim chance of taking top billing – and Lyon are vying for the final Champions League spot.
Monaco could yet end up at the summit, but Niko Kovac's team would finish fourth if they fail to beat Lens and Lyon defeat Nice.
At the other end of the table, there is potential for drama, with six teams between 18th-placed Nantes and 13th-placed Reims involved in a relegation scrap.
It has been a tightly fought contest throughout the season at the top of the table, but all will be decided on Sunday.
How does the predictor work?
First of all, here's how we got the data...
The data model estimates the probability of each match outcome – either a win, draw or loss – based on each team's attacking and defensive quality. Those ratings are allocated based on four years' worth of comprehensive historic data points and results, with more weighting given to recent matches to account for improvements or declines in form and performance trends.
The AI simulation takes into account the quality of the opposition that a team scores or concedes goals against and rewards them accordingly. All that data is used to simulate upcoming matches using goal predictions from the Poisson distribution – a detailed mathematical model – with the two teams' attacking and defending ratings used as inputs.
The outcome of the season is then simulated on 10,000 different occasions in order to generate the most accurate possible percentage chance of each team finishing in their ultimate league position. The points total is based on an average of the predicted points from the simulations of the league outcome.
Let's see how the model now predicts the final league table will look...
Lille likely to pip PSG to the post
Our model suggests that it will be Lille who hold firm to triumph this season, and claim their fourth Ligue 1 crown in the process, giving Les Dogues a 57.9 per cent chance of finishing top.
Lille did lose to Angers earlier this season, but they had won the previous three matches against them.
Angers, though, have only failed to score in two of their 18 Ligue 1 home games against Lille, doing so in their first such meeting in September 1957 (0-0) and in their most recent in February 2020 (0-2).
However, Lille's away form is superb – they have won 11 of their last 12 Ligue 1 games on the road.
Opta's AI predicts a 34 per cent chance of Lille finishing second, and an 8.9 per cent of them finishing third. The latter outcome would require Lille to lose, PSG to avoid defeat, Monaco to win, and there to be at least a six-goal swing in goal difference in the principality club's favour.
For PSG, the model offers them a 45.7 per chance of finishing second. If they drop points at all, then Lille will only need to draw to win the title, while a defeat – combined with a Monaco victory – would see Mauricio Pochettino's team finish third. Opta predict there is a 10.9 per cent chance of this happening.
There is very slim potential (3.1 per cent) for PSG to finish outside of the Champions League places and in fourth, but the goal difference swing required (17) would be bordering on the realms of impossibility.
PSG have a 40.3 per cent chance of finishing top, with Monaco not technically out of the running – they have a 2.6 per cent chance.
Monaco would need both Lille and PSG to slip up for that to occur. However, their main focus is to secure Champions League football.
Opta suggests this may be tough, with Lyon – led by the in-form Memphis Depay – given a 43.2 per cent chance of snatching third place, with Monaco destined for fourth. This is due in part to their poor record away at Lens in Ligue 1, where they have won just one of their last 14 top-flight games.
Bad luck for Brest
In the relegation scrap, Opta predict that Nantes, who currently occupy 18th place or Brest are the most likely teams to have to play-off against Toulouse or Grenoble Foot for a place in next season's Ligue 1.
Brest of course face PSG, and they have lost their last three Ligue 1 home games against the capital club, giving them a 50 per cent chance of finishing 18th.
Nantes are in action against Montpellier, and the model suggests their most likely finishing position is also in the bottom three (35.8 per cent), though only one unwanted place is up for grabs.
Reims, who sit in 13th, are not mathematically safe, with only two points between them and Nantes, but they are predicted to secure their top-flight status for next season.
Lorient, Bordeaux and Strasbourg could also be dragged into the relegation/promotion play-off place.