A small football forecasting project for Arsenal EPL and UCL title race title race. This project was written as at matcday 33 for Arsenal and matchday 33 for Manchester City.
It does two things:
- trains a simple match outcome model from historical EPL data
- simulates Arsenal vs Man City title outcomes from the remaining 2025/26 fixtures
- simulates Arsenal vs Athletic UCL semi final outcomes from the remaining 2025/26 fixtures
python3 -m venv .venv
source .venv/bin/activate
pip install --upgrade pip
pip install pandas numpy scikit-learn joblib requests python-dotenv
pip install -e .Prepare training data:
python3 src.data.prepare_training_dataTrain the model:
python3 src.models.match_predictorBuild current-season strength:
python3 src.features.current_season_strengthRun the title simulation:
python3 scripts/simulate_epl_title.pydata/raw/epl_historical_2022_2024.csvdata/raw/arsenal_epl_2025_26.csvdata/raw/mancity_epl_2025_26.csvdata/raw/epl_full_2025_26.csv
outputs/models/match_predictor.pkloutputs/models/team_strength.csvoutputs/models/current_season_strength.csv
If you want to fetch data from API-Football, add a .env file:
API_FOOTBALL_KEY=your_api_key_hereThen run:
python3 scripts/fetch_historical_seasons.py
python3 scripts/fetch_current_season.py- The title simulator is currently hardcoded for Arsenal vs Man City.
scripts/train_model.py,scripts/run_forecast.py, and the YAML config files are placeholders.- Use
python3, in linux environment. - Use
python, in windows environment.
