1. Harmonize the data
Use the same provider, event definitions, season boundaries and competition rules. Opta's definitions demonstrate why identical labels need an explicit data dictionary.
2. Compare distributions
For each league, inspect goals, cards, possession, shot quality, home effects and missingness by season. Report sample counts and uncertainty. Do not begin with claims that one league is inherently defensive or fast and then select supporting metrics.
3. Establish a local baseline
Train a simple model on the destination league using only past information. Compare any imported model against that baseline on later fixtures. Football model evaluation research documents the importance of benchmark data and model comparison.
4. Test calibration
If a model predicts 40% events, those events should occur near 40% across a suitable future sample for the relevant group. scikit-learn's calibration guidance provides reliability-diagram and proper-score concepts.
5. Decide how to adapt
| Result | Sensible action |
|---|---|
| Similar distributions and calibration | Monitor without immediate change |
| Stable ranking, shifted probabilities | Recalibrate on destination data |
| Different relationships | Retrain and retest features |
| Sparse destination sample | Report uncertainty or do not deploy |
Worked transfer record
Suppose Model A has log loss 0.96 in its origin league and 1.04 in the destination league, while a local baseline scores 1.00. Lower is better under the same cases, so the imported version underperforms the local baseline by 1.04 - 1.00 = 0.04. The next step is diagnosis, not a claim that the league is unpredictable.
Decide whether local adaptation is justified
Use the same historical cutoffs to compare three approaches:
Peer-reviewed football model-evaluation research supports the baseline, time-order, and reporting protocol used below.
- One pooled model with a league indicator.
- A pooled model with selected league interactions.
- Separate league models.
| Result pattern | Sensible next step |
|---|---|
| Pooled model calibrates well everywhere | Keep the simpler shared model |
| One league has stable directional bias | Test a limited local intercept or calibration layer |
| Feature relationships differ repeatedly | Test documented interactions |
| Small league sample is unstable | Use partial pooling, not an isolated complex model |
scikit-learn's calibration guidance supports the probability-evaluation checks used below.
Report season-by-season scores and calibration rather than one aggregate ranking. A separate model may fit its training league better simply because it has more freedom; only later-period performance justifies the added complexity.
Transfer audit
Peer-reviewed football model-evaluation research supports the baseline, time-order, and reporting protocol used below.
When adding a new competition, map field definitions, season boundaries, promotion rules and data completeness before applying existing features. Run the pooled baseline unchanged, record errors, then test the smallest adaptation. Preserve the failed attempts. That sequence distinguishes a genuine league effect from a change introduced after inspecting the test results.
Document how promoted and relegated teams enter the estimation set. Their prior competition data may be useful, but carrying it across without a declared transformation can create an artificial league difference.
Related resources
Use training versus testing for temporal evaluation or football data providers for definition reconciliation.
Continue learning
- Next guide: Poisson Over/Under and Correct Score Calculation
- Related guide: Pre-Season Football Statistics
Assumptions and limitations
The score example is illustrative. Cross-league samples can differ in team quality, season period, promoted clubs and data availability. Model transfer should be rechecked after structural or provider changes.

