Moedas

O pacote tem 2 APIs que dão acesso a informações de moedas.

API OData de Moedas

A classe bcb.PTAX retorna cotações de moedas os obtidas a partir da API de Moedas do BCB. Esta implementação é mais estável que a do Conversor de Moedas.

In [1]: from bcb import PTAX

In [2]: ptax = PTAX()

In [3]: ptax.describe()
EntitySets:
  Moedas
FunctionImports:
  CotacaoMoedaPeriodoFechamento
  CotacaoMoedaAberturaOuIntermediario
  CotacaoMoedaDia
  CotacaoMoedaPeriodo
  CotacaoDolarDia
  CotacaoDolarPeriodo
In [4]: ptax.describe('Moedas')

EntitySet (Endpoint): Moedas
EntityType: br.gov.bcb.olinda.servico.PTAX.TipoMoeda
Properties: simbolo<str>, nomeFormatado<str>, tipoMoeda<str>

In [5]: ep = ptax.get_endpoint('Moedas')

In [6]: ep.query().limit(10).collect()
Out[6]: 
  simbolo             nomeFormatado tipoMoeda
0     AUD         Dólar australiano         B
1     CAD           Dólar canadense         A
2     CHF              Franco suíço         A
3     DKK        Coroa dinamarquesa         A
4     EUR                      Euro         B
5     GBP           Libra Esterlina         B
6     JPY                      Iene         A
7     NOK          Coroa norueguesa         A
8     SEK               Coroa sueca         A
9     USD  Dólar dos Estados Unidos         A
In [7]: ptax.describe('CotacaoMoedaDia')

Function: CotacaoMoedaDia
Parameters: moeda <str>, dataCotacao <str>
EntitySet: _CotacaoMoedaDia
EntityType: br.gov.bcb.olinda.servico.PTAX.TipoCotacaoMoeda
Properties: paridadeCompra <float>, paridadeVenda <float>, cotacaoCompra <float>, cotacaoVenda <float>, dataHoraCotacao <str>, tipoBoletim <str>

In [8]: ep = ptax.get_endpoint('CotacaoMoedaDia')

In [9]: (ep.query()
   ...:    .parameters(moeda='AUD', dataCotacao='1/31/2022')
   ...:    .collect())
   ...: 
Out[9]: 
   paridadeCompra  paridadeVenda  ...         dataHoraCotacao      tipoBoletim
0          0.7051         0.7053  ... 2022-01-31 10:11:20.549         Abertura
1          0.7068         0.7070  ... 2022-01-31 11:04:17.576    Intermediário
2          0.7066         0.7068  ... 2022-01-31 12:02:19.723    Intermediário
3          0.7051         0.7052  ... 2022-01-31 13:07:02.500    Intermediário
4          0.7051         0.7052  ... 2022-01-31 13:07:02.511  Fechamento PTAX

[5 rows x 6 columns]

É importante notar que as datas estão no formato mês/dia/ano e os números não são preenchidos com 0 para ter 2 dígitos.

In [10]: ptax.describe('CotacaoMoedaPeriodo')

Function: CotacaoMoedaPeriodo
Parameters: moeda <str>, dataInicial <str>, dataFinalCotacao <str>
EntitySet: _CotacaoMoedaPeriodo
EntityType: br.gov.bcb.olinda.servico.PTAX.TipoCotacaoMoeda
Properties: paridadeCompra <float>, paridadeVenda <float>, cotacaoCompra <float>, cotacaoVenda <float>, dataHoraCotacao <str>, tipoBoletim <str>

In [11]: ep = ptax.get_endpoint('CotacaoMoedaPeriodo')

In [12]: (ep.query()
   ....:    .parameters(moeda='AUD',
   ....:                dataInicial='1/1/2022',
   ....:                dataFinalCotacao='1/5/2022')
   ....:    .collect())
   ....: 
Out[12]: 
    paridadeCompra  paridadeVenda  ...         dataHoraCotacao    tipoBoletim
0           0.7243         0.7244  ... 2022-01-03 10:04:22.186       Abertura
1           0.7221         0.7223  ... 2022-01-03 11:11:42.883  Intermediário
2           0.7197         0.7198  ... 2022-01-03 12:09:19.760  Intermediário
3           0.7186         0.7188  ... 2022-01-03 13:11:50.353  Intermediário
4           0.7186         0.7188  ... 2022-01-03 13:11:50.357     Fechamento
5           0.7188         0.7189  ... 2022-01-04 10:05:22.015       Abertura
6           0.7208         0.7209  ... 2022-01-04 11:05:20.148  Intermediário
7           0.7217         0.7219  ... 2022-01-04 12:10:19.466  Intermediário
8           0.7246         0.7248  ... 2022-01-04 13:08:59.118  Intermediário
9           0.7246         0.7248  ... 2022-01-04 13:08:59.123     Fechamento
10          0.7250         0.7251  ... 2022-01-05 10:06:19.404       Abertura
11          0.7258         0.7259  ... 2022-01-05 11:06:19.009  Intermediário
12          0.7264         0.7266  ... 2022-01-05 12:03:19.428  Intermediário
13          0.7270         0.7271  ... 2022-01-05 13:07:53.088  Intermediário
14          0.7270         0.7271  ... 2022-01-05 13:07:53.094     Fechamento

[15 rows x 6 columns]

Conversor de Moedas

O módulo bcb.currency obtem dados de moedas do conversor de moedas do Banco Central através de webscraping.

In [13]: from bcb import currency

In [14]: df = currency.get(['USD', 'EUR'],
   ....:                   start='2000-01-01',
   ....:                   end='2021-01-01',
   ....:                   side='ask')
   ....: 

In [15]: df.head()
Out[15]: 
                EUR     USD
Date                       
2000-01-03  1.85047  1.8011
2000-01-04  1.89150  1.8337
2000-01-05  1.91582  1.8544
2000-01-06  1.90761  1.8461
2000-01-07  1.88241  1.8281

In [16]: df.plot(figsize=(12, 6));
_images/currency1.png
In [17]: currency.get_currency_list().head()
Out[17]: 
   code               name  ... type  exclusion_date
0     5  AFEGANE AFEGANIST  ...    A             NaT
1   785  RANDE/AFRICA SUL   ...    A             NaT
2   490    LEK ALBANIA REP  ...    A             NaT
3   610  MARCO ALEMAO       ...    A      2002-01-02
4   978               EURO  ...    B             NaT

[5 rows x 7 columns]