Skip to main content

Cliente Python para consultar tipos de cambio del SIE de Banxico

Project description

💱 Banxico SIE

Cliente Python para consultar tipos de cambio del Sistema de Información Económica (SIE) de Banxico.

🚀 Instalación

pip install banxico-sie-xp

O desde el source:

git clone https://github.com/soyrushian/banxico-sie.git
cd banxico-sie
pip install -e .

🔑 Requisitos

Necesitas un token de la API de Banxico. Lo consigues gratis aquí: 👉 https://www.banxico.org.mx/SieAPIRest/service/v1/token

💡 Uso

Setup básico

from banxico_sie import BanxicoSIEClient, Currency

# Inicializa el cliente con tu token
client = BanxicoSIEClient("tu_token_aqui")

Consultar tipo de cambio actual

# USD FIX (por determinación)
usd = client.get_rate(Currency.USD) # Dólar (FIX - Determinación DOF)
print(f"USD: ${usd['valor']} MXN")

# USD Spot (para liquidación)
usd_spot = client.get_rate(Currency.USD_SPOT) # Dólar (Para liquidación)
print(f"USD SPOT: ${usd_spot['valor']} MXN")

# Otras monedas
eur = client.get_rate(Currency.EUR) # Euro
cad = client.get_rate(Currency.CAD) # Dolar canadiense
gbp = client.get_rate(Currency.GBP) # Libra Esterlina

Consultar fecha específica

from datetime import datetime

# Fecha específica como string
rate = client.get_rate(Currency.USD, fecha="2024-12-01")
print(f"USD el 1 dic 2024: ${rate['valor']}")

# Fecha como datetime
rate = client.get_rate(Currency.EUR, fecha=datetime(2024, 11, 15))

Rango de fechas

# Histórico USD FIX
historico = client.get_rates_range(
    Currency.USD,
    start_date="2024-01-01",
    end_date="2024-12-31"
)

# Histórico USD para liquidación
historico_pagos = client.get_rates_range(
    Currency.USD_PAGOS,
    start_date="2024-01-01",
    end_date="2024-12-31"
)

for rate in historico:
    print(f"{rate['fecha']}: ${rate['valor']}")

Obtener el más reciente

# Último USD FIX
latest = client.get_latest(Currency.USD)
print(f"Último USD: ${latest['valor']} ({latest['fecha']})")

# Último USD para liquidación
latest_pagos = client.get_latest(Currency.USD_PAGOS)
print(f"Último USD PAGOS: ${latest_pagos['valor']} ({latest_pagos['fecha']})")

🌍 Monedas disponibles

Currency.USD # 🇺🇸 Dólar (FIX - Determinación DOF)
Currency.USD_SPOT # 🇺🇸 Dólar (Para liquidación)
Currency.CAD # 🇨🇦 Dólar canadiense (Cotización Cruzada)
Currency.EUR # 🇪🇺 Euro (Cotización Cruzada)
Currency.JPY # 🇯🇵 Yen japonés (Cotización Cruzada)
Currency.GBP # 🇬🇧 Libra Esterlina (Cotización Cruzada)

📦 Estructura de respuesta

{
    'fecha': '26/12/2024',
    'moneda': 'USD',
    'moneda_nombre': 'Dólar estadounidense',
    'simbolo': '$',
    'valor': 20.3456,
    'tipo': 'FIX - Determinación publicada en DOF'
}

Para Currency.USD_SPOT:

{
    'fecha': '26/12/2024',
    'moneda': 'USD',
    'moneda_nombre': 'Dólar estadounidense',
    'simbolo': '$',
    'valor': 20.4567,
    'tipo': 'Para liquidación (obligaciones)'
}

📋 Series de Banxico

Currency Serie Símbolo Tipo
Currency.USD SF43718 $ FIX - Determinación publicada en DOF
Currency.USD_SPOT SF60653 $ Para liquidación (obligaciones)
Currency.CAD SF60632 C$ Cotización Cruzada
Currency.EUR SF46410 Cotización Cruzada
Currency.JPY SF46406 ¥ Cotización Cruzada
Currency.GBP SF46407 £ Cotización Cruzada

🔥 Ejemplos prácticos

Comparar USD FIX vs SPOT

usd_fix = client.get_rate(Currency.USD)
usd_spot = client.get_rate(Currency.USD_SPOT)

print(f"USD FIX: ${usd_fix['valor']:.4f}")
print(f"USD SPOT: ${usd_spot['valor']:.4f}")
print(f"Diferencia: ${abs(usd_fix['valor'] - usd_spot['valor']):.4f}")

Histórico con análisis

from datetime import datetime, timedelta

hace_mes = datetime.now() - timedelta(days=30)
historico = client.get_rates_range(
Currency.USD,
start_date=hace_mes,
end_date=datetime.now()
)

valores = [r['valor'] for r in historico if r['valor']]
print(f"Mínimo: ${min(valores):.4f}")
print(f"Máximo: ${max(valores):.4f}")
print(f"Promedio: ${sum(valores)/len(valores):.4f}")

Tabla de todas las monedas

monedas = [
Currency.USD,
Currency.USD_SPOT,
Currency.EUR,
Currency.CAD,
Currency.JPY,
Currency.GBP
]

for moneda in monedas:
rate = client.get_rate(moneda)
print(f"{rate['simbolo']} {rate['moneda']}: ${rate['valor']:.4f} MXN")

📝 Licencia

MIT License - puedes hacer lo que quieras con este código.

🤝 Contribuir

Pull requests son bienvenidos. Para cambios grandes, abre un issue primero para discutir qué te gustaría cambiar.

⚠️ Disclaimer

Este paquete no está afiliado con el Banco de México. Usa los datos bajo tu propio riesgo y verifica la información crítica directamente con fuentes oficiales.

🔗 Links útiles

📮 Contacto

Issues: https://github.com/soyrushian/banxico-sie/issues

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

banxico_sie_xp-0.1.0.tar.gz (13.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

banxico_sie_xp-0.1.0-py3-none-any.whl (8.9 kB view details)

Uploaded Python 3

File details

Details for the file banxico_sie_xp-0.1.0.tar.gz.

File metadata

  • Download URL: banxico_sie_xp-0.1.0.tar.gz
  • Upload date:
  • Size: 13.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.9

File hashes

Hashes for banxico_sie_xp-0.1.0.tar.gz
Algorithm Hash digest
SHA256 9af58354465980d8e335df1e03ca5a99f82aa92fa6e7ca4c93ea91346b2c3ea7
MD5 aebcacc79ec2e26a033e807c04448f61
BLAKE2b-256 78582698d185ac232fb22d7a53a9948d57e637386fa8db42161873e90154c2d9

See more details on using hashes here.

File details

Details for the file banxico_sie_xp-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: banxico_sie_xp-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 8.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.9

File hashes

Hashes for banxico_sie_xp-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f2dcf2011d070b38c7a736d7f8fd76b918c3a5b7eda48dca5fd6740f429d8ef9
MD5 4c5459373a2a24b9a96ab5aba652abdb
BLAKE2b-256 c85d57b87999545aa2fc76f8d2442c664f927a2f0d48817359b5e96dd00974f9

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page