Expectativas¶
A API de expectativas divulgadas no boletim FOCUS pode ser acessada através da classe
bcb.Expectativas
.
Os dados são obtidos a partir da API de Expectativas.
Integração com API de expectativas de mercado de cerca de 130 instituições do mercado financeiro participantes do Sistema de Expectativas de Mercado para diversas variáveis macroeconômicas.
Os dados são publicados no primeiro dia útil de cada semana.
Para períodos para os quais não haja estatísticas serão omitidos na consulta.
São publicadas as expectativas informadas pelas instituições que autorizaram a divulgação. As expectativas divulgadas possuem defasagem de 1 ano.
Ao instanciar a classe bcb.Expectativas
diversas informações
são obtidas e a melhor maneira de interagir com a API é
através do método bcb.Expectativas.describe()
.
In [1]: from bcb import Expectativas
In [2]: em = Expectativas()
In [3]: em.describe()
EntitySets:
ExpectativasMercadoTop5Anuais
ExpectativaMercadoMensais
ExpectativasMercadoInflacao24Meses
ExpectativasMercadoInflacao12Meses
ExpectativasMercadoSelic
ExpectativasMercadoTop5Selic
ExpectativasMercadoTop5Mensais
ExpectativasMercadoTrimestrais
ExpectativasMercadoAnuais
O método bcb.Expectativas.describe()
também recebe o nomes dos
endpoints e apresenta uma descrição do endpoint trazendo o seu tipo
EntityType e as propriedades retornadas Properties e os seus respectivos
tipos.
In [4]: em.describe('ExpectativasMercadoTop5Anuais')
EntitySet (Endpoint): ExpectativasMercadoTop5Anuais
EntityType: br.gov.bcb.olinda.servico.Expectativas.ExpectativasMercadoTop5Anual
Properties: Indicador<str>, Data<str>, DataReferencia<str>, tipoCalculo<str>, Media<float>, Mediana<float>, DesvioPadrao<float>, Minimo<float>, Maximo<float>
Esse endpoint retorna as colunas:
Indicador
Data
DataReferencia
tipoCalculo
Media
Mediana
DesvioPadrao
Minimo
Maximo
Para obter os dados de um endpoint é necessário obtê-lo através do
método bcb.Expectativas.get_endpoint()
que retorna uma classe
bcb.Endpoint
.
In [5]: ep = em.get_endpoint('ExpectativasMercadoTop5Anuais')
A partir desse endpoint executar uma consulta com o método bcb.Endpoint.query()
.
In [6]: ep.query().limit(10).collect()
Out[6]:
Indicador Data DataReferencia ... DesvioPadrao Minimo Maximo
0 PIB Total 2023-03-31 2023 ... 0.3553 0.9700 2.00
1 PIB Total 2023-03-31 2024 ... 0.4276 0.4585 1.45
2 PIB Total 2023-03-31 2025 ... 0.1546 1.4500 1.80
3 PIB Total 2023-03-31 2026 ... 0.1546 1.4500 1.80
4 PIB Total 2023-03-31 2027 ... 0.1546 1.4500 1.80
5 PIB Total 2023-04-03 2023 ... 0.3553 0.9700 2.00
6 PIB Total 2023-04-03 2024 ... 0.4276 0.4585 1.45
7 PIB Total 2023-04-03 2025 ... 0.1546 1.4500 1.80
8 PIB Total 2023-04-03 2026 ... 0.1546 1.4500 1.80
9 PIB Total 2023-04-03 2027 ... 0.1546 1.4500 1.80
[10 rows x 9 columns]
O método bcb.Endpoint.query()
retorna um objeto da classe
bcb.odata.ODataQuery
que possui diversas características
para a realização de consultas mais elaboradas.
Note que no exemplo acima foi utilizado o método limit
que limita
a quantidade de resultados retornados, neste caso, em 10.
É possível realizar consultas mais elaboradas, por exemplo, filtrando pelo indicador para que traga apenas informações do IPCA.
In [7]: ep.query().filter(ep.Indicador == 'IPCA').limit(10).collect()
Out[7]:
Indicador Data DataReferencia ... DesvioPadrao Minimo Maximo
0 IPCA 2018-01-18 2019 ... 0.13 4.00 4.25
1 IPCA 2018-01-18 2020 ... 0.00 4.00 4.00
2 IPCA 2018-01-18 2021 ... 0.11 3.75 4.00
3 IPCA 2018-01-18 2018 ... 0.26 3.27 3.95
4 IPCA 2018-01-19 2019 ... 0.25 3.70 4.30
5 IPCA 2018-01-19 2020 ... 0.23 3.70 4.35
6 IPCA 2018-01-19 2021 ... 0.25 3.70 4.40
7 IPCA 2018-01-19 2018 ... 0.20 3.58 4.15
8 IPCA 2018-01-19 2022 ... 0.22 3.70 4.25
9 IPCA 2018-01-19 2019 ... 0.14 3.90 4.25
[10 rows x 9 columns]
As consultas podem ficar ainda mais elaboradas, com diversos filtros, ordenando colunas e selecionando as colunas na saída.
In [8]: (ep.query()
...: .filter(ep.Indicador == 'IPCA', ep.DataReferencia == 2023)
...: .filter(ep.Data >= '2022-01-01')
...: .filter(ep.tipoCalculo == 'C')
...: .select(ep.Data, ep.Media, ep.Mediana)
...: .orderby(ep.Data.desc())
...: .limit(10)
...: .collect())
...:
Out[8]:
Data Media Mediana
0 2024-01-10 4.4984 4.4547
1 2024-01-09 4.4984 4.4547
2 2024-01-08 4.4984 4.4547
3 2024-01-05 4.4984 4.4547
4 2024-01-04 4.4599 4.4131
5 2024-01-03 4.4599 4.4131
6 2024-01-02 4.4329 4.4131
7 2023-12-29 4.4329 4.4131
8 2023-12-28 4.4329 4.4131
9 2023-12-27 4.4329 4.4131