Moedas¶
O pacote tem 2 APIs que dão acesso a informações de moedas.
API OData de Moedas com cotações de taxas de câmbio
Webscraping no Conversor 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));
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]