# WP-F5: валидация прогноза (этап 3 — уровни 0–1, v2026.1; §4/§6 — этап 5, v2026.2)

Дата: 2026-07-11. Состав MVP: страна, 6 областей, Минск; 3 сценария.
Машиночитаемые результаты: `backtest_results.json`, `sensitivity.json`,
`crosscheck.json` (в этой папке); воспроизведение — `python -m
etl.forecast.backtest|sensitivity`.

## 1. Бэктест: обучение ≤2009 → прогноз 2019 → сравнение с переписью

Методика: стартовая структура — перепись-2009; уровни и **линейные тренды
1999→2009** для e0 (по полу) и национального СКР (правило «продолжение
наблюдаемого тренда», объявлено до сравнения); областные ASFR-профили 2009;
миграция: внутренний профиль матрицы переписи-2009 (объём 60 тыс.
перемещений/год), международное сальдо +10 тыс./год (официальный уровень
2005–2009). Бенчмарк — наивная линейная экстраполяция P2019 = P2009²/P1999.

| Метрика | Модель | Наивная | Гейт | Статус |
|---|---|---|---|---|
| Национальный итог 2019 | −0,41% | −3,99% | ±2% | **пройден** |
| MAPE по 7 территориям | 2,39% | 4,13% | модель ≤ наивная | **пройден** |

Худшие территории модели: Минск (недооценка притока — реальная
центростремительность 2010-х превысила профиль матрицы-2009). Полные
числа — `backtest_results.json`.

## 2. Сверка агрегатов: наш base vs WPP 2024 medium vs WCDE SSP2

Конвенция: «2030/2040/2050/2075» в этой таблице — узлы пятилетней сетки
модели (население на 01.01 следующего года: 2031/2041/2051/2076) против
оценок WPP на середину названного года; экспортированный forecast.json
для года 2075 интерполирует узлы 2071→2076 (5 970 тыс. в base) — поэтому
число «2075» здесь (5 912 = узел 2076) отличается от README пакета.

| Год | base, тыс. | WPP medium | Δ | WCDE SSP2 | Δ |
|---|---|---|---|---|---|
| 2030 | 8 753 | 8 688 | +0,7% | 9 219 | −5,1% |
| 2040 | 8 138 | 8 064 | +0,9% | 8 906 | −8,6% |
| 2050 | 7 529 | 7 454 | **+1,0%** | 8 662 | −13,1% |
| 2075 | 5 912 | 5 716 | +3,4% | 7 990 | −26,0% |

Объяснение расхождений >5% (обязательное по WP-F5):

- **WCDE SSP2**: систематически выше и WPP, и нашего base. Причины: (а) базовый
  2020 год WCDE = 9 661 тыс. — на ~2,5% выше факта (собственная реконструкция
  Wittgenstein Centre без учёта эмиграции 2020+); (б) допущения SSP2 о
  рождаемости вне ОЭСР оптимистичнее медианы WPP (к 2100 SSP3 у WCDE даже
  растёт). Расхождение относится к источнику, а не к нашей модели; сравнение
  с WPP — первичная калибровка (гейт ±3% на 2050 — пройден: +1,0%).
- **+3,4% к WPP на 2075**: накопление методических различий (5-летние группы
  и шаг против однолетних у WPP; наша структура-2026 от Белстата против
  оценённой WPP). В пределах ожидаемого дрейфа на 50-летнем горизонте.

Калибровка сценариев (WP-F4): base-2050 = 7 529 тыс. (+1,0% к медиане, гейт
±3%); optimistic-2050 = 7 954 < high 7 996 (в коридоре, запас 0,5%); negative-2050 =
6 477 < low 6 907 (ниже low осознанно: low WPP варьирует только рождаемость,
негативный сценарий добавляет миграционный шок 2020+, который WPP для
Беларуси не закладывает).

## 3. Чувствительность (base, отклонение итога)

| Вариация | 2050 | 2075 |
|---|---|---|
| СКР ±0,1 | ±1,7% | ±4,9% |
| ОПЖ ±1 год | ±1,4% | ±1,9% |
| Международная миграция ±50% | ∓0,4% | ∓0,7% |

Выводы: на горизонте 2075 доминирует рождаемость (эффект накапливается через
поколения); миграционное допущение base мало влияет на итог (сальдо близко
к нулю), но это НЕ относится к сценарию negative, где миграция — главный
фактор (−35 тыс./год на старте).

## 4. Отступления от буквы TASK_SPEC (зафиксированы явно)

Отступления 1–3 версии этапа 3 **сняты этапом 5** (прогноз v2026.2):

