O ideal é que todo o processo da análise de dados econômicos e financeiros deve ser facilitado em todas as etapas, principalmente as iniciais, que constam como a coleta e tratamento de dados. Por sorte, existem pacotes e funções prontas que facilitam todo esse processo para os usuários, como é o caso do python-bcb, que nos ajuda a coletar dados do Banco Central. Neste post de hoje, mostramos como é fácil retirar esses dados.
O python-bcb é uma interface em Python estruturada para obter informações da API de dados abertos do Banco Central do Brasil. Criado por Wilson Freitas, professor dos cursos de Renda Fixa usando o R e Construindo um Banco de Dados Financeiro Automatizado com R aqui da Análise Macro.
A interface oferece diversas APIs que permitem acessar os dados de vários bancos de dados do BACEN. Sendo eles:
- Sistema Gerenciador de Séries Temporais (SGS);
- Conversor de moedas;
- Expectativas divulgadas pelo boletim FOCUS;
- Integração com o OData, fornecendo dados de Expectativas, Moedas, Taxas de Juros, IFdata e Mercado Imobiliário.
Sistema Gerenciador de Séries Temporais
O SGS consolida e divulga diversas séries econômico-financeiros mantidas pelo Banco Central e também por outras instituições. É nesse gerenciador que podemos encontrar as séries de diversos temas: Atividade Econômica, Preços, Mercado de Trabalho, Setor Externo, Finanças Públicas, Juros e etc.
São ofertadas as séries em diferentes periodicidades e formatos, portanto, somando todos os fatores, se torna um sistema ideal para coletar séries, ainda mais quando o próprio BCB oferece APIs que facilitam a extração.
Para buscar uma série do SGS com o python-bcb, seguiremos os seguintes passos:
- Importar a API sgs do python-bcb no Python;
- Buscar o código da série no site https://www3.bcb.gov.br/sgspub/localizarseries/localizarSeries.do?method=prepararTelaLocalizarSeries;
- Utilizar a função sgs.get(), especificando o código e o período de interesse.
Como exemplo, utilizamos a série da Taxa de juros - Meta Selic definida pelo Copom %a.a, identificada pelo código 432 no SGS. Vemos abaixo como é possível utilizar a função sgs.get().
Caso haja a necessidade em importar mais de uma série, também é possível. Abaixo, importamos as séries do IPCA Mensal em Var. % mensal e do IGP-M Var. % mensal.
Conversor de Moedas
O Conversor de Moedas realiza o Web Scrapping do sistema de mesmo nome do Banco Central. Permite que seja importado as cotações diárias de diversas moedas diante do real. Para saber as moedas que são possíveis de importar, e consequentemente seus respectivos símbolos, utiliza-se a função currency.get_currency_list().
A função retorna um data frame contendo as colunas com cada uma contendo os códigos numéricos da moeda, o nome completo da moeda, o símbolo de cada moeda, e o código do país, o nome do país, o tipo e a data de exclusão.
Após escolhido as moedas de interesse com base na lista do conversor, utiliza-se a função currency.get() para obter as moedas diante do real com base no seus respectivos símbolos e período.
Expectativas FOCUS
O python-bcb oferece a API Expectativas como forma de obter os dados divulgados pelo boletim FOCUS. Essa integração permite obter as expectativas de mercado de cerca de 130 instituições do mercado financeiros que participam do Sistema de Expectativa de Mercado. Para obter os dados, primeiro devemos instanciar com a classe bcb.Expectativas e obter as informações dos endpoints com o método bcb.Expectativas.describe()
Veja que é retornado os EntitySets, que são os endpoints do qual podemos importar os dados das Expectativas de Mercado, como exemplos, iremos buscar as Expectativas de Mercado Anuais.
É retornado todas as informações do endpoint escolhido, com suas respectivas colunas. Isto é útil devido ao fato de caso haja a necessidade de importações do dados já filtrados, desta forma, é possível saber quais colunas poderemos realizar os filtros.
Com todas as informações sobre o endpoint em mãos, iremos de fato importa-las com o python-bcb, utilizando a função expec.get_endpoint(), especificando o endpoint de interesse. Assim que conectamos com o endpoint, realizamos o query com o método query(). No exemplo abaixo, realizamos esses dois procedimentos em conjunto com uma filtragem para o indicador da Selic.
OData
O OData do Banco Central permite acesso a mais dados do sistema, incluindo o API do Expectativas (bcb.Expectativas), também é possível retirar dados da PTAX (bcb.PTAX), que permite acesso a cotações de taxas de câmbio, Taxa de Juros dos bancos (bcb.TaxaJuros), dados de Instituições Financeiras (bcb.IFDATA) e dados do Mercado Imobiliário (bcb.MercadoImobiliario).
O processo de retirada de dados do OData segue o mesmo que realizamos com o bcb.Expectativas acima, sendo possível realizar com as outras APIs. Primeiro colhemos as informações da API e seus respectivos endpoints com describe(), e após, colhemos as informações de interesse com get_endpoint() e query(). Vemos um exemplo abaixo com a API TaxadeJuros.
A
No exemplo acima retiramos os dados das taxas de juros de diversas instituições bancárias do Brasil. Veja que limitamos o query para apenas 10 observações, apenas como exemplo para que não haja demoras na importação.
Quer saber mais sobre Python?
Veja nossos cursos de Python aplicado para as áreas de Análise de dados e Economia. R e Python para Economistas, Estatística usando R e Python e Econometria usando R e Python.