โšก Updates Daily: 02:30 & 08:30 UTC
Last Update: 2026-09-21 08:06 UTC
Target: GW6

The Engineering Behind FPL Prophet

A technical breakdown of our data pipeline, modeling choices, and why we chose Gradient Boosting over Neural Networks.

1. The Signal-to-Noise Problem

Fantasy Premier League (FPL) is notoriously noisy. A defender can concede a goal in the 95th minute and lose their clean sheet (-4 points relative to expectation) due to a random deflection. Capturing the "true talent" signal amidst this variance is the core challenge.

Early iterations of this project attempted to predict exact raw points for a single gameweek. This failed miserably due to variance. We pivoted to predicting Expected Points (xP)โ€”a robust long-term metric that minimizes error over time, rather than trying to guess a specific hat-trick.

2. Data Pipeline & Processing

Data quality is paramount. Our pipeline runs every 6 hours and processes data from three primary layers:

  • Official Source: Base stats, prices, and ownership data directly from the Premier League servers.
  • Advanced Metrics (xG/xA): We utilize native "Expected Data" (xG, xA, xGI). Predicting chance quality rather than just outcomes filters out "lucky" goals.
  • Granular Strength Ratings: Instead of the generic "1-5" Difficulty Rating, we recalculate opponent strength daily (e.g., "1100" vs "1050") to differentiate between a "Hard" game vs Man City and a "Hard" game vs a depleted rival.

3. Feature Engineering: The "Efficiency" Metric

One of our key differentiators is how we handle user consistency. We engineered a proprietary feature called Efficiency Score, defined as:

Efficiency = Mean_Points / Coefficient_of_Variation

This metric heavily penalizes Volatility. A player who scores 12, 2, 12, 2 (High Variance) will have a lower Efficiency score than a player scoring 7, 6, 7, 8 (Low Variance). This aligns with long-term probability theory: "Haulers" are often statistically lucky, while "Grinders" are statistically sustainable.

The "Clinicality" Myth: Notably, our model explicitly excludes raw `goals_scored` from its training features. We rely entirely on xG. If a player scores 5 goals from 0.5 xG, the model treats this as a negative signal (unsustainable overperformance) rather than a positive skill.

4. Architecture & Interactions

We use a Gradient Boosting Regressor (GBR) ensemble, chosen for its ability to handle non-linear interactions between features, such as the Teammate Cannibalization effect (when a premium asset like Salah returns, teammates' projections drop due to xG redistribution).

We use a novel Hybrid Ensemble approach:

  • Model A (Cumulative): Trained on all historical data. Captures long-term player quality and "baseline" performance.
  • Model B (Rolling): Trained only on the last 5 Gameweeks. Captures immediate "hot form" and tactical shifts (e.g., a player moving Out of Position).

The final prediction is a weighted average of these two models, giving you the stability of history with the responsiveness of form.

Specialized Goalkeeper Model: Goalkeepers are fundamentally different from outfield players. They rely on clean sheets, saves, and defensive strength matchups. For GKPs, we train a dedicated position-specific ensemble model with defensive contribution and expected goals conceded features.

5. The Optimization Engine

Predicting points is only half the battle. The other half is the Knapsack Problem: fitting the best players into a budget constraint.

Our "Transfer Strategizer" is a Mixed-Integer Linear Programming (MILP) solver. It evaluates single-gameweek transfers as well as multi-gameweek sequential pathways over rolling horizons, fully accounting for the official 2026 FPL rules (such as banking up to 5 Free Transfers and chip activations).

Maximize: Sum(Predicted_Points) - (Transfer_Hits * 4)
Subject to:
1. Total Cost <= Budget (including selling price tax)
2. Players per Team <= 3
3. Position Constraints (1 GK, 3-5 DEF, 2-5 MID, 1-3 FWD = 11 Starters + 4 Bench)
4. Free Transfer Accumulation (1 to 5 Banked FTs)

This allows us to suggest "optimal" pathways that a human might missโ€”such as rolling a transfer or selling a premium asset this week to fund two high-value upgrades next week.

6. Season Start & Early Gameweek Strategy

At the start of a new season (e.g. 2026-27), in-season rolling statistics are completely absent for Gameweeks 1 through 3. Our primary prediction model requires a minimum of 3 Gameweeks (~21 days) for basic last_3_* rolling metrics and 5 Gameweeks (~35 days) for full rolling volatility & ensemble stability.

To account for different rolling data requirements across early gameweeks without altering saved model schemas or disrupting regular prediction pipelines, our architecture operates across three distinct model evolutionary phases:

Early-Season Model Evolution Architecture

FPL API / Bootstrap Static Data
โ†“
Finished Match Count Check (<3 GWs | 3-4 GWs | ≥5 GWs)
Phase 1: GW1 - GW3
(0-2 Matches Completed)
  • Priors: Price & 2025-26 baseline
  • Blending: $w_k = k/3$ ($0.0 \rightarrow 0.67$)
  • Imputation: Positional Group Means
Phase 2: GW4 - GW5
(3-4 Matches Completed)
  • 3-Match Metrics: 100% In-Season
  • 5-Match Metrics: Hybrid padded
  • Model A: Cumulative Primary
Phase 3: GW6+
(5+ Matches Completed)
  • All Metrics: 100% In-Season
  • Volatility: Full Efficiency/Std
  • Ensemble: Retrained Model B
โ†“
Unified Input Vector & Knapsack Optimization Solver

Detailed Model Phase Mechanics:

  • Phase 1 (GW1 โ€“ GW3 Prior Mode): In-season match history is insufficient ($k < 3$). The engine blends prior-season metrics and price priors ($\text{Baseline Points} = \alpha + \beta \times \text{now\_cost}$) into feature vectors. Promoted teams receive default strength ratings (Attack ~1020, Defence ~1070).
  • Phase 2 (GW4 โ€“ GW5 3-Match In-Season Active): At GW4 (3 completed matches), 3-match rolling features (last_3_*) become 100% pure in-season data ($w_{\ge 3} = 1.0$). 5-match rolling features (last_5_*) transition dynamically with 3-4 current-season matches plus 1-2 padded prior baseline matches.
  • Phase 3 (GW6+ Full In-Season Ensemble): At GW6 (5 completed matches), both 3-match and 5-match rolling features are 100% in-season. All rolling volatility stats (last_5_std, last_5_cv, last_5_efficiency) reflect purely 2026-27 form, and Model B (Rolling Model) is retrained exclusively on 2026-27 match data.

7. Squad Hierarchy & Expected Minutes Engine

A key challenge in fantasy models is handling squad rotation and bench reserves. Our engine incorporates a dynamic Squad Hierarchy Model:

  • Positional Depth Ratio: Players are ranked within their club and position using price tiering, historical baseline xP, and squad status. Expected minutes (expected_mins) scale proportionally from key starters (~75โ€“90 mins) down to fringe reserves (~0โ€“25 mins).
  • Availability Flag Scaling: Official Premier League injury and fitness flags (chance_of_playing_next_round) serve as direct multiplicative multipliers ($0.0 \rightarrow 1.0$) on expected minutes, ensuring doubtful or sidelined assets are accurately discounted.

8. Real-Time LLM Intelligence: The Dugout Engine

Statistical models excel at quantitative forecasting, but unexpected press conference announcements, late training ground knocks, and sudden cup rotations can disrupt lineups. The Dugout bridges this gap:

  • Grounded Gemini 3.7 Flash Pipeline: Daily automated ingestion utilizes Google's state-of-the-art gemini-3.7-flash model coupled with real-time Google Search Grounding to synthesize breaking Premier League news, presser quotes, and transfer trends from Tier 1 correspondents and official club releases.
  • Composite Rotation & Congestion Scoring: Evaluates fixture density across domestic cups, UEFA competitions, and rest intervals to assign a 0โ€“10 risk score and actionable verdicts (SAFE, CAUTION, AVOID) for popular assets.

"All models are wrong, but some are useful." โ€” George Box

โšก Pre-Deadline Intelligence

Never Miss an FPL Deadline Again

Get top AI Captain picks, high-upside differentials, and last-minute Dugout injury alerts delivered straight to your inbox 2 hours before kickoff. 100% Free.

๐Ÿ”’ No spam ever. Sent from fplprophet2026@gmail.com