File size: 2,549 Bytes
ad2ecc2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6742160
ad2ecc2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6742160
ad2ecc2
 
 
 
 
 
 
 
 
 
 
 
 
1503e47
6742160
ad2ecc2
6742160
c5fc159
ad2ecc2
 
 
6742160
ad2ecc2
 
 
 
 
 
 
 
 
6742160
ad2ecc2
6742160
ad2ecc2
1503e47
ad2ecc2
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
---
language: en
license: mit
tags:
- sports
- football
- soccer
- premier-league
- tabular
- poisson
- expected-goals
- statsmodels
library_name: statsmodels
pipeline_tag: summarization
---

# ⚽ EPL-Pulse_v1  
**English Premier League Match Outcome & Goals Predictor**

`EPL-Pulse_v1` is a **leakage-safe football match prediction model** trained on historical English Premier League data (1993/94 → 2024/25 mid-season).

The model estimates:
- **Expected goals (xG)** for home and away teams
- **Outcome probabilities**:
  - Home Win
  - Draw
  - Away Win
- **Scoreline probability distribution** (e.g., 1–0, 2–1, 0–0)

This repository contains the **production-ready model artifacts** used by the public Hugging Face Space.

---

##  What’s inside this repository

### Model artifacts
- `home_goals_model.pkl`  
  Poisson regression model for **home team goals**
- `away_goals_model.pkl`  
  Poisson regression model for **away team goals**
- `feature_list.pkl`  
  Ordered list of features used during training
- `team_state.pkl`  
  Latest per-team snapshot used for inference:
  - Elo rating
  - Rolling goals-for / goals-against
  - Timestamp of last update

> `team_state.pkl` enables **fast production inference** without recomputing rolling features at request time.

---

##  Modeling approach

### Model type
- **Poisson Generalized Linear Models (GLM)**  
  (one model for home goals, one for away goals)

### Why Poisson?
- Goals are discrete counts
- Well-established baseline in football analytics
- Interpretable and deployable
- Produces full scoreline probability distributions

### Outcome probabilities
Win / Draw / Loss probabilities are derived from the joint scoreline distribution:

```bash
P(H=i, A=j) = \text{Poisson}(i|\lambda_H) \times \text{Poisson}(j|\lambda_A)

```

---

##  Features used (leakage-safe)

All features are **computed strictly from matches played before kickoff**.



This design prevents **data leakage** and supports reliable backtesting.

---

##  Quickstart (Python)

###  Install dependencies

```bash
from huggingface_hub import hf_hub_download
import joblib

REPO_ID = "YOUR_USERNAME/EPL-Pulse_v1"

home_path = hf_hub_download(REPO_ID, "home_goals_model.pkl")
away_path = hf_hub_download(REPO_ID, "away_goals_model.pkl")
feat_path = hf_hub_download(REPO_ID, "feature_list.pkl")
state_path = hf_hub_download(REPO_ID, "team_state.pkl")

home_model = joblib.load(home_path)
away_model = joblib.load(away_path)
feature_list = joblib.load(feat_path)
team_state = joblib.load(state_path)