{
  "feature_id": "opponent_adjusted_epa",
  "label": "model",
  "label_note": "v0 iterative SOS on 2025 weekly EPA/play + 85/15 blend with 2026 W1 efficiency fact. Not calibrated to points; not an Official.",
  "as_of": "2026-09-17T15:47:55-05:00",
  "season": 2026,
  "week": 2,
  "status": "READY",
  "method_ref": "data/features/power/packs/opponent_adjusted_epa_build_plan_v1.md",
  "method_version": "opponent_adjusted_epa_v0",
  "source_paths": [
    "data/team_stats_weekly_2025.csv",
    "data/team_efficiency_2026_w1.fact.csv",
    "data/schedule_week2_2026.games.json"
  ],
  "hyperparams": {
    "prior_weight": 0.85,
    "iters": 4,
    "ridge": 0.15,
    "league_off_epa_pp_2025": -0.001263,
    "off_mean_2026_w1": 0.008909,
    "def_allowed_mean_2026_w1": 0.005437
  },
  "row_schema_teams": {
    "team": "str",
    "off_epa_adj": "float EPA/play rating",
    "def_epa_adj": "float EPA/play rating (higher=better D)",
    "net_epa_adj": "off+def",
    "shrink_weight_prior": "float"
  },
  "teams": [
    {
      "team": "ARI",
      "off_epa_adj": 0.01385,
      "def_epa_adj": -0.00077,
      "net_epa_adj": 0.013079,
      "shrink_weight_prior": 0.85,
      "prior_off_epa_adj": -0.007571,
      "prior_def_epa_adj": -0.044918,
      "obs_off_epa_pp_2026_w1": 0.144143,
      "obs_def_epa_allowed_pp_2026_w1": -0.243959,
      "games_2025": 17,
      "as_of_week": 1,
      "method_version": "opponent_adjusted_epa_v0"
    },
    {
      "team": "ATL",
      "off_epa_adj": -0.06963,
      "def_epa_adj": 0.05229,
      "net_epa_adj": -0.01734,
      "shrink_weight_prior": 0.85,
      "prior_off_epa_adj": -0.023697,
      "prior_def_epa_adj": 0.007127,
      "obs_off_epa_pp_2026_w1": -0.321006,
      "obs_def_epa_allowed_pp_2026_w1": -0.302776,
      "games_2025": 17,
      "as_of_week": 1,
      "method_version": "opponent_adjusted_epa_v0"
    },
    {
      "team": "BAL",
      "off_epa_adj": 0.084631,
      "def_epa_adj": 0.024598,
      "net_epa_adj": 0.109229,
      "shrink_weight_prior": 0.85,
      "prior_off_epa_adj": 0.044406,
      "prior_def_epa_adj": -0.014592,
      "obs_off_epa_pp_2026_w1": 0.321484,
      "obs_def_epa_allowed_pp_2026_w1": -0.241237,
      "games_2025": 17,
      "as_of_week": 1,
      "method_version": "opponent_adjusted_epa_v0"
    },
    {
      "team": "BUF",
      "off_epa_adj": 0.125421,
      "def_epa_adj": -0.011012,
      "net_epa_adj": 0.114409,
      "shrink_weight_prior": 0.85,
      "prior_off_epa_adj": 0.103965,
      "prior_def_epa_adj": -0.001755,
      "obs_off_epa_pp_2026_w1": 0.255911,
      "obs_def_epa_allowed_pp_2026_w1": 0.068908,
      "games_2025": 17,
      "as_of_week": 1,
      "method_version": "opponent_adjusted_epa_v0"
    },
    {
      "team": "CAR",
      "off_epa_adj": -0.023012,
      "def_epa_adj": -0.097376,
      "net_epa_adj": -0.120388,
      "shrink_weight_prior": 0.85,
      "prior_off_epa_adj": -0.057536,
      "prior_def_epa_adj": -0.043276,
      "obs_off_epa_pp_2026_w1": 0.181536,
      "obs_def_epa_allowed_pp_2026_w1": 0.409382,
      "games_2025": 17,
      "as_of_week": 1,
      "method_version": "opponent_adjusted_epa_v0"
    },
    {
      "team": "CHI",
      "off_epa_adj": 0.109587,
      "def_epa_adj": -0.037985,
      "net_epa_adj": 0.071603,
      "shrink_weight_prior": 0.85,
      "prior_off_epa_adj": 0.058255,
      "prior_def_epa_adj": -0.013612,
      "obs_off_epa_pp_2026_w1": 0.409382,
      "obs_def_epa_allowed_pp_2026_w1": 0.181536,
      "games_2025": 17,
      "as_of_week": 1,
      "method_version": "opponent_adjusted_epa_v0"
    },
    {
      "team": "CIN",
      "off_epa_adj": 0.007876,
      "def_epa_adj": -0.068522,
      "net_epa_adj": -0.060646,
      "shrink_weight_prior": 0.85,
      "prior_off_epa_adj": 0.011114,
      "prior_def_epa_adj": -0.114259,
      "obs_off_epa_pp_2026_w1": -0.00156,
      "obs_def_epa_allowed_pp_2026_w1": -0.185214,
      "games_2025": 17,
      "as_of_week": 1,
      "method_version": "opponent_adjusted_epa_v0"
    },
    {
      "team": "CLE",
      "off_epa_adj": -0.192044,
      "def_epa_adj": 0.023521,
      "net_epa_adj": -0.168523,
      "shrink_weight_prior": 0.85,
      "prior_off_epa_adj": -0.191844,
      "prior_def_epa_adj": 0.086389,
      "obs_off_epa_pp_2026_w1": -0.18427,
      "obs_def_epa_allowed_pp_2026_w1": 0.338168,
      "games_2025": 17,
      "as_of_week": 1,
      "method_version": "opponent_adjusted_epa_v0"
    },
    {
      "team": "DAL",
      "off_epa_adj": 0.097347,
      "def_epa_adj": -0.189422,
      "net_epa_adj": -0.092075,
      "shrink_weight_prior": 0.85,
      "prior_off_epa_adj": 0.077157,
      "prior_def_epa_adj": -0.158713,
      "obs_off_epa_pp_2026_w1": 0.22067,
      "obs_def_epa_allowed_pp_2026_w1": 0.368879,
      "games_2025": 17,
      "as_of_week": 1,
      "method_version": "opponent_adjusted_epa_v0"
    },
    {
      "team": "DEN",
      "off_epa_adj": -0.026802,
      "def_epa_adj": 0.043943,
      "net_epa_adj": 0.017141,
      "shrink_weight_prior": 0.85,
      "prior_off_epa_adj": 0.027861,
      "prior_def_epa_adj": 0.079755,
      "obs_off_epa_pp_2026_w1": -0.327647,
      "obs_def_epa_allowed_pp_2026_w1": 0.164427,
      "games_2025": 17,
      "as_of_week": 1,
      "method_version": "opponent_adjusted_epa_v0"
    },
    {
      "team": "DET",
      "off_epa_adj": 0.050277,
      "def_epa_adj": 0.016706,
      "net_epa_adj": 0.066983,
      "shrink_weight_prior": 0.85,
      "prior_off_epa_adj": 0.057549,
      "prior_def_epa_adj": 0.013281,
      "obs_off_epa_pp_2026_w1": 0.01798,
      "obs_def_epa_allowed_pp_2026_w1": -0.030677,
      "games_2025": 17,
      "as_of_week": 1,
      "method_version": "opponent_adjusted_epa_v0"
    },
    {
      "team": "GB",
      "off_epa_adj": 0.042183,
      "def_epa_adj": -0.013339,
      "net_epa_adj": 0.028845,
      "shrink_weight_prior": 0.85,
      "prior_off_epa_adj": 0.082051,
      "prior_def_epa_adj": -0.020111,
      "obs_off_epa_pp_2026_w1": -0.174826,
      "obs_def_epa_allowed_pp_2026_w1": -0.019598,
      "games_2025": 17,
      "as_of_week": 1,
      "method_version": "opponent_adjusted_epa_v0"
    },
    {
      "team": "HOU",
      "off_epa_adj": 0.006675,
      "def_epa_adj": 0.066342,
      "net_epa_adj": 0.073016,
      "shrink_weight_prior": 0.85,
      "prior_off_epa_adj": -0.002735,
      "prior_def_epa_adj": 0.117547,
      "obs_off_epa_pp_2026_w1": 0.068908,
      "obs_def_epa_allowed_pp_2026_w1": 0.229258,
      "games_2025": 17,
      "as_of_week": 1,
      "method_version": "opponent_adjusted_epa_v0"
    },
    {
      "team": "IND",
      "off_epa_adj": 0.041817,
      "def_epa_adj": -0.055054,
      "net_epa_adj": -0.013237,
      "shrink_weight_prior": 0.85,
      "prior_off_epa_adj": 0.09334,
      "prior_def_epa_adj": -0.008997,
      "obs_off_epa_pp_2026_w1": -0.241237,
      "obs_def_epa_allowed_pp_2026_w1": 0.321484,
      "games_2025": 17,
      "as_of_week": 1,
      "method_version": "opponent_adjusted_epa_v0"
    },
    {
      "team": "JAX",
      "off_epa_adj": 0.07304,
      "def_epa_adj": 0.1015,
      "net_epa_adj": 0.17454,
      "shrink_weight_prior": 0.85,
      "prior_off_epa_adj": 0.027825,
      "prior_def_epa_adj": 0.085934,
      "obs_off_epa_pp_2026_w1": 0.338168,
      "obs_def_epa_allowed_pp_2026_w1": -0.18427,
      "games_2025": 17,
      "as_of_week": 1,
      "method_version": "opponent_adjusted_epa_v0"
    },
    {
      "team": "KC",
      "off_epa_adj": 0.041517,
      "def_epa_adj": 0.085371,
      "net_epa_adj": 0.126888,
      "shrink_weight_prior": 0.85,
      "prior_off_epa_adj": 0.021399,
      "prior_def_epa_adj": 0.038796,
      "obs_off_epa_pp_2026_w1": 0.164427,
      "obs_def_epa_allowed_pp_2026_w1": -0.343853,
      "games_2025": 17,
      "as_of_week": 1,
      "method_version": "opponent_adjusted_epa_v0"
    },
    {
      "team": "LA",
      "off_epa_adj": 0.062072,
      "def_epa_adj": 0.005225,
      "net_epa_adj": 0.067297,
      "shrink_weight_prior": 0.85,
      "prior_off_epa_adj": 0.121299,
      "prior_def_epa_adj": 0.036734,
      "obs_off_epa_pp_2026_w1": -0.264639,
      "obs_def_epa_allowed_pp_2026_w1": 0.178768,
      "games_2025": 17,
      "as_of_week": 1,
      "method_version": "opponent_adjusted_epa_v0"
    },
    {
      "team": "LAC",
      "off_epa_adj": -0.060111,
      "def_epa_adj": 0.037137,
      "net_epa_adj": -0.022974,
      "shrink_weight_prior": 0.85,
      "prior_off_epa_adj": -0.026095,
      "prior_def_epa_adj": 0.068169,
      "obs_off_epa_pp_2026_w1": -0.243959,
      "obs_def_epa_allowed_pp_2026_w1": 0.144143,
      "games_2025": 17,
      "as_of_week": 1,
      "method_version": "opponent_adjusted_epa_v0"
    },
    {
      "team": "LV",
      "off_epa_adj": -0.169541,
      "def_epa_adj": 0.043518,
      "net_epa_adj": -0.126023,
      "shrink_weight_prior": 0.85,
      "prior_off_epa_adj": -0.190979,
      "prior_def_epa_adj": 0.00861,
      "obs_off_epa_pp_2026_w1": -0.039149,
      "obs_def_epa_allowed_pp_2026_w1": -0.23589,
      "games_2025": 17,
      "as_of_week": 1,
      "method_version": "opponent_adjusted_epa_v0"
    },
    {
      "team": "MIA",
      "off_epa_adj": -0.060408,
      "def_epa_adj": -0.054532,
      "net_epa_adj": -0.11494,
      "shrink_weight_prior": 0.85,
      "prior_off_epa_adj": -0.027868,
      "prior_def_epa_adj": -0.072023,
      "obs_off_epa_pp_2026_w1": -0.23589,
      "obs_def_epa_allowed_pp_2026_w1": -0.039149,
      "games_2025": 17,
      "as_of_week": 1,
      "method_version": "opponent_adjusted_epa_v0"
    },
    {
      "team": "MIN",
      "off_epa_adj": -0.122227,
      "def_epa_adj": 0.121123,
      "net_epa_adj": -0.001103,
      "shrink_weight_prior": 0.85,
      "prior_off_epa_adj": -0.138765,
      "prior_def_epa_adj": 0.110687,
      "obs_off_epa_pp_2026_w1": -0.019598,
      "obs_def_epa_allowed_pp_2026_w1": -0.174826,
      "games_2025": 17,
      "as_of_week": 1,
      "method_version": "opponent_adjusted_epa_v0"
    },
    {
      "team": "NE",
      "off_epa_adj": 0.075256,
      "def_epa_adj": -0.007435,
      "net_epa_adj": 0.067821,
      "shrink_weight_prior": 0.85,
      "prior_off_epa_adj": 0.109455,
      "prior_def_epa_adj": 0.001871,
      "obs_off_epa_pp_2026_w1": -0.109628,
      "obs_def_epa_allowed_pp_2026_w1": 0.065603,
      "games_2025": 17,
      "as_of_week": 1,
      "method_version": "opponent_adjusted_epa_v0"
    },
    {
      "team": "NO",
      "off_epa_adj": -0.069987,
      "def_epa_adj": 0.0571,
      "net_epa_adj": -0.012887,
      "shrink_weight_prior": 0.85,
      "prior_off_epa_adj": -0.077735,
      "prior_def_epa_adj": 0.06629,
      "obs_off_epa_pp_2026_w1": -0.017172,
      "obs_def_epa_allowed_pp_2026_w1": 0.00041,
      "games_2025": 17,
      "as_of_week": 1,
      "method_version": "opponent_adjusted_epa_v0"
    },
    {
      "team": "NYG",
      "off_epa_adj": 0.060438,
      "def_epa_adj": -0.080524,
      "net_epa_adj": -0.020086,
      "shrink_weight_prior": 0.85,
      "prior_off_epa_adj": 0.00758,
      "prior_def_epa_adj": -0.056752,
      "obs_off_epa_pp_2026_w1": 0.368879,
      "obs_def_epa_allowed_pp_2026_w1": 0.22067,
      "games_2025": 17,
      "as_of_week": 1,
      "method_version": "opponent_adjusted_epa_v0"
    },
    {
      "team": "NYJ",
      "off_epa_adj": -0.093607,
      "def_epa_adj": -0.072784,
      "net_epa_adj": -0.166392,
      "shrink_weight_prior": 0.85,
      "prior_off_epa_adj": -0.144823,
      "prior_def_epa_adj": -0.107522,
      "obs_off_epa_pp_2026_w1": 0.205524,
      "obs_def_epa_allowed_pp_2026_w1": -0.118624,
      "games_2025": 17,
      "as_of_week": 1,
      "method_version": "opponent_adjusted_epa_v0"
    },
    {
      "team": "PHI",
      "off_epa_adj": 0.013861,
      "def_epa_adj": 0.07403,
      "net_epa_adj": 0.087891,
      "shrink_weight_prior": 0.85,
      "prior_off_epa_adj": 0.005346,
      "prior_def_epa_adj": 0.096705,
      "obs_off_epa_pp_2026_w1": 0.071016,
      "obs_def_epa_allowed_pp_2026_w1": 0.059897,
      "games_2025": 17,
      "as_of_week": 1,
      "method_version": "opponent_adjusted_epa_v0"
    },
    {
      "team": "PIT",
      "off_epa_adj": -0.027434,
      "def_epa_adj": 0.033004,
      "net_epa_adj": 0.005569,
      "shrink_weight_prior": 0.85,
      "prior_off_epa_adj": 0.022728,
      "prior_def_epa_adj": -0.01878,
      "obs_off_epa_pp_2026_w1": -0.302776,
      "obs_def_epa_allowed_pp_2026_w1": -0.321006,
      "games_2025": 17,
      "as_of_week": 1,
      "method_version": "opponent_adjusted_epa_v0"
    },
    {
      "team": "SEA",
      "off_epa_adj": 0.040925,
      "def_epa_adj": 0.125166,
      "net_epa_adj": 0.166091,
      "shrink_weight_prior": 0.85,
      "prior_off_epa_adj": 0.038142,
      "prior_def_epa_adj": 0.126948,
      "obs_off_epa_pp_2026_w1": 0.065603,
      "obs_def_epa_allowed_pp_2026_w1": -0.109628,
      "games_2025": 17,
      "as_of_week": 1,
      "method_version": "opponent_adjusted_epa_v0"
    },
    {
      "team": "SF",
      "off_epa_adj": 0.092244,
      "def_epa_adj": -0.005012,
      "net_epa_adj": 0.087231,
      "shrink_weight_prior": 0.85,
      "prior_off_epa_adj": 0.078547,
      "prior_def_epa_adj": -0.053557,
      "obs_off_epa_pp_2026_w1": 0.178768,
      "obs_def_epa_allowed_pp_2026_w1": -0.264639,
      "games_2025": 17,
      "as_of_week": 1,
      "method_version": "opponent_adjusted_epa_v0"
    },
    {
      "team": "TB",
      "off_epa_adj": -0.024244,
      "def_epa_adj": -0.015915,
      "net_epa_adj": -0.040158,
      "shrink_weight_prior": 0.85,
      "prior_off_epa_adj": 0.005735,
      "prior_def_epa_adj": -0.019958,
      "obs_off_epa_pp_2026_w1": -0.185214,
      "obs_def_epa_allowed_pp_2026_w1": -0.00156,
      "games_2025": 17,
      "as_of_week": 1,
      "method_version": "opponent_adjusted_epa_v0"
    },
    {
      "team": "TEN",
      "off_epa_adj": -0.112057,
      "def_epa_adj": -0.092028,
      "net_epa_adj": -0.204085,
      "shrink_weight_prior": 0.85,
      "prior_off_epa_adj": -0.109326,
      "prior_def_epa_adj": -0.079519,
      "obs_off_epa_pp_2026_w1": -0.118624,
      "obs_def_epa_allowed_pp_2026_w1": 0.16835,
      "games_2025": 17,
      "as_of_week": 1,
      "method_version": "opponent_adjusted_epa_v0"
    },
    {
      "team": "WAS",
      "off_epa_adj": 0.012085,
      "def_epa_adj": -0.108862,
      "net_epa_adj": -0.096777,
      "shrink_weight_prior": 0.85,
      "prior_off_epa_adj": 0.00522,
      "prior_def_epa_adj": -0.1165,
      "obs_off_epa_pp_2026_w1": 0.059897,
      "obs_def_epa_allowed_pp_2026_w1": 0.071016,
      "games_2025": 17,
      "as_of_week": 1,
      "method_version": "opponent_adjusted_epa_v0"
    }
  ],
  "games": [
    {
      "game_id": "2026_02_DET_BUF",
      "home_team": "BUF",
      "away_team": "DET",
      "home_net_epa_adj": 0.114409,
      "away_net_epa_adj": 0.066983,
      "margin_contrib_home_minus_away": 0.047426,
      "note": "EPA/play rating differential \u2014 scale to points is Power's job; not a fair spread."
    },
    {
      "game_id": "2026_02_CAR_ATL",
      "home_team": "ATL",
      "away_team": "CAR",
      "home_net_epa_adj": -0.01734,
      "away_net_epa_adj": -0.120388,
      "margin_contrib_home_minus_away": 0.103048,
      "note": "EPA/play rating differential \u2014 scale to points is Power's job; not a fair spread."
    },
    {
      "game_id": "2026_02_CIN_HOU",
      "home_team": "HOU",
      "away_team": "CIN",
      "home_net_epa_adj": 0.073016,
      "away_net_epa_adj": -0.060646,
      "margin_contrib_home_minus_away": 0.133662,
      "note": "EPA/play rating differential \u2014 scale to points is Power's job; not a fair spread."
    },
    {
      "game_id": "2026_02_CLE_TB",
      "home_team": "TB",
      "away_team": "CLE",
      "home_net_epa_adj": -0.040158,
      "away_net_epa_adj": -0.168523,
      "margin_contrib_home_minus_away": 0.128365,
      "note": "EPA/play rating differential \u2014 scale to points is Power's job; not a fair spread."
    },
    {
      "game_id": "2026_02_GB_NYJ",
      "home_team": "NYJ",
      "away_team": "GB",
      "home_net_epa_adj": -0.166392,
      "away_net_epa_adj": 0.028845,
      "margin_contrib_home_minus_away": -0.195237,
      "note": "EPA/play rating differential \u2014 scale to points is Power's job; not a fair spread."
    },
    {
      "game_id": "2026_02_MIN_CHI",
      "home_team": "CHI",
      "away_team": "MIN",
      "home_net_epa_adj": 0.071603,
      "away_net_epa_adj": -0.001103,
      "margin_contrib_home_minus_away": 0.072706,
      "note": "EPA/play rating differential \u2014 scale to points is Power's job; not a fair spread."
    },
    {
      "game_id": "2026_02_NO_BAL",
      "home_team": "BAL",
      "away_team": "NO",
      "home_net_epa_adj": 0.109229,
      "away_net_epa_adj": -0.012887,
      "margin_contrib_home_minus_away": 0.122116,
      "note": "EPA/play rating differential \u2014 scale to points is Power's job; not a fair spread."
    },
    {
      "game_id": "2026_02_PHI_TEN",
      "home_team": "TEN",
      "away_team": "PHI",
      "home_net_epa_adj": -0.204085,
      "away_net_epa_adj": 0.087891,
      "margin_contrib_home_minus_away": -0.291976,
      "note": "EPA/play rating differential \u2014 scale to points is Power's job; not a fair spread."
    },
    {
      "game_id": "2026_02_PIT_NE",
      "home_team": "NE",
      "away_team": "PIT",
      "home_net_epa_adj": 0.067821,
      "away_net_epa_adj": 0.005569,
      "margin_contrib_home_minus_away": 0.062252,
      "note": "EPA/play rating differential \u2014 scale to points is Power's job; not a fair spread."
    },
    {
      "game_id": "2026_02_JAX_DEN",
      "home_team": "DEN",
      "away_team": "JAX",
      "home_net_epa_adj": 0.017141,
      "away_net_epa_adj": 0.17454,
      "margin_contrib_home_minus_away": -0.157399,
      "note": "EPA/play rating differential \u2014 scale to points is Power's job; not a fair spread."
    },
    {
      "game_id": "2026_02_LV_LAC",
      "home_team": "LAC",
      "away_team": "LV",
      "home_net_epa_adj": -0.022974,
      "away_net_epa_adj": -0.126023,
      "margin_contrib_home_minus_away": 0.103049,
      "note": "EPA/play rating differential \u2014 scale to points is Power's job; not a fair spread."
    },
    {
      "game_id": "2026_02_MIA_SF",
      "home_team": "SF",
      "away_team": "MIA",
      "home_net_epa_adj": 0.087231,
      "away_net_epa_adj": -0.11494,
      "margin_contrib_home_minus_away": 0.202171,
      "note": "EPA/play rating differential \u2014 scale to points is Power's job; not a fair spread."
    },
    {
      "game_id": "2026_02_SEA_ARI",
      "home_team": "ARI",
      "away_team": "SEA",
      "home_net_epa_adj": 0.013079,
      "away_net_epa_adj": 0.166091,
      "margin_contrib_home_minus_away": -0.153012,
      "note": "EPA/play rating differential \u2014 scale to points is Power's job; not a fair spread."
    },
    {
      "game_id": "2026_02_WAS_DAL",
      "home_team": "DAL",
      "away_team": "WAS",
      "home_net_epa_adj": -0.092075,
      "away_net_epa_adj": -0.096777,
      "margin_contrib_home_minus_away": 0.004702,
      "note": "EPA/play rating differential \u2014 scale to points is Power's job; not a fair spread."
    },
    {
      "game_id": "2026_02_IND_KC",
      "home_team": "KC",
      "away_team": "IND",
      "home_net_epa_adj": 0.126888,
      "away_net_epa_adj": -0.013237,
      "margin_contrib_home_minus_away": 0.140125,
      "note": "EPA/play rating differential \u2014 scale to points is Power's job; not a fair spread."
    },
    {
      "game_id": "2026_02_NYG_LA",
      "home_team": "LA",
      "away_team": "NYG",
      "home_net_epa_adj": 0.067297,
      "away_net_epa_adj": -0.020086,
      "margin_contrib_home_minus_away": 0.087383,
      "note": "EPA/play rating differential \u2014 scale to points is Power's job; not a fair spread."
    }
  ],
  "anti": [
    "not_official",
    "not_weekly_lean",
    "no_dog234",
    "blind_safe"
  ]
}
