Градыентны бустынг (чысты Python, без sklearn/scipy/numpy) як challenger кагортнай мадэлі раёнаў CCR/Гамільтана-Пэры — паводле мандату ROADMAP §2 «толькі для праверкі, дзе статыстычныя мадэлі сістэматычна памыляюцца». Мішэнь — знакавая памылка CCR на яго адзіным out-of-sample акне (2019→2026), імпартуецца з рухавіка forecast. Гэта дыягностыка, а не канкуруючы прагноз і не інструмент на 50 гадоў. Прагон дэтэрмінаваны (сеяны Монтэ-Карла) — узнаўленне дае байт-у-байт тыя ж лікі.
Першы рэліз (этап 8). Бустынг прадказвае 33% дысперсіі CCR-астатку па-за выбаркай (OOF R²=0,33; паўторная CV 0,30–0,34; перастановачны нуль p=0,005), з іх +13 п.п. — экзагенны сігнал над структурай. Дамінуе міграцыйнае сальда 2015–2019 (адзіная прыкмета відавочна па-за нуль-паласой): кагортная мадэль структурна не бачыць міграцыйную дынаміку — недаацэньвае прыгарады з прытокам (Смалявіцкі +8,7%), пераацэньвае раёны мінулага буму (Мінскі −9,2%). MAPE (паніжана): CCR 2,19% → CCR+ML 1,67% → наіў 2,84%. Сумленнасць убудавана: LOO-па-абласцях CV, перастановачны нуль, інварыянт «на перамяшанай мішэні сігналу няма». 16 кантрольных метрык.
by-maps-mlchallenger-v1.0.0/
├── README.md · AGENT.md · LIMITATIONS.md · PROVENANCE.md · CHANGELOG.md
├── manifest.json машиночитаемое описание (sha256, допуски)
├── sources/registry.csv провенанс 12 признаков (INF-03/04/05/08 + WP-F1)
├── etl/challenger.py весь расчёт: панель, бустинг, нуль, важности (stdlib)
├── etl/forecast/ движок CCR (мишень = его OOS-ошибка): sub.py +
│ backtest_sub.py + ccmpp/lifetable/data/migration
├── data/curated/ входы: перепись 2009/2019, зарплаты, смертность,
│ чернобыльские классы, оценки 2026
├── web/public/data/ data.json + access/migration/nightlights.json (признаки)
├── params/assumptions.yaml гиперпараметры и допущения с обоснованием
├── code/run.sh единственная точка входа (~5 минут)
├── web/public/data/mlchallenger.json итог лендинга
└── checks/ инварианты (в т.ч. «нет ложного сигнала»), метрикиunzip by-maps-mlchallenger-v1.0.0.zip && cd by-maps-mlchallenger-v1.0.0
bash code/run.sh # только стандартная библиотека Python >= 3.10, ~5 минут
# == 1/3 Панель + CCR-остаток + бустинг + перестановочный нуль ==
# == 2/3 Инварианты == (в т.ч.: на перемешанной мишени OOF R2 падает в нуль-полосу)
# == 3/3 Сверка с заявленными результатами ==
# Все 16 контрольных метрик воспроизведены в допусках.Жывая версія — /be/research/ml; методыка — кнопка «Методыка» на старонцы даследавання.