{
  "research_audit": {
    "temporal_validation": {
      "name": "rolling future-season evaluation",
      "passed": true,
      "details": "Every held-out season uses only prior seasons and weather available before the registered kickoff cutoff."
    },
    "baseline_checks": [
      {
        "name": "identical champion denominator",
        "passed": true,
        "details": "Champion and challenger are scored on the same held-out player-weeks."
      }
    ],
    "uncertainty": {
      "name": "game-cluster bootstrap interval",
      "passed": true,
      "details": "4,000-draw deterministic cluster bootstrap resampling NFL games; all player-weeks from a sampled game move together"
    },
    "missingness": {
      "input_rows": 20700,
      "analyzed_rows": 20700,
      "excluded_rows": 0,
      "missing_by_field": {},
      "reconciled": true
    },
    "sensitivity_checks": [
      {
        "name": "six future-season windows",
        "passed": true,
        "details": "Every locked rolling future-season window appears in the scorecard."
      },
      {
        "name": "fantasy-position stability",
        "passed": true,
        "details": "QB, RB, WR, and TE results are reported separately."
      }
    ],
    "leakage_checks": [
      {
        "name": "pregame source availability",
        "passed": true,
        "details": "Forecast source-availability timestamps precede every six-hour cutoff."
      }
    ],
    "withholding_checks": [
      {
        "name": "code-owned champion decision",
        "passed": true,
        "details": "A promotion requires every locked model gate; a rejection preserves the existing champion."
      },
      {
        "name": "deterministic rerun",
        "passed": true,
        "details": "Two complete model evaluations produced the same prediction hash."
      }
    ]
  },
  "study": "Did NFL Weather Reduce Weekly Fantasy Projection Error?",
  "study_id": "weather-model-impact",
  "data_through": 2024,
  "population": "held-out NFL player-weeks with cutoff-safe weather forecasts",
  "estimand": "weather challenger improvement in weekly PPR MAE versus champion",
  "decision": "promoted",
  "reason": "The cutoff-safe weather challenger passed every locked weekly projection gate.",
  "overall_improvement_pct": 0.5676619477,
  "overall_improvement_pct_ci_95": [
    0.3280784484,
    0.8096084829
  ],
  "challenger_minus_champion_mae_ci_95": [
    -0.0377205305,
    -0.0152577339
  ],
  "winning_windows": 6,
  "maximum_position_regression_pct": 0.2390639642,
  "champion": {
    "interval_80_coverage": 0.7922222222,
    "mean_weekly_spearman": 0.5647192547,
    "model_mae": 4.6618025574,
    "rows": 20700
  },
  "challenger": {
    "interval_80_coverage": 0.7903381643,
    "mean_weekly_spearman": 0.5657892066,
    "model_mae": 4.6353392782,
    "rows": 20700
  },
  "by_season": {
    "2019": {
      "challenger": {
        "interval_80_coverage": 0.7741393787,
        "mean_weekly_spearman": 0.5417018311,
        "model_mae": 4.7771386975,
        "rows": 3573
      },
      "champion": {
        "interval_80_coverage": 0.7691015953,
        "mean_weekly_spearman": 0.5440858919,
        "model_mae": 4.8438489529,
        "rows": 3573
      }
    },
    "2020": {
      "challenger": {
        "interval_80_coverage": 0.7679477883,
        "mean_weekly_spearman": 0.5545958014,
        "model_mae": 4.8908891933,
        "rows": 2758
      },
      "champion": {
        "interval_80_coverage": 0.7712110225,
        "mean_weekly_spearman": 0.5553409671,
        "model_mae": 4.9232162496,
        "rows": 2758
      }
    },
    "2021": {
      "challenger": {
        "interval_80_coverage": 0.7905830824,
        "mean_weekly_spearman": 0.5409859319,
        "model_mae": 4.6972919765,
        "rows": 3653
      },
      "champion": {
        "interval_80_coverage": 0.7946892965,
        "mean_weekly_spearman": 0.5411824709,
        "model_mae": 4.7153869397,
        "rows": 3653
      }
    },
    "2022": {
      "challenger": {
        "interval_80_coverage": 0.8031016339,
        "mean_weekly_spearman": 0.5778879895,
        "model_mae": 4.51028943,
        "rows": 3611
      },
      "champion": {
        "interval_80_coverage": 0.8067017447,
        "mean_weekly_spearman": 0.5776642971,
        "model_mae": 4.5330967656,
        "rows": 3611
      }
    },
    "2023": {
      "challenger": {
        "interval_80_coverage": 0.8122258772,
        "mean_weekly_spearman": 0.6039093242,
        "model_mae": 4.424349366,
        "rows": 3648
      },
      "champion": {
        "interval_80_coverage": 0.8141447368,
        "mean_weekly_spearman": 0.6009750813,
        "model_mae": 4.4416172658,
        "rows": 3648
      }
    },
    "2024": {
      "challenger": {
        "interval_80_coverage": 0.788255713,
        "mean_weekly_spearman": 0.5727497248,
        "model_mae": 4.5727060711,
        "rows": 3457
      },
      "champion": {
        "interval_80_coverage": 0.792016199,
        "mean_weekly_spearman": 0.5666049486,
        "model_mae": 4.5752587548,
        "rows": 3457
      }
    }
  },
  "by_position": {
    "QB": {
      "challenger": {
        "interval_80_coverage": 0.7724388033,
        "mean_weekly_spearman": 0.5415446302,
        "model_mae": 6.4535584417,
        "rows": 2206
      },
      "champion": {
        "interval_80_coverage": 0.783318223,
        "mean_weekly_spearman": 0.5307431229,
        "model_mae": 6.5263649072,
        "rows": 2206
      }
    },
    "RB": {
      "challenger": {
        "interval_80_coverage": 0.7901348605,
        "mean_weekly_spearman": 0.5925843673,
        "model_mae": 4.8066586338,
        "rows": 5413
      },
      "champion": {
        "interval_80_coverage": 0.7938296693,
        "mean_weekly_spearman": 0.5953828766,
        "model_mae": 4.7951950504,
        "rows": 5413
      }
    },
    "TE": {
      "challenger": {
        "interval_80_coverage": 0.7947308133,
        "mean_weekly_spearman": 0.5267835764,
        "model_mae": 3.5974891264,
        "rows": 4365
      },
      "champion": {
        "interval_80_coverage": 0.7981672394,
        "mean_weekly_spearman": 0.5293922165,
        "model_mae": 3.5996551751,
        "rows": 4365
      }
    },
    "WR": {
      "challenger": {
        "interval_80_coverage": 0.79279486,
        "mean_weekly_spearman": 0.6022442526,
        "model_mae": 4.5885142169,
        "rows": 8716
      },
      "champion": {
        "interval_80_coverage": 0.7905002295,
        "mean_weekly_spearman": 0.6033588027,
        "model_mae": 4.6389704343,
        "rows": 8716
      }
    }
  },
  "position_regression_pct": {
    "QB": -1.1155745422,
    "RB": 0.2390639642,
    "TE": -0.0601737819,
    "WR": -1.0876598188
  },
  "uncertainty": {
    "challenger_minus_champion_mae_ci_95": [
      -0.0377205305,
      -0.0152577339
    ],
    "cluster_unit": "game_id",
    "clusters": 916,
    "method": "4,000-draw deterministic cluster bootstrap resampling NFL games; all player-weeks from a sampled game move together",
    "overall_improvement_pct_ci_95": [
      0.3280784484,
      0.8096084829
    ],
    "repetitions": 4000
  },
  "model_gates": {
    "calibration": true,
    "cost": true,
    "leakage": true,
    "missingness": true,
    "multiple-windows": true,
    "primary-metric": true,
    "reproducibility": true,
    "subgroup-stability": true
  }
}