1. ~~Облцентры не входят в MVP-прогноз~~ — пять облцентров получили
   собственные CCMPP (имплицированная возрастная миграция 2009–2019 с
   затуханием), Минск — уровень 1.
2. ~~Панель «Урбанизация» без прогнозного слоя~~ — прогнозные доли
   городского населения, топ-7, Минска и облцентров построены из городских
   траекторий уровня 3.
3. ~~Бэктест только по 7 территориям~~ — добавлены гейты: районы
   (2019→2026, 128 территорий, MAPE 2,12% против 2,76% наивной) и города
   (доля ≤2009→2019, 188 городов, MAPE 6,7% против 10,9%) — см. §6.

Остающиеся отступления:

4. **222 города против ~200 прогнозируемых**: 21 гп без координат в
   Wikidata и с рядами, оборванными до 2019 г. (последние данные
   1939–2012), исключён из прогноза явно; 2 гп с привязкой, но оборванным
   рядом (Костюковка 2016, Руба 2018) — также. Живое городское население
   покрыто полностью (199 городов = 100% городского населения текущего
   ряда).
5. **ML-ансамбль (challenger)** и гравитационная модель районного уровня
   из WP-F2 не реализованы: CCR-модель прошла бэктест-гейт без них;
   кандидаты на этап 8.

## 5. Известные ограничения модели (этап 3)

1. Смертность областей = национальная (областных таблиц дожития в открытом
   доступе нет); областная дифференциация ОПЖ ±1–1,5 года не моделируется.
2. Внутренняя миграция: lifetime-матрица переписи как профиль с
   калиброванным объёмом (60 тыс./год) — не годовые потоки; чувствительность
   покрыта вариацией ±50%.
3. ~~Квантили q10/q90 — относительная ширина 80% PI WPP~~ — снято
   (прогноз v2026.4): построен вероятностный веер (q05…q95) — сеяный
   Монте-Карло из 600 реализаций персистентных отклонений траекторий СКР и
   ОПЖ от медианы WPP через тот же CCMPP (`etl/forecast/probabilistic.py`).
   Амплитуды калиброваны так, что 80% интервал страны совпадает с 80% PI
   WPP-2024 на 2050 (6,7% против 7,1%) и 2075 (16,5% против 16,3%) — т.е. на
   страновом уровне ширина ≈ WPP по построению; новизна — декомпозиция
   (веер проходит на области и возраст) и вероятностные утверждения по
   стране: P(убыль к 2050) = 100% (доля реализаций при детерминированной
   миграции — внутримодельная частота), P(<6 млн к 2075) ≈ 50%. Остаточные
   упрощения — по одному персистентному шоку СКР/ОПЖ на реализацию,
   детерминированная миграция, независимые шоки, и общий на страну шок
   (области делят его → их полосы занижают истинную областную
   неопределённость; P по областям не даются) — LIMITATIONS §4.
4. Стартовый СКР WPP (1,23 в 2026) выше независимых оценок факта (~1,0–1,1);
   сценарий negative стартует с фактических значений.
5. ~~Ряд «official» не корректировался~~ — снято WP-F3 (прогноз v2026.3):
   построен интервал незарегистрированного оттока 2020–2026
   (178–416 тыс., центральная оценка 270 тыс.; `docs/notes/adjustment.md`)
   и второй стартовый ряд «adjusted» с переключателем в UI. Поправка
   распределена до уровня областей; районные/городские прогнозы — только
   в official-ряде.

## 6. Бэктесты уровней 2–3 (этап 5)

Полные таблицы — `docs/notes/backtest_sub.json`.

- **Районы и города обл. подчинения** (128 территорий, переписные
  периметры): CCR обучены на 2009–2019, прогноз итогов на 01.01.2026
  против официальных оценок Белстата; обе модели (CCR и наивная линейная
  экстраполяция 2009→2019) нормированы к фактическому областному итогу
  2026 — гейт изолирует ошибку распределения. MAPE: **2,12%** (CCR)
  против **2,76%** (наивная), медиана 1,65%. Чувствительность к shrinkage
  K∈{500, 1000, 2000}: MAPE 2,09–2,22%.
- **Города уровня 3** (188 городов с данными 1970–2009 и переписью-2019):
  логистический тренд доли, обученный до 2009, прогноз города-2019 =
  доля × фактический район-2019. MAPE: **6,7%** против **10,9%** у
  замороженной доли-2009.
- Ограничение метода: третьей переписи нет, поэтому районный бэктест
  опирается на текущие оценки (2026), а не переписную точку; оценки
  Белстата межпереписного периода сами содержат ошибку регистрации
  миграции. Гейт консервативен: обе модели сравниваются с одним эталоном.
