ncaa_eval.transform.opponent module

Batch opponent adjustment rating solvers: SRS, Ridge regression, Colley Matrix.

class ncaa_eval.transform.opponent.BatchRatingSolver(*, margin_cap: int = 25, ridge_lambda: float = 20.0, srs_max_iter: int = 10000)[source]

Bases: object

Batch rating solver that produces full-season opponent-adjusted ratings.

All solvers accept a pre-loaded DataFrame of compact regular-season games (caller must filter to is_tournament == False before passing).

Parameters:
  • margin_cap – Maximum point margin applied per game (default 25).

  • ridge_lambda – Regularization strength for Ridge solver (default 20.0).

  • srs_max_iter – Maximum iterations for SRS fixed-point convergence (default 10,000).

compute_colley(games_df: DataFrame) DataFrame[source]

Compute Colley Matrix ratings (win/loss only, no margin).

Parameters:

games_df – DataFrame with columns w_team_id, l_team_id (regular-season games only; scores not used).

Returns:

DataFrame with columns ["team_id", "colley_rating"] (bounded [0, 1]).

compute_ridge(games_df: DataFrame) DataFrame[source]

Compute Ridge regression ratings (regularized SRS).

Parameters:

games_df – DataFrame with columns w_team_id, l_team_id, w_score, l_score (regular-season games only).

Returns:

DataFrame with columns ["team_id", "ridge_rating"].

compute_srs(games_df: DataFrame) DataFrame[source]

Compute SRS (Simple Rating System) ratings via fixed-point iteration.

Parameters:

games_df – DataFrame with columns w_team_id, l_team_id, w_score, l_score (regular-season games only).

Returns:

DataFrame with columns ["team_id", "srs_rating"] (zero-centered).

ncaa_eval.transform.opponent.compute_colley_ratings(games_df: DataFrame) DataFrame[source]

Compute Colley Matrix win/loss-only ratings.

Parameters:

games_df – DataFrame with columns w_team_id, l_team_id (regular-season games only; scores not used).

Returns:

DataFrame with columns ["team_id", "colley_rating"].

ncaa_eval.transform.opponent.compute_ridge_ratings(games_df: DataFrame, *, lam: float = 20.0, margin_cap: int = 25) DataFrame[source]

Compute Ridge regression ratings.

Parameters:
  • games_df – DataFrame with columns w_team_id, l_team_id, w_score, l_score (regular-season games only).

  • lam – Ridge regularization parameter λ (default 20.0).

  • margin_cap – Maximum point margin cap per game (default 25).

Returns:

DataFrame with columns ["team_id", "ridge_rating"].

ncaa_eval.transform.opponent.compute_srs_ratings(games_df: DataFrame, *, margin_cap: int = 25, max_iter: int = 10000) DataFrame[source]

Compute SRS ratings using default solver config.

Parameters:
  • games_df – DataFrame with columns w_team_id, l_team_id, w_score, l_score (regular-season games only).

  • margin_cap – Maximum point margin cap per game (default 25).

  • max_iter – Maximum SRS iterations (default 10,000).

Returns:

DataFrame with columns ["team_id", "srs_rating"].