# Predicting Euro 2024 (Round of 16)

In the last weeks I have built 2 different models to predict the Group Stage results of Euro 2024. In this article I explained how to predict the results for the matches played in matchday 1. While in this article I explained how to predict the total goals scored in the Group Stage matches.

Last week I published an article where I updated my model and predictions for both results and goals in match day 3.

Let’s look at the result to see how the model behaved in the third matchday of the competition and let’s see the model **predictions for the Round of 16**.

## Matchday 3 predictions (results and goals)

See below the table with the predicted and actual results and goals of all matches.

Date | Match | Result | Prediction (Win) | Over/Under 2.5 (Win) |
---|---|---|---|---|

23-06-24 | Switzerland-Germany | 1-1 | 2 (-1.00) | Over (-1.00) |

23-06-24 | Scotland-Hungary | 0-1 | 2 (+1.50) | Over (-1.00) |

24-06-24 | Albania-Spain | 0-1 | 2 (+0.46) | Over (-1.00) |

24-06-24 | Croatia-Italy | 1-1 | X (+2.23) | Under (+0.91) |

25-06-24 | Netherlands-Austria | 2-3 | X (-1.00) | Over (+0.92) |

25-06-24 | France-Poland | 1-1 | X (+4.70) | Over (-1.00) |

25-06-24 | England-Slovenia | 0-0 | X (+3.74) | Under (+0.93) |

25-06-24 | Denmark-Serbia | 0-0 | X (+2.57) | Under (+1.07) |

26-06-24 | Slovakia-Romania | 1-1 | X (+1.07) | Over (-1.00) |

26-06-24 | Ukraine-Belgium | 0-0 | 2 (-1.00) | Over (-1.00) |

26-06-24 | Georgia-Portugal | 2-0 | 2 (-1.00) | Over (-1.00) |

26-06-24 | Czechia-Türki̇ye | 1-2 | 2 (+1.88) | Over (+0.78) |

Total |
8/12 (+14.15) | 5/12 (-2.39) |

The model predicted a few draws at which looked unlikely at the beginning, like France and England. These were priced at quite high odds by the bookies, given the strength difference between the teams. Many of those predictions turned out to be correct though, whch made it the most successful round for the model so far.

The model was able to predict **8 out of 12 results**, meaning a 66% accuracy. Simulating a betting strategy of 1 unit per match, this would have **won 14.15 units**.

Most of the model predictions for goals were Overs, but only 2 out of 9 Over predictions turned out to be correct.Instead, all 3 Under predictions turned out to be right. It might be due to the fact that teams were particularly cautious in this round, given that many of them played for their last chance to qualify. Only in 2 out of 12 matches more than 3 goals were scored.

The total correct predictions are **5 out of 12**, which is 42% accuracy. Simulating a betting strategy of 1 unit per match, this would have **lost 2.39 units**.

## Group Stage predictions

The Group Stage is over now, and we can have a look at how our model performed in the entire Group Stage.

Matchday | 1X2 prediction (Win) | Goals prediction (Win) |
---|---|---|

Match 1 | 4/11 (-4.04) | 5/11 (-0.65) |

Match 2 | 7/12 (+5.38) | 3/12 (-6.62) |

Match 3 | 8/12 (+14.15) | 5/12 (-2.39) |

Total | 19/35 (+15.49) | 13/35 (-9.66) |

The model performed quite well in the 1X2 market. It managed to predict 54% of the results correctly, with many of them at odds higher than 2. A betting strategy that would stake 1 unit for each match, would bring a **profit of 15.49 units**.

The Goals market went less well. I believe this is partly due to the inability of the model to predict the attitude of the teams, that can change and be more offensive or defensive according to the opponents. I have also noticed that the model is more aligned with expected goals than actual goals, so the inability of many strikers to convert their chances has been a factor too. Overall, the model was only able to predict 37% of the Over/Under, and betting 1 unit for each match would have brought a **loss of 9.66 units**.

The overall betting strategy would still be profitable with an overall **+5.83 units profit**. If we follow the conservative approach of a 50 units bankroll, with 2% of it stacked on each bet (1 unit) this means an **ROI of 11.6%**.

## Round of 16 results and goals predictions

For the Round of 16 predictions, we take into account the results and performance of the teams in the Group stage as well as the Qualifiers. In particular, we build the model so to give 50% importance to the Group stage and 50% to the Qualifiers. These are the predictions for 1X2 and Over/Under 2.5 markets. All the predictions are after 90 minutes.

Date | Match | Prediction (Odds) | Over/Under 2.5 (Odds) |
---|---|---|---|

29-06-24 | Switzerland-Italy | 1 (3.45) | Over (2.64) |

29-06-24 | Germany-Denmark | 1 (1.62) | Under (1.80) |

30-06-24 | England-Slovakia | X (4.29) | Over (2.12) |

30-06-24 | Spain-Georgia | X (6.92) | Under (2.28) |

01-07-24 | France-Belgium | X (3.21) | Over (1.63) |

01-07-24 | Portugal-Slovenia | X (4.57) | Under (2.05) |

02-07-24 | Romania-Netherlands | X (4.31) | Under (2.08) |

02-07-24 | Austria-Türki̇ye | 2 (4.64) | Over (1.90) |

The model incorporates the teams’ performance in the whole Group stage, giving it a 50% weight, while the other 50% is given to the performance of the model in the Qualifiers. The model results change quite a bit in case we want to give more importance to the Group stage. For example, giving 90% importance to the Group stage the model predicts Italy to win their match against Switzerland, and France to win against Belgium.

To run the simulations I make all the **code available** in my latest book, where I explain how to build a **betting model for Euro 2024**. I have also written a few books where I go into the details of how to get the data, visualize and train a model to predict football results, complete with code examples.