Библиотека Python для доступа к данным ЦБ: cbrapi
Всем привет, я хотел бы рассказать о нашем новом проекте cbrapi, который может здорово помочь всем, кто работает с финансовыми данными Центробанка России.
cbrapi - бесплатная библиотека с открытым исходным кодом на Python, которая превращает сложное взаимодействие с SOAP API ЦБ в простой и понятный инструмент.
Если вы когда-нибудь пытались работать напрямую с API Центробанка, то наверняка сталкивались с неудобностью SOAP-сервисов, XML-разборок и прочими неудобными стандартами.
Наша библиотека берет всю эту сложность на себя, оставляя вам чистый и удобный Python-интерфейс.
Вместо запутанных запросов вроде:
POST /DailyInfoWebServ/DailyInfo.asmx HTTP/1.1
Host: www.cbr.ru
Content-Type: text/xml; charset=utf-8
Content-Length: 356
SOAPAction: "http://web.cbr.ru/DragMetDynamic"
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<DragMetDynamic xmlns="http://web.cbr.ru/">
<fromDate>2024-01-01</fromDate>
<ToDate>2024-12-31</ToDate>
</DragMetDynamic>
</soap:Body>
</soap:Envelope>
Теперь достаточно писать:
import cbrapi
cbrapi.get_metals_prices('2024-01-01', '2024-12-31')
Что такое SOAP API?
Банк России для доступа к данным использует SOAP API. Этот протокол немного устарел (появился в 1998 году). В современных проектах его почти полностью вытеснили REST и современные подходы вроде GraphQL и gRPC. Но в банковской среде SOAP всё еще встречается часто.
В отличие от REST в SOAP используется XML для форматирования данных и присутствуют строгие стандарты, которые делают его достаточно надежным и безопасным для передачи данных.
Установка cbrapi
Установка библиотеки делается просто.
pip install cbrapi
После этого можно импортировать и пользоваться библиотекой.
Курсы валют и цены золота
Импортируем библиотеку:
import cbrapi as cbr
Самая популярная часть базы данных ЦБ - это официальные курсы валют к рублю.
# Ознакомиться со списком доступных валют (более 150 наименований):
cbr.get_currencies_list()
После выбора конкретной валюты можно посмотреть ее историю и построить график.
df = cbr.get_time_series(symbol='USDRUB', first_date='2019-01-01', last_date='2020-12-31', period='M')
df.plot(title='График курса USDRUB')

Данные ЦБ для удобства дополнены нами в праздничные и выходные дни (курс в выходные - это курс предыдущего дня).
Полезными будут и данные по ценам драгметаллов, например, золота.
df = cbr.get_metals_prices(first_date='2020-10-15', last_date='2025-10-15', period='M')
df['GOLD'].plot(title='Цена на золото')

Другие полезные функции cbrapi
Кроме курсов валют в базе данных Цетнального банка есть еще много полезного.
История ключевой ставки:
cbr.get_key_rate('2005-01-01', '2025-10-01', period='M') # можно указать периодичность данных: месяц 'M' или день 'D'
Международные резервы Российской Федерации:
cbr.get_mrrf('2020-10-01', '2025-10-01')
Ставка RUONIA overnight:
cbr.get_ruonia_overnight('2024-10-01', '2025-10-01')
В cbrapi есть и другие виды ставки RUONIA, ставки ROISfix и еще много чего. Полный перечень функций доступен в README.
Где мы используем cbrapi?
Библиотека cbrapi применяется в наших собственных проектах. Поэтому будет активно поддерживаться. Мы используем данные ЦБ в базе данных okama для получения истории официальных курсов валют ЦБ (например EURRUB.CBR), ключевой ставки (RUS_CBR.RATE), ставок RUONIA (RUONIA.RATE) и др. Все эти данные вместе с историей торгов бирж мира, криптовалют, драгметаллов, коммодитиз и недвижимости доступны бесплатно на API okama.
Кроме того cbrapi активно используется в нашем проекте подготовки налоговых деклараций по зарубежным инвестициям (рабочее место налогового консультанта инвестора).
Проблемы с открытыми API
В России формально существует множество открытых финансовых данных, но их использование на практике сопряжено с серьезными трудностями. Большая часть государственных источников предоставляет информацию в устаревших форматах. Например, Росстат по-прежнему распространяет данные в виде Excel-файлов. Крупный проект ЕМИСС, являющийся интегратором статистической информации, не имеет открытого API. Сайт работает медленно и нестабильно. У Минфина тоже нет API.
На этом фоне положительно выделяются проекты Московской биржи и Центрального банка — они развивают открытые API, позволяющие интегрировать данные в финансовые приложения и аналитические сервисы.
Отдельного внимания заслуживает инициатива Ассоциации Финтех Концепция открытых API — попытка создать единый технологический стандарт для финансового сектора. Но этот проект на первых стадиях затрагивает только банковскую среду. Только на поздних этапах планируется сделать единый стандарт и для сектора финансовых данных в учреждениях.
Приглашаем всех желающих поучаствовать в развитии проекта
Вы можете:
- Предлагать новые идеи
- Участвовать в разработке кода
- Сообщать об ошибках
Репозиторий библиотеки находится на GitHub.
Теги:
Похожие материалы:
- Статистика ключевой ставки Китая - LPR через API
- Охота за финансовыми данными. Или как раздобыть историю инфляции в Китае
- Okama: финансовая библиотека для Python и бесплатная база исторических данных
- Okama: финансовая библиотека для Python и бесплатная база исторических данных
- Релиз версии 1.2.0 финансовой библиотеки Okama для Python
- Okama 1.4.0 - Новая версия финансовой библиотеки для Python. Портфели с пополнениями и изъятиями
- Вебинар: Python и библиотека okama для портфельного инвестора
- Okama 1.3.1. Новая версия финансовой библиотеки для Python
- Библиотека инвестора
- Okama 1.5.0 - Новая версия финансовой библиотеки для Python. Продвинутые стратегии ребалансировки портфеля
Комментарии