Ligue 2 · Friday, 16 October 2026 · 19:00. Final score 0–2 (half-time 0–0). Before kick-off we rated it 62% under 2.5 goals — the match finished with 2, so that call landed. That rating was frozen into a version-controlled ledger before the game and has not been touched since.
Open this match in the app →| Market | Yes | No | Our call |
|---|---|---|---|
| Over 2.5 goals | 38% | 62% | Under |
| Over 3.5 goals | 20% | 80% | no pick |
| Both teams to score | 45% | 55% | No |
The result model puts Grenoble at 30%, the draw at 42% and Boulogne at 28%, from expected goals of 0.64 and 0.61.
| Market | Price | Implied | Our rating | Edge |
|---|---|---|---|---|
| Over 2.5 goals | 2.60 | 36% | 38% | +2% |
| Under 2.5 goals | 1.48 | 64% | 62% | -2% |
| Both teams to score | 2.10 | 44% | 45% | +1% |
Implied percentages have the bookmaker's margin removed, so they add to 100 and can be compared with our rating directly. Edge is simply the gap between the two. A positive edge means our model thinks the outcome is likelier than the price suggests — it is not a tip, and a high probability with a negative edge is a poor bet however safe it looks. Prices are a pre-match snapshot from a single bookmaker and move constantly.
Match odds: Grenoble 2.70, draw 2.80, Boulogne 2.55.
The league sets the starting point. Ligue 2 has produced over 2.5 goals in 47% of its matches, and that is where a team with no record of its own would sit.
Each side's own record. Grenoble have 4 in 8 this season (1 of 3 at home), Boulogne 1 in 8 (0 of 4 away). Those records are pulled toward the league rate with the weight of about 24 matches — enough that two or three unusual games cannot swing a rating — giving 48% and 39%.
Last season still counts, briefly. With 8 and 8 games played this season, last season's rates are still blended in and fade out entirely by game 40 — the point at which our testing showed they stop adding accuracy. A single season is part luck, so each club's record is first pulled toward the league average by 34 games' weight. That moves the two figures to 44% and 45%.
The mix. Weighted 40% home side, 40% away side and 20% league — the split that beat every alternative across 30,582 matches of testing — that gives 45%.
Head to head. These sides have met 2 times in three years, producing over 2.5 goals in 50%. That nudges the number 5% of the way toward the head-to-head pattern — deliberately small, because fixtures change more than reputations do — landing on 45%.
Goal expectation. Separately a Poisson model built from attack and defence strength — using real expected-goals data where the league has it — puts this match at 13%, from expected goals of 0.64 for Grenoble and 0.61 for Boulogne. Folding in 30% of that view gives 36%.
Calibration. Tested against 97,729 past matches, our ratings below 55% have run consistently too pessimistic — a figure in the high 30s, for instance, has come in about four points higher. So ratings in that range are lifted part-way back, giving 38%.
This breakdown is generated from the same inputs the rating uses, so it cannot describe a calculation we did not perform. The full model is set out in the methodology.
More: Grenoble season stats · Boulogne season stats · Ligue 2 table and form. Ratings are calibrated probabilities, not tips — a 60% call is expected to miss two times in five.