{
  "title": "W39 발행 기록 및 사후 진단",
  "reviewWeek": "2026-W39",
  "updatedAt": "2026-09-28",
  "basis": "축산물품질평가원 도매시장 경매: 암퇘지·탕박·등외 제외·제주 제외, 평일 거래두수 가중 가격(원/kg)",
  "purpose": "발행 예측을 수정하지 않고 실측과 사후 입력 교체 진단을 공개한다. 인과분석 또는 V3 사전발행 성적이 아니다.",
  "actual": {
    "daily": [
      {"date": "2026-09-21", "price": 6303, "headcount": 1292},
      {"date": "2026-09-22", "price": 6123, "headcount": 552},
      {"date": "2026-09-23", "price": 5403, "headcount": 241}
    ],
    "headcount": 2085,
    "observedTradingDays": 3,
    "weightedPrice": 6151.31654676259,
    "previousWeekWeightedPrice": 7005.34,
    "changePct": -12.1911,
    "mondayTuesdayWeightedPrice": 6249.117136659436,
    "missingObservations": "9/24~27의 해당 집계 대상 가격·두수 관측은 없으며, 가격을 0으로 대체하지 않았다."
  },
  "issuedForecasts": {
    "v1": {
      "price": 6854.57,
      "range80": [6643, 7093],
      "signedErrorPct": 11.4325,
      "components": [
        {"name": "weekly_ridge", "weight": 0.5, "price": 6757.4},
        {"name": "daily_model", "weight": 0.25, "price": 6898.12},
        {"name": "previous_week", "weight": 0.25, "price": 7005.34}
      ],
      "headcount": 2293.51,
      "lastDayPredictedHeadcount": 246.87,
      "lastDayPredictedPrice": 6890.25
    },
    "v2": {
      "price": 6539.46,
      "range80": [6321.71, 6757.21],
      "signedErrorPct": 6.3099,
      "targetWeekWeekdayHolidays": 2,
      "historicalHolidayInputsPresent": true
    }
  },
  "implementationFinding": {
    "scope": "V1 일별 가격 LightGBM 학습자료",
    "finding": "과거 is_holiday, is_pre_holiday, is_post_holiday가 모두 0인 2,517행으로 학습되는 반면 예측 입력에는 달력이 적용된다.",
    "trainingDataThrough": "2026-09-18",
    "doesNotApplyTo": ["V1 거래두수 모델", "V2 safe 공휴일 입력"],
    "sourceFiles": [
      "scripts/predict_weekly_pig_pigpeople_basis.py",
      "scripts/predict_weekly_pig_price_with_headcount.py"
    ]
  },
  "counterfactualDiagnostics": {
    "method": "9/18까지의 과거 자료로 W39 V1을 재현하고, 명시한 입력 하나만 바꾸었다. 다른 구성 모델과 결합 가중치는 고정했다.",
    "baselineReplayPrice": 6854.56,
    "replayRoundingDifferenceWon": 0.01,
    "scenarios": [
      {
        "name": "historical_holiday_flags_restored_only",
        "description": "과거 학습자료의 공휴일·전일·후일 표시만 복원하고 기존 예측두수 사용",
        "prediction": 6851.51,
        "signedErrorPct": 11.38
      },
      {
        "name": "actual_headcounts_substituted_only",
        "description": "기존 가격모델에 실제 일별 거래두수 1292/552/241만 대신 입력",
        "prediction": 6822.84,
        "signedErrorPct": 10.92
      }
    ],
    "limitations": [
      "W39 실측을 본 뒤 수행한 단일 주 사후 민감도 점검이다.",
      "실제 W39 거래두수는 당시 예측 마감 시점에 알 수 없었다.",
      "달력 복원 효과가 이 주에 작았다고 다른 주에도 작다는 뜻은 아니다.",
      "구매수요·발주·재고를 직접 관측하지 않아 원인별 가격 기여도를 추정할 수 없다.",
      "V3 채택 근거 또는 공정한 독립 표본 검증으로 사용하지 않는다."
    ]
  },
  "marketContextSource": {
    "title": "한국육류유통수출협회 주간판매동향",
    "url": "https://www.kmta.or.kr/kr/info/week.php/24106",
    "publishedAt": "2026-09-21",
    "coveredPeriod": "2026-09-14~2026-09-18",
    "availability": "9/18 예측 정보 마감 이후 공개. W39 하락의 정량적 인과 증거가 아닌 사후 시장 배경 자료."
  },
  "v3Status": "명절 위치·최근 주 내 가격 흐름·거래일당 두수를 추가한 별도 연구 후보. 첫 검증에서 전체 성능과 명절 전후 성능이 악화돼 운영 미채택. W39 사후 설계이므로 해당 주 재현을 사전발행 성적으로 표시하지 않는다.",
  "v3Evaluation": {
    "primaryModel": "ridge_v3_a100",
    "selection": "alpha 10/100/1000 중 2018~2023 개발기간 평균 절대백분율오차만으로 100 선택",
    "evaluationCaveat": "W39 결과 확인 이후 특징을 설계했다. 아래 평가는 후향 검증이며 독립 미관측 홀드아웃 또는 실제 발행 실적이 아니다. 모든 예측 입력은 해당 목표 주 이전 관측으로 제한했다.",
    "casesExcluded": ["2026-W35", "2026-W39"],
    "evaluation2024Onward": {"weeks": 141, "v2MapePct": 2.3525, "v3MapePct": 2.4910},
    "holidayWindows2024Onward": {"weeks": 16, "v2MapePct": 4.8209, "v3MapePct": 5.2475, "v2Range80CoveragePct": 50, "v3Range80CoveragePct": 43.75},
    "w39RetrospectiveCase": {"v2ApePct": 6.31, "v3ApePct": 1.97},
    "decision": "운영 교체 보류. V1·V2 유지, V3는 연구 후보로 보관.",
    "sourceFile": "data/models/weekly_preforecast_v3/validation.json"
  }
}
