π Today's Games
Scanning today's fixtures across all leaguesβ¦
First scan takes 1β3 minutes, then cached for 2 hours.
Every prediction runs through three layers that are combined into a final result.
| Provider | Leagues | Key required |
|---|---|---|
| ESPN (unofficial) | 11 leagues β PL, La Liga, Bundesliga, Serie A, Ligue 1, MLS, Eredivisie, Primeira Liga, Super Lig, Champions League, Europa League | No |
| OpenLigaDB | 3 German leagues β Bundesliga, 2. Bundesliga, 3. Liga | No |
| football-data.org | Top European leagues β PL, Bundesliga, Serie A, La Liga, Ligue 1, Eredivisie, Primeira Liga, BrasileirΓ£o, CL, EL | Free tier |
| API-Football.com | Championship, Ligue 2 + extras | Yes |
| TheSportsDB | MLS, BrasileirΓ£o, and others | Free tier |
Matches are sorted oldest β newest. Each gets a weight of 0.9βΏ, so the most recent game counts the most:
A goal last week is worth ~52% more than a goal from 5 games ago β the model reacts faster to streaks.
The Today's Games landing page and Daily/Weekly Picks features automatically scan all 35+ leagues, predict every fixture, and surface the highest-confidence bets across all markets (goals, BTTS, corners, outcome). No manual league selection needed.
Using a Dixon-Coles / Maher inspired formula:
The 1.1 multiplier captures home advantage (+10%). If venue-specific stats are available it drops to 1.03 since the advantage is already in the split averages.
Probability of scoring exactly k goals given expected rate Ξ»:
Example β Ξ» = 1.8 expected goals:
Home and away goals are treated as independent, so every scoreline probability is:
This creates a 6Γ6 grid. The cell with the highest value = most likely score.
| Market | Rule | Confidence |
|---|---|---|
| Corners O/U 9.5 | Over if combined avg > 9.5 | min(βdiffβ / 4, 1) |
| Cards O/U 3.5 | Over if combined avg > 3.5 | min(βdiffβ / 2, 1) |
| Goals O/U 2.5 | Over if combined avg > 2.5 | min(βdiffβ / 1.5, 1) |
Confidence = how far from the line. Combined avg 4.5 β confidence 1.0. Combined avg 2.6 β confidence 0.07.
An optional Python ML microservice runs alongside the Poisson engine and gives a second opinion on each market.
Features fed into the model:
Training data is built from real historical matches (PL, Bundesliga, Serie A, La Liga, Ligue 1 β 4 seasons). The rolling window ensures only pre-match information is used, so there is no data leakage.
Random Forest (200 trees, depth 8) β one classifier per target market. Evaluated with 5-fold cross-validation AUC. XGBoost is also available via the /train endpoint.
Scanning today's fixtures across all leaguesβ¦
First scan takes 1β3 minutes, then cached for 2 hours.
No matches found for today.
Scanning today's fixturesβ¦
First scan takes 1β3 minutes and is then cached for 2 hours.
Scanning fixtures across all leaguesβ¦
First scan takes 1β3 minutes and is then cached for 12 hours.
Analysing match dataβ¦
| Stat (per game) | Home | Away |
|---|
| Date | Home | Score | Away | Result |
|---|
No head-to-head data available.
| Date | H/A | Opponent | Score | Result | Corners | Shots |
|---|
| Date | H/A | Opponent | Score | Result | Corners | Shots |
|---|
No recent match data available.
| Date | Home | Pts | Away | Result |
|---|
No head-to-head data available.