Блог им. nilysenok
🏛 Кафедра · СМИ запросили прогноз по промышленности. Я собрал модель
На этой неделе меня попросили дать для СМИ оценку деловой активности в российской промышленности за сентябрь и прогноз на октябрь.
Отвечать «на глаз» не хотелось. Поэтому вместо экспертной оценки я собрал модель машинного обучения, прогнал её на исторических данных и выложил код вместе с данными в открытый доступ.

PMI — индекс деловой активности в промышленности, который рассчитывает S&P Global.
Каждый месяц закупщиков примерно 250 российских предприятий спрашивают, как за последний месяц изменились:
• новые заказы;
• объём выпуска;
• занятость;
• сроки поставок;
• запасы сырья.
Ответы сводятся в одно число.
Выше 50 — промышленность в среднем расширяется. Ниже 50 — сокращается.
Наибольший вес, 30%, имеют новые заказы. И логика здесь понятна: сегодняшние заказы — это в значительной степени завтрашний выпуск.
Главная ценность PMI — не столько абсолютная точность, сколько скорость.
Индекс выходит в первый рабочий день следующего месяца, то есть на несколько недель раньше значительной части официальной статистики.
Поэтому PMI используют как один из ранних индикаторов состояния экономики: аналитики, инвесторы и все, кому нужно понять направление промышленного цикла до выхода данных Росстата.
Сентябрьский PMI будет опубликован 1 октября.
В основе — градиентный бустинг.
Для обучения использованы 176 месяцев данных, начиная с 2012 года.
На вход модели поступают:
• сам PMI за предыдущие месяцы;
• опрос предприятий Банка России;
• курс рубля;
• ключевая ставка.
Главный момент — проверка проводилась без заглядывания в будущее.
Модель 102 раза переобучалась только на той информации, которая была доступна на соответствующий момент времени, после чего её прогноз сравнивался с фактическим значением PMI.
То есть это не история про красивую модель, идеально объясняющую прошлое после того, как мы уже знаем ответы.
Летом PMI держался около нейтральной отметки 50 и доходил до 50,7.
В августе индекс снизился до 48,8.
Оценка модели:
Сентябрь — 48,5
80%-й диапазон: 46,3–50,6
Октябрь — 48,9
80%-й диапазон: 46,2–51,7
Базовая картина получается довольно спокойной:
промышленность продолжает умеренно сокращаться, но модель не показывает признаков резкого провала.
При этом интервалы широкие — и это здесь не недостаток визуализации, а важная часть результата.
Уверенно определить, окажется PMI немного выше или немного ниже 50, модель не может.
Когда собираешь ML-модель для экономических данных, есть соблазн ожидать, что она найдёт какую-нибудь сложную нелинейную закономерность и резко обыграет простые методы.
Здесь этого не произошло.
Модель лишь незначительно точнее простого правила: «в следующем месяце PMI будет примерно таким же, как в текущем».
Наибольшее влияние на прогноз оказывает сам PMI за последние несколько месяцев.
Курс рубля, ключевая ставка и результаты опросов Банка России тоже добавляют информацию, но в большинстве случаев сдвигают итоговую оценку лишь на доли пункта.
Получается довольно содержательный результат:
промышленность инертна.
Если деловая активность уже находится около определённого уровня, лучшим ориентиром для следующего месяца зачастую оказывается её собственная недавняя история.
И машинное обучение здесь скорее подтвердило эту структуру, чем обнаружило скрытый «грааль».
Можно было бы написать:
«Машинное обучение предсказало состояние российской промышленности».
Звучит эффектнее 🙂
Но результат исследования интереснее именно потому, что модель не совершила никакой магии.
Она показала границы того, что вообще можно извлечь из доступных данных.
Для меня это важная мысль и в экономическом моделировании, и в торговле:
точность модели и полезность модели — не одно и то же.
Иногда хороший результат исследования заключается не в том, чтобы получить эффектный прогноз, а в том, чтобы понять, насколько вообще данный процесс прогнозируем.
1 октября появится фактический PMI за сентябрь.
Тогда и посмотрим, насколько близко модель подошла к своим 48,5.
👉 Код, данные и вся процедура проверки открыты:
https://github.com/nilysenok/pmi-russia-ml
1 октября сверю прогноз с фактом и отдельно напишу результат.

