¿Preguntas o problemas? Escribe en las GitHub Discussions.

El endpoint CSV de Frankfurter se carga directamente en un DataFrame, por lo que consultar tipos se reduce a una sola línea. La razón para preferirlo frente a una consulta rápida de mercado es la reproducibilidad: fija una autoridad específica y tu notebook será auditable; el historial no cambia silenciosamente, de modo que un backtest ejecutado hoy coincidirá con el que hiciste el año pasado.

Inicio rápido

Apunta read_csv al endpoint CSV:

import pandas as pd

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

Obtienes un DataFrame date,base,quote,rate con una fila por cotización.

Convertir un importe

El CSV proporciona el tipo de cambio, no un total convertido. Multiplica tu importe por la columna rate. Para un único valor escalar sin pandas, consulta el endpoint plano con requests:

import requests

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

Fijar una fuente oficial

Por defecto obtienes la combinación de todas las fuentes. Añade providers para fijar una entidad concreta y mantener la trazabilidad del análisis: muchas jurisdicciones exigen el tipo oficial de su propio banco central al convertir importes en moneda extranjera.

df = pd.read_csv("https://api.frankfurter.dev/v2/rates.csv?base=usd&quotes=eur&providers=ecb")
ECB
Tipo de referencia del Banco Central Europeo, el estándar para IVA y aduanas en la UE.
NBP
Narodowy Bank Polski. El IVA y el impuesto de sociedades en Polonia se convierten al tipo del NBP.
CNB
Fijación del Banco Nacional Checo, utilizada para contabilidad e impuestos en Chequia.
BCB
PTAX del Banco Central do Brasil, referencia para contratos e impuestos en Brasil.
BANXICO
Tipo FIX de Banco de México para saldar compromisos en dólares estadounidenses.

Explora todas las fuentes. Una fuente fijada sigue su propio calendario de publicación, por lo que su último tipo puede ir un día por detrás del tipo combinado más reciente.

Series históricas

Usa from para un rango de fechas y group=month para obtener una fila por mes. Parsea la columna de fechas, establécela como índice y grafica o remuestrea. Aquí es donde Frankfurter destaca en un notebook: series largas y estables que no se modifican de forma retroactiva.

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()

Eso recupera el dólar estadounidense frente a la libra hasta 1949 del archivo del Deutsche Bundesbank. Puedes observar cómo la paridad de 2,80 $ se mantuvo estable durante años y se rompió en 1967. La historia profunda procede de las fijaciones de Fráncfort del Bundesbank: el dólar frente al marco desde 1948, y la mayoría de los demás cruces del dólar de 1949 a 1970. El Banco Central Europeo toma el relevo desde 1999, por lo que una serie moderna continua utiliza la combinación por defecto o providers=ecb.