Охота за финансовыми данными. Или как раздобыть историю инфляции в Китае

22 августа 2022

Давно уже хотел получить доступ к историческим данным по инфляции в Китае. Они много где есть, но, как правило, это либо платные данные, либо с сильным запозданием (база данных Всемирного банка), либо с небольшой глубиной истории.

Пришлось засучить рукава и начать гуглить … кто там занимается статистикой в КНР.

В свое время я думал, что официальный API нашего Центрального банка (на старинном SOAP) сложен и непонятен. Но я тогда еще не сталкивался с Бюро статистики Китая (National Bureau of Statistics of China - NBSC) …
У нашего ЦБ преимуществ, как минимум 2:

  • Официальный API есть (как бы неудобен он ни был)
  • По нему имеется документация (на английском языке тоже)

Бюро статистики Китая имеет англоязычную часть сайта … но даже через браузер получить нужные данные непросто. Открытого API нет в принципе. Понять, как работает API на бэкэнде NBSC, с ходу просто невозможно.

Сайт Бюро статистики Китая (NSBC)

Почти детективная история

Скажу стразу, что если бы знал, с чем придется столкнуться, то вряд ли стал этим заниматься … Но меня вдохновила библиотека на GitHub Paul Natsuo Kishimoto. Эта библиотека хоть и не позволяет получить данные по CPI Китая, но содержит указания о том, как формируются запросы. Это было хорошим стартом …

Но дальше возникла существенная проблема. Как получить коды запросов? Никакой документации на этот счет нет. Пришлось учиться читать китайские IT форумы.

 Форум китайских разработчиков

Оказывается, автоматический перевод страниц в Хроме справляется с китайскими иероглифами на 4+. Читать вполне можно. Таким образом стало понятно, где искать коды. Они отыскались прямо в JSON выдаче.

Коды данных Бюро статистики Китая NBSC

Это уже почти победа. Осталось немного переписать код на Python так, чтобы можно было формировать запросы на месячные данные. Если вы думаете, что синтаксис API простой для такого, казалось бы, элементарного запроса, то предлагаю взглянуть на один из URL:

http://data.stats.gov.cn/english/easyquery.htm?m=QueryData&dbcode=hgyd&rowcode=zb&colcode=sj&wds=[{"wdcode":"zb","valuecode":"A01030101"}] &dfwds=[{"wdcode":"sj","valuecode":"1995-2014"}]&k1=1472740901192

Полировка данных

Итак, месячные данные получены вплоть до 2001 года. Но, спрашивается, почему глубина данных - 2001? Месячные данные за предыдущие периоды отсутствуют. За то есть статистика по скользящей 12-месячной инфляции. На первый взгляд кажется, что месячные данные потеряны, если имея только годовая инфляции. Но давайте взглянем поближе, на то, что происходит.

Данные инфляции Китая в EXCEL

Последние данные по месячной инфляции – от января 2001 года. Как получить инфляцию в декабре 2000 года?

Информации вполне достаточно.

$$ I_{11-2001} = (x_{12-2000} + 1)\times(x_{1-2001} + 1)\times(x_{2-2001} + 1)\dots\times(x_{11-2001} + 1) - 1 $$

I - 12-месячная инфляция в ноябре 2001 года
x - значения инфляции за один месяц

Нам известны месячные данные с января по ноябрь 2001. Годовая инфляция за ноябрь 2001 тоже известна.

$$ x_{12-2000} = \frac{I_{11-2001}+1}{\left(x_{1-2001}+1\right)\dots(x_{11-2001}+1)} - 1 $$

Количество доступных данных месячной инфляции пополнилось декабрем 2000 года. Остается только повторить расчет для ноября и последующих месяцев вплоть до 1987 года. На самом деле можно «выжать» еще несколько месяцев до февраля 1986 года, так как эта информация «зашита» в годовых цифрах.

Для любопытных: реализация расчетов месячных данных из годовых на Python.

Сложности после загрузки официальных данных NSBC

Последняя неприятность ждала меня, когда все данные уже были скачены, а инфляция добавлена в перечень доступных данных API okama… Начал изучать прекрасные графики, и вдруг такое …

Ошибка в данных Бюро статистики Китая

Выше график 12-месячной инфляции в Китае. Красота снова не получилась …

Снова приходится разбираться. Оказывает в официальных данных в июле 2007 стоимость потребительской корзины (CPI) равна нулю. Дефляция -100% … нашему бы ЦБ такие результаты.

И снова для восстановления реалистичных данных помогает уже проверенная формула расчета месячной инфляции через годовую. На этот раз потребовался всего один месяц – июль 2007.

После этого красота все-таки получилась. Можно пользоваться.

График инфляции Китая (CPI)

Данные через «человеческий» API и новая библиотека nbsc

Теперь актуальную историю месячной инфляции получить просто через API okama при помощи просто запроса:

http://api.okama.io:5000/api/ts/macro/CNY.INFL?first_date=2019-01-01&last_date=2020-01-01

На всякий случай всего в базе данных теперь инфляции 6 стран:

Страна

Код

Россия

RUB.INFL

Китай

CNY.INFL

США

USD.INFL

ЕС

EUR.INFL

Великобритания

GBP.INFL

Израиль

ILS.INFL

Количество стран с данными по инфляции будет увеличиваться (не обещаю, что быстро). Их список тоже можно актуализировать через запрос API:

http://api.okama.io:5000/api/namespaces/INFL

Новый репо на GitHub - nbsc

Исходный код Python для получения и преобразования данных (после форка репо Paul Natsuo Kishimoto)  теперь доступен через репозитарий nbsc:

https://github.com/mbk-dev/nbsc

В описании репозитария есть все известные мне коды финансовых данных для формирования запросов NBSC:

GitHub репозитарий для доступа к данным NBSC (Китай)

Репозитарий теперь используется в коде API okama.

Анализ данных инфляции через библиотеку okama на Python

Получить данные по инфляции Китая можно через API, но анализировать их можно через встроенные методы библиотеки okama.

После `import okama as ok`:

ok.cumulative_inflation

Временной ряд накопленной инфляции за выбранный период истории

ok.annual_inflation_ts

Временой ряд инфляции за календарные годы

ok. values_monthly

Временной ряд месячных значений инфляции

ok. rolling_inflation

Временной ряд скользящей 12-месячной инфляции

ok. purchasing_power_1000

Покупательная способность 1000 денежных единиц за выбранный промежуток времени

ok.describe()

Сводная статистика по инфляции за несколько выбранных промежутков в одной таблице

Полная документация по методам класса Inflation.

Дальнейшие цели для охоты на данные

На очереди Индия … очень хочется верить, что со статистикой Индии все будет проще чем в Китае.

 

Похожие материалы:

Комментарии

    Оставьте комментарий