Skip to content

Train Forward Portable-Matchup Contextual RAPM

MPLCONFIGDIR=/private/tmp uv run nba-train-forward-portable-matchup-contextual-rapm

This command fits the 1996-97 through 2025-26 recursive RAPM state. It uses the same profile and cold-start inputs as Forward Contextual RAPM, but carries an antisymmetric total context \(C\). For every completed season, it also stores a possession-weighted empirical reference field that identifies portable unit scores \(h\) and opponent-specific residuals \(q\).

The immutable run is written beneath artifacts/models/forward_portable_matchup_contextual_rapm/2025-26/. It contains season_context_models.joblib, forecast_reference_units.parquet, context metadata, frozen player priors, and regular-season/playoff, team, and win evaluation outputs.

Run the focused contracts with:

MPLCONFIGDIR=/private/tmp uv run pytest \
  tests/test_matchup_contextual.py \
  tests/test_forward_portable_matchup_contextual_rapm.py

Refresh the shared full-game outcomes after a successful run:

MPLCONFIGDIR=/private/tmp uv run nba-report-frozen-game-outcomes --season 2025-26

See Forward Portable-Matchup Contextual RAPM for the model equations, frozen information boundary, and result.