pandas
El endpoint CSV de Frankfurter se carga directamente en un DataFrame, así que traer tipos es una sola línea. El motivo para usarlo en lugar de consultar rápido un tipo de mercado es la reproducibilidad: fija un solo proveedor y su histórico se queda tal como se publicó, así que un backtest que ejecutes hoy coincidirá con el del año pasado.
Inicio rápido
Pásale a read_csv el endpoint CSV:
import pandas as pd
df = pd.read_csv("https://api.frankfurter.dev/v2/rates.csv?base=usd"es=eur,gbp")Obtienes un DataFrame date,base,quote,rate con una fila por divisa.
Convertir un importe
El CSV te da el tipo, no el total convertido. Multiplica tu importe por la columna rate. Para un único valor sin pandas, llama con requests al endpoint de un solo tipo, que devuelve un objeto plano:
import requests
rate = requests.get("https://api.frankfurter.dev/v2/rate/usd/eur").json()["rate"]
total = 100 * rateFijar una fuente oficial
Por defecto obtienes el tipo combinado de todas las fuentes. Añade providers para fijar una sola institución, lo que mantiene el análisis auditable: muchas jurisdicciones exigen el tipo publicado por su propio banco central para convertir importes en moneda extranjera.
df = pd.read_csv("https://api.frankfurter.dev/v2/rates.csv?base=usd"es=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. En Polonia, el IVA y el impuesto sobre sociedades se convierten al tipo del NBP.
CNB- Fixing del Banco Nacional Checo, usado en la contabilidad y los impuestos checos.
BCB- PTAX del Banco Central do Brasil, la referencia para contratos e impuestos en Brasil.
BANXICO- Tipo FIX del Banco de México para liquidar obligaciones en dólares estadounidenses.
Consulta todas las fuentes. Una fuente fijada sigue su propio calendario de publicación, así que su último tipo puede ir un día por detrás del último tipo combinado.
Series históricas
Usa from para un rango de fechas y group=month para tener una fila por mes. Parsea la columna de fechas, úsala como índice y luego grafica o remuestrea. El histórico combinado puede moverse un poco cuando llegan datos nuevos, así que fija un proveedor para todo lo que necesites reproducir.
df = pd.read_csv(
"https://api.frankfurter.dev/v2/rates.csv?from=1949-12-01&base=usd"es=gbp&providers=bbk&group=month",
parse_dates=["date"],
index_col="date",
)
df["rate"].plot() Esto trae el dólar estadounidense frente a la libra desde 1949, del archivo del Deutsche Bundesbank. Verás cómo la paridad de 2,80 dólares por libra se mantiene fija durante años y se rompe en 1967. El histórico más antiguo sale de los fixings de Fráncfort del Bundesbank: el dólar frente al marco desde 1948 y la mayoría de los demás cruces con el dólar de 1949 a 1970. A partir de 1999 toma el relevo el Banco Central Europeo, así que para una serie moderna continua usa el tipo combinado por defecto o providers=ecb.