Skip to content

Modeling Roadmap

This page records approved model designs that should remain visible but are not part of the current baseline implementation.

TODO: Joint Dynamic RAPM

Stack all seasons into one sparse observation matrix with a separate (player_id, season) coefficient:

\[ y_{s,t}=X_{s,t}\beta_t+\epsilon_{s,t}. \]

Connect consecutive player-season coefficients with an aging transition:

\[ \beta_{i,t} = \beta_{i,t-1} + g(a_{i,t};\gamma) + \eta_{i,t}. \]

The corresponding penalized objective is:

\[ \sum_{s,t} w_{s,t}(y_{s,t}-X_{s,t}\beta_t)^2 + \lambda_0\sum_{i,t}\beta_{i,t}^2 + \lambda_T\sum_{i,t} \left[ \beta_{i,t}-\beta_{i,t-1}-g(a_{i,t};\gamma) \right]^2. \]

Temporal differences can be encoded as sparse pseudo-observation rows, making the complete model one augmented sparse regression. A Bayesian state-space version would express the same structure as a latent player trajectory.

Required outputs

  • Filtered estimates use only seasons available through each target date and are eligible for prediction, Leaderboard evaluation, and Transformer features.
  • Smoothed estimates may borrow information from later seasons and must be published separately as retrospective evaluations.

Acceptance criteria

  • reproduce the standalone aging model's forward folds;
  • compare against persistence, two-stage aging priors, and zero-centered RAPM;
  • retain cold starts and retired players without inventing observed seasons;
  • report temporal penalty sensitivity and trajectory uncertainty;
  • prevent future-season outcomes from entering filtered estimates;
  • expose the same player-season side-information keys used by neural tokens.

The two-stage forward aging model is implemented first because it makes the aging curve, target labels, uncertainty proxy, and leakage boundary directly inspectable.