Skip to content

Probabilistic Inference

Abstract

This component implements the inference pipeline. It demonstrates Perceiving (NLP signal processing), Belief updating (HMM/Kalman filtering), and feeds into the Acting stage (Optimization).

Motivation

Fantasy managers face a high-variance environment: noisy match-day data and sudden regime shifts (injuries, transfers) make performance unpredictable. Standard FPL projections treat each week's data independently and ignore latent factors. FPLX models each player's underlying form as a hidden state that evolves over time, and uses probabilistic filters to separate true signal from noise.

Approach

Each player is modeled through a dual-filter system:

graph TD
    O["Observed Points<br/>(noisy)"] --> HMM["HMM<br/>Discrete form states"]
    O --> KF["Kalman Filter<br/>Continuous potential"]
    N["News Signal<br/>(injury, suspension)"] -->|Transition perturbation| HMM
    N -->|Process noise shock| KF
    F["Fixture Signal<br/>(difficulty)"] -->|Observation noise| KF
    HMM -->|"P(State), E[Y], Var[Y]"| FU[Inverse-Variance Fusion]
    KF -->|"x̂, P"| FU
    FU -->|"E[P], Var[P]"| OUT["Per-player forecast<br/>with uncertainty"]

HMM captures abrupt regime shifts (injury → slump → recovery) via discrete hidden states.

Kalman Filter captures gradual trends in scoring output via continuous latent tracking.

News injection is the key differentiator from static pipelines: signals enter inside the inference (perturbing transition probabilities and noise parameters), not as a post-hoc multiplier.

Fusion combines both outputs via inverse-variance weighting, producing forecasts that are always more certain than either component alone.

Sections

  • Inference Pipeline — Full pipeline overview, fusion math, and usage
  • News Signals — How FPL API news feeds into inference, perturbation mapping
  • HMM Details — State space, transition dynamics, Baum-Welch learning
  • Kalman Filter — State-space model, adaptive noise, RTS smoother