Что это
Программа, которая ежедневно собирает открытые макроэкономические данные Казахстана и публикует их на шести страницах: хаб и пять самостоятельных тем, экономика, внешняя торговля, Национальный фонд, бюджет, налоги. Ни одна цифра не набрана вручную. За каждой стоит модуль, который тянет её из первоисточника, и гейт, проверяющий, что значение правдоподобно и не устарело, прежде чем оно попадёт на страницу.
Как устроено
Код открытый, поэтому ниже то, что реально делают модули репозитория, без рекламных формулировок.
-
Свой модуль на каждый первоисточник
World Bank и официальные курсы НБРК тянет etl.py. Товарооборот и структуру торговли по странам и товарным группам собирает trade.py из World Bank и UN Comtrade. Поступления в бюджет по областям разбирает xlsx Комитета госдоходов budget.py. Помесячное исполнение бюджета берёт из отчётов Минфина minfin.py, областной разрез читает статистический бюллетень Минфина oblast.py, валютные активы и доходность фонда собирает national_fund.py. Справочник налоговых ставок tax.py считает из Налогового кодекса и базовых величин МРП и МЗП: готовых чисел он не хранит.
-
Гейт правдоподобия на входе
Каждый новый ряд проверяется до того, как его вообще рассматривают: даты уникальны и идут по порядку, значения конечны, величина укладывается в заданный для этого показателя диапазон. Диапазон здесь это граница здравого смысла: за ней источник обычно сменил единицу измерения или отдал мусор.
-
Источник не ответил, ряд не пропадает
Если источник недоступен или новое значение не проходит гейт, страница не остаётся пустой и не показывает ноль. Берётся последнее опубликованное значение, ему ставится пометка устаревания и записывается причина, почему обновление не прошло.
-
Вывод «что это значит» это правило по порогам
Два снижения базовой ставки НБРК подряд дают вывод «цикл смягчения», инфляция выше цели Нацбанка даёт «закладывайте индексацию». Правила открыты в коде радара и работают детерминированно: для одних и тех же входных данных проверка порогов всегда даёт один и тот же вывод, без участия языковой модели.
-
Гейт качества перед публикацией страницы
Отдельная проверка идёт по каждой из шести страниц: ровно один заголовок h1, canonical на правильный адрес, у хаба ровно пять карточек на темы, в шапке темы ссылки на все соседние. Дальше проверка наполнения: в каждой секции считаются числа, строки таблиц, графики и пункты списков, и результат сверяется с минимумом, снятым со здоровых страниц. Пустой график, таблица без строк данных или нерезолвленное значение вроде «None» останавливают публикацию.
-
Сборка раз в сутки, и гейт это не совет
Задача в GitHub Actions по расписанию, каждый день в 09:00 по Астане, прогоняет все модули заново и запускает проверку. Если проверка падает, шаг workflow останавливается: коммит с новыми данными не создаётся и не пушится, на проде остаётся предыдущая, ещё живая версия страницы.
Шесть страниц работают прямо сейчас
Не демонстрация на выдуманных данных: это те же страницы, которые каждый день видят посетители jbs.finance.
Macro Radar Казахстана
Пять тем одним экраном и памятка, как их читать.
ТемаЭкономика
Базовая ставка, инфляция, официальные курсы валют, деловая активность, Казахстан среди соседей.
ТемаВнешняя торговля
Товарооборот, прямые инвестиции, структура торговли по странам и товарным группам.
ТемаНациональный фонд
Валютные активы фонда и доходность управления ими.
ТемаБюджет
Сколько собирают по факту, исполнение плана помесячно, поступления по регионам.
ТемаНалоги
Справочник ставок НДС, КПН, ИПН, зарплатных налогов и спецрежимов на текущий год.
Что остаётся после прогона
Таблица источников на каждой теме
В разделе «Источники и свежесть» перечислены все ряды, которые видны на странице: источник, дата последнего наблюдения, момент, когда данные забирались, и статус, свежий или устаревший. Расхождение видно сразу на странице, до звонка клиента.
Лента «что изменилось» без ручной редактуры
На странице экономики короткая лента событий строится из самих рядов: снижение ставки, всплеск инфляции, разворот курса. Формирует её сравнение свежего значения с предыдущим, зашитое в код. Руками эту ленту никто не собирает.
Чего он не делает
- Не прогноз. Радар показывает, что уже произошло и где значение стоит относительно порога. Куда показатель пойдёт дальше, решает не код.
- Не инвестиционная и не налоговая рекомендация. Справочник ставок и цифры бюджета дают контекст для решения. Само решение и ответственность за него остаются за тем, кто его принимает.
- Не заменяет экономиста. Пороги в коде фиксируют направление и масштаб движения показателя. Объяснение, почему это случилось и что с этим делать конкретному бизнесу, требует человека, который знает контекст компании.
- Данные настолько свежие, насколько их публикует источник. Комитет госдоходов публикует отчётность с лагом больше года, отчёт Минфина об исполнении бюджета выходит раз в месяц. Задержку даёт источник: сама сборка отрабатывает каждый день исправно.
Порядок цифр
Как мы поймали его на слабости
Областной разрез бюджета когда-то собирался обходом двадцати сайтов управлений финансов: у каждой области свой адрес на gov.kz, своя форма, свой ритм публикации. На деле набиралось тринадцать регионов из двадцати, а периоды у них расходились на годы, общий порядок из таких цифр не строился. Слабость поймали при сравнении со статистическим бюллетенем Минфина, где те же данные публикуются централизованно: один файл в месяц, один период на все области, план и факт рядом. Модуль, обходивший сайты по одному, заменили разбором этого бюллетеня.
Вторую слабость поймали уже в самой публикации, дело было не в данных. Разметка страницы бывает целой при пустом содержимом: вырезанный main, секция без единого числа, график без единой точки. Такие сборки уезжали на прод с кодом завершения ноль, потому что структурная проверка видела на месте все теги и не смотрела внутрь них. После этого рядом со структурными проверками появились проверки наполнения: минимум чисел, строк и графиков на каждую секцию, снятый со здоровых страниц с запасом вниз, и отдельная проверка на нерезолвленные значения вроде «None» или «nan» в видимом тексте.
Почему мы это собрали
Мне надоело объяснять клиентам ставку и инфляцию по данным недельной давности, потому что открытые источники разбросаны по десяткам сайтов и PDF, а собирать эту подборку руками каждое утро не станет никто. Радар не придумывает выводы. Он каждый день честно забирает то, что и так лежит в открытом доступе, и подписывает источник и дату под каждой цифрой.
Багдат Жаксыгелдин, основатель JB Solutions. О себе
Разобраться с ИИ самому
Такой инструмент собирается из готовых кубиков. Что это за кубики, разбирается в открытых курсах.
Три способа получить радар
Цену обсуждаем индивидуально: масштаб настройки и состав источников у каждого свои.
- Поднять самому бесплатно
- Код открытый, лицензия MIT. github.com/jbs-finance/macroradar →
- Настройка под вашу инфраструктуру
- JB Solutions поднимает и настраивает готовый радар под ваши источники и серверы. Обсудить задачу →
- Радар под свой рынок или свои данные
- Тот же движок на других источниках: отраслевой радар или радар по данным компании, продажи против рынка, цены поставщиков против инфляции, план против факта. Обсудить задачу →