Dúvidas ou problemas? Participe no GitHub Discussions.

O endpoint CSV do Frankfurter é carregado diretamente em um DataFrame, de modo que obter taxas se resume a uma única linha. A razão para preferi-lo em vez de uma consulta rápida de mercado é a reprodutibilidade: fixe uma autoridade específica e seu notebook se torna auditável; o histórico não sofre revisões silenciosas retroativas, garantindo que um backtest executado hoje apresente os mesmos resultados do que você executou no ano passado.

Início rápido

Aponte o read_csv para o endpoint CSV:

import pandas as pd

df = pd.read_csv("https://api.frankfurter.dev/v2/rates.csv?base=usd&quotes=eur,gbp")

Você obtém um DataFrame date,base,quote,rate com uma linha por cotação.

Converter um valor

O CSV fornece a taxa, não o total convertido. Multiplique o valor pela coluna rate. Para um único valor escalar sem o pandas, consulte o endpoint direto com requests:

import requests

rate = requests.get("https://api.frankfurter.dev/v2/rate/usd/eur").json()["rate"]
total = 100 * rate

Fixar uma fonte oficial

Por padrão, você obtém a taxa combinada de todas as fontes. Adicione providers para fixar uma autoridade específica e manter a rastreabilidade da análise: muitas jurisdições exigem a taxa oficial do próprio banco central ao converter valores em moeda estrangeira.

df = pd.read_csv("https://api.frankfurter.dev/v2/rates.csv?base=usd&quotes=eur&providers=ecb")
ECB
Taxa de referência do Banco Central Europeu, padrão para IVA e alfândega na UE.
NBP
Narodowy Bank Polski. O IVA e imposto corporativo na Polônia são convertidos pela taxa do NBP.
CNB
Fixação do Banco Nacional Tcheco, usada para contabilidade e tributos na República Tcheca.
BCB
PTAX do Banco Central do Brasil, a referência para contratos e tributação no Brasil.
BANXICO
Taxa FIX do Banco de México para liquidação de obrigações em dólares americanos.

Explore todas as fontes. Uma fonte fixada segue seu próprio calendário de publicação, portanto sua cotação mais recente pode ficar um dia atrás da média combinada mais recente.

Séries históricas

Use from para um intervalo de datas e group=month para consolidar em uma linha por mês. Faça o parse da coluna de datas, defina-a como índice e plote ou reamostre. É aqui que o Frankfurter se destaca em um notebook: séries longas e estáveis que não sofrem revisões silenciosas retroativas.

df = pd.read_csv(
    "https://api.frankfurter.dev/v2/rates.csv?from=1949-12-01&base=usd&quotes=gbp&providers=bbk&group=month",
    parse_dates=["date"],
    index_col="date",
)
df["rate"].plot()

Isso puxa a cotação do dólar americano em relação à libra até 1949 do arquivo do Deutsche Bundesbank. Você pode ver a paridade fixa de $2,80 se manter constante por anos antes de se romper em 1967. O histórico profundo vem das fixações de Frankfurt do Bundesbank: o dólar contra o marco desde 1948, e a maioria dos outros cruzamentos do dólar de 1949 a 1970. O Banco Central Europeu assume a partir de 1999, de modo que uma série moderna contínua utiliza a média combinada padrão ou providers=ecb.