Methodology

How oddsly predicts football matches

A transparent look at our machine learning pipeline — what data we use, how we engineer features, and how we validate everything.

Data sources

football-data.org

Match results, standings, fixtures

7 seasons of match results, league standings, and fixture scheduling across all 8 leagues. Our primary source for historical outcomes and team data.

The Odds API

Bookmaker odds from 20+ bookmakers

Real-time odds from 20+ bookmakers worldwide. We compute implied probabilities and detect market inefficiencies where our model disagrees with the consensus.

understat.com

Expected goals (xG) per match

Expected goals, shot data, and advanced match statistics. xG measures shot quality rather than quantity — one of the strongest predictive signals in football analytics.

Sofascore

Confirmed lineups T-60min

Starting lineups and confirmed team sheets, typically available 60 minutes before kickoff. Lets the model account for key player absences and tactical changes.

100+ features we analyze

Raw data from 4 sources is transformed into over 100 predictive features per match, grouped into 7 families:

Team form

Last 5/10 matches, home vs away split

ELO ratings

Point-in-time, updated after each match

Expected goals

xG scored and conceded

Player availability

Starting XI, key players missing

Bookmaker odds

Implied probabilities, market efficiency

Season trajectory

Points, position, goal difference

Head-to-head history

Last 5 meetings

Model architecturemodel

LightGBM

Gradient boosting algorithm

We use LightGBM — a gradient boosting algorithm proven in sports prediction research. Trained separately per league because Bundesliga and La Liga have different dynamics.

13,000+
Historical matches (2018-2025)
Walk-forward
Temporal splits (no future leakage)
300
Optuna trials per league

What we don't claimhonest

We don't guarantee profitable betting
Our model doesn't beat bookmakers consistently
Past accuracy doesn't predict future results
We show real accuracy numbers, updated monthly
We flag uncertainty — not every match has a strong signal

Accuracy updated monthlyaccuracy

Last updated: 12 April 2026

LeagueAccuracy
52.5%
PL50.3%
PD49.0%
BL155.6%
SA55.5%

See the model in action

Start with a free 3-day trial. No credit card required.

Try It Free