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(), que mostra os endpoints e suas propriedades. Para obter apenas a listagem curta dos nomes, use describe(full=False).

In [1]: from bcb import Expectativas

In [2]: em = Expectativas()

In [3]: em.describe()
EntitySets:

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>

EntitySet (Endpoint): ExpectativaMercadoMensais
EntityType: br.gov.bcb.olinda.servico.Expectativas.ExpectativaMercadoMensal
Properties: Indicador<str>, Data<str>, DataReferencia<str>, Media<float>, Mediana<float>, DesvioPadrao<float>, Minimo<float>, Maximo<float>, numeroRespondentes<int>, baseCalculo<int>

EntitySet (Endpoint): ExpectativasMercadoTop5Inflacao12Meses
EntityType: br.gov.bcb.olinda.servico.Expectativas.ExpectativaMercadoInflacaoH12
Properties: Indicador<str>, Data<str>, Suavizada<str>, Media<float>, Mediana<float>, DesvioPadrao<float>, Minimo<float>, Maximo<float>, numeroRespondentes<int>, tipoCalculo<str>

EntitySet (Endpoint): ExpectativasMercadoInflacao24Meses
EntityType: br.gov.bcb.olinda.servico.Expectativas.ExpectativaMercadoInflacao12Meses
Properties: Indicador<str>, Data<str>, Suavizada<str>, Media<float>, Mediana<float>, DesvioPadrao<float>, Minimo<float>, Maximo<float>, numeroRespondentes<int>, baseCalculo<int>

EntitySet (Endpoint): ExpectativasMercadoSelic
EntityType: br.gov.bcb.olinda.servico.Expectativas.ExpectativaMercadoSelic
Properties: Indicador<str>, Data<str>, Reuniao<str>, Media<float>, Mediana<float>, DesvioPadrao<float>, Minimo<float>, Maximo<float>, numeroRespondentes<int>, baseCalculo<int>

EntitySet (Endpoint): DatasReferencia
EntityType: br.gov.bcb.olinda.servico.Expectativas.DatasReferencia
Properties: Indicador<str>, periodo<str>, DataReferencia1<str>, DataReferencia2<str>

EntitySet (Endpoint): ExpectativasMercadoTop5Selic
EntityType: br.gov.bcb.olinda.servico.Expectativas.ExpectativasMercadoSelicTop5
Properties: indicador<str>, Data<str>, reuniao<str>, tipoCalculo<str>, media<float>, mediana<float>, desvioPadrao<float>, coeficienteVariacao<float>, minimo<float>, maximo<float>

EntitySet (Endpoint): ExpectativasMercadoTop5Mensais
EntityType: br.gov.bcb.olinda.servico.Expectativas.ExpectativasMercadoTop5Mensal
Properties: Indicador<str>, Data<str>, DataReferencia<str>, tipoCalculo<str>, Media<float>, Mediana<float>, DesvioPadrao<float>, Minimo<float>, Maximo<float>

EntitySet (Endpoint): ExpectativasMercadoTrimestrais
EntityType: br.gov.bcb.olinda.servico.Expectativas.ExpectativaMercadoTrimestral
Properties: Indicador<str>, Data<str>, DataReferencia<str>, Media<float>, Mediana<float>, DesvioPadrao<float>, Minimo<float>, Maximo<float>, numeroRespondentes<int>, baseCalculo<int>

EntitySet (Endpoint): ExpectativasMercadoTop5Inflacao24Meses
EntityType: br.gov.bcb.olinda.servico.Expectativas.ExpectativaMercadoInflacaoH24
Properties: Indicador<str>, Data<str>, Suavizada<str>, Media<float>, Mediana<float>, DesvioPadrao<float>, Minimo<float>, Maximo<float>, numeroRespondentes<int>, tipoCalculo<str>

EntitySet (Endpoint): ExpectativaMercadoTop5Trimestral
EntityType: br.gov.bcb.olinda.servico.Expectativas.ExpectativaMercadoTop5Trimestral
Properties: Indicador<str>, Data<str>, DataReferencia<str>, tipoCalculo<str>, Media<float>, Mediana<float>, DesvioPadrao<float>, Minimo<float>, Maximo<float>, numeroRespondentes<int>

EntitySet (Endpoint): ExpectativasMercadoInflacao12Meses
EntityType: br.gov.bcb.olinda.servico.Expectativas.ExpectativaMercadoInflacao12Meses
Properties: Indicador<str>, Data<str>, Suavizada<str>, Media<float>, Mediana<float>, DesvioPadrao<float>, Minimo<float>, Maximo<float>, numeroRespondentes<int>, baseCalculo<int>

EntitySet (Endpoint): ExpectativasMercadoAnuais
EntityType: br.gov.bcb.olinda.servico.Expectativas.ExpectativaMercadoAnual
Properties: Indicador<str>, IndicadorDetalhe<str>, Data<str>, DataReferencia<str>, Media<float>, Mediana<float>, DesvioPadrao<float>, Minimo<float>, Maximo<float>, numeroRespondentes<int>, baseCalculo<int>

O método bcb.Expectativas.describe() também recebe o nome de um endpoint para restringir a saída, apresentando o seu tipo EntityType e as propriedades retornadas Properties com 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    Câmbio 2018-01-18           2020  ...         0.11    3.45    3.70
1    Câmbio 2018-01-18           2019  ...         0.08    3.40    3.59
2    Câmbio 2018-01-18           2021  ...         0.13    3.50    3.80
3    Câmbio 2018-01-18           2018  ...         0.06    3.35    3.50
4    Câmbio 2018-01-18           2022  ...         0.02    3.86    3.90
5    Câmbio 2018-01-18           2020  ...         0.26    3.00    3.67
6    Câmbio 2018-01-18           2019  ...         0.18    3.10    3.59
7    Câmbio 2018-01-18           2021  ...         0.21    3.25    3.76
8    Câmbio 2018-01-18           2018  ...         0.11    3.21    3.50
9    Câmbio 2018-01-18           2022  ...         0.38    3.10    3.86

[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]: from datetime import date

In [9]: (ep.query()
   ...:  .filter(ep.Indicador == 'IPCA', ep.DataReferencia == 2023)
   ...:  .filter(ep.Data >= date(2022, 1, 1))
   ...:  .filter(ep.tipoCalculo == 'C')
   ...:  .select(ep.Data, ep.Media, ep.Mediana)
   ...:  .orderby(ep.Data.desc())
   ...:  .limit(10)
   ...:  .collect())
   ...: 
Out[9]: 
        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