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