{
  "task_id": "F1-conf-01",
  "first_growth_month": "2001-01",
  "last_month": "2026-09",
  "n_months_growth": 308,
  "n_months_missing_growth": 1,
  "n_analysed": 308,
  "mean_growth_12m": 2.5741201901,
  "mean_growth_12m_2001_2013": 2.3612153974,
  "mean_growth_12m_2014_2026": 2.7926277404,
  "growth_2014_06": 2.0976342439,
  "growth_2016_07": 0.8683633431,
  "growth_2020_05": 0.1982013036,
  "growth_2022_06": 8.9793611031,
  "growth_2026_09": 3.7172508443,
  "max_growth_12m": 8.9793611031,
  "max_growth_month": "2022-06",
  "min_growth_12m": -1.9587610038,
  "min_growth_month": "2009-07",
  "feasibility": "partial",
  "feasibility_reason": "g_t not computable for ['2025-10'] because the source (2026-10-28 vintage) reports no index level for 2025-10; no imputation allowed. All other window months computed.",
  "data_issues": [
    {
      "issue": "cpi_vintage_2026-10-28.csv: empty cpi value (source reports no value) for month(s) ['2025-10']",
      "handling": "Not imputed or interpolated and not replaced by an older-vintage value (the 2026-10-28 vintage covers the month, and the older vintage has no value for it anyway); g_t for that month (and for t+12, which lies outside the window) is reported missing and counted."
    },
    {
      "issue": "Vintages overlap for 30 months (2014-01..2016-06) with revised values (new minus old: min -0.455, max 0.330, 30 months differ; revisions between vintages, e.g. re-estimated seasonal factors)",
      "handling": "Per the availability rule, the 2026-10-28 value is used for every month it covers; the 2016-07-15 value only before 2014-01."
    },
    {
      "issue": "cpi_assembled.csv: month(s) absent from the sequence: ['2016-07']",
      "handling": "Assembled file not used for computation; series rebuilt from the two vintage files."
    },
    {
      "issue": "cpi_assembled.csv: 30 months (2014-01..2016-06) take values from the 2016-07-15 vintage although the 2026-10-28 vintage covers them (violates the most-recent-vintage rule)",
      "handling": "Assembled file not used; 2026-10-28 values used for those months."
    },
    {
      "issue": "cpi_assembled.csv: 123 rows labelled vintage 2026-10-28 (2016-08..2026-10) do not match that vintage; 123 of them equal the vintage value of the previous month (dates shifted forward by one month, creating a spurious 2026-10 row and misplacing the missing value)",
      "handling": "Assembled file not used for computation; only the two authoritative vintage files are used."
    },
    {
      "issue": "12 window months (2014-01..2014-12) have P_t from the 2026-10-28 vintage but P_(t-12) from the 2016-07-15 vintage (the newer extract starts 2014-01), so their g_t mixes vintages",
      "handling": "Kept, as the TASK rule prescribes the most recent vintage per month; sensitivity value growth using the 2016 vintage only is reported as sens_growth_2014_06_old_vintage_only."
    }
  ],
  "n_input_rows": {
    "cpi_vintage_2016-07-15.csv": 834,
    "cpi_vintage_2026-10-28.csv": 153,
    "cpi_assembled.csv": 957
  },
  "random_seed": null,
  "missing_growth_months": [
    "2025-10"
  ],
  "n_window_months": 309,
  "n_months_2001_2013": 156,
  "n_months_2014_2026": 152,
  "n_months_mixed_vintage_growth": 12,
  "sens_growth_2014_06_old_vintage_only": 2.0051042146,
  "sd_growth_12m": 1.7407883259
}