Skip to content

Actualiza la planilla de Excel EPGB, obteniendo market data de Primary usando pyRofex (Python)

Notifications You must be signed in to change notification settings

ChuchoCoder/EPGB_pyRofex

Repository files navigation

EPGB_pyRofex - Datos de Mercado en Tiempo Real

Aplicación Python para obtener datos de mercado en tiempo real y gestionar opciones desde tu planilla de Excel.

Es una aplicación análoga a EPGB_HomeBroker utilizando la librería de pyRofex.

📊 ¿Qué hace esta aplicación?

EPGB_pyRofex te permite:

  • Obtener datos de mercado en tiempo real de opciones usando la API de Primary (Matriz) https://apihub.primary.com.ar
  • Integración directa con Excel para visualizar y analizar los datos
  • Actualización automática de precios, volúmenes y otros datos de mercado
  • Gestión de instrumentos de opciones, acciones, bonos, ONs desde tu planilla de Excel

🚀 Inicio Rápido

Requisitos previos

  • Python 3.9 o superior
  • Microsoft Excel (para la integración con xlwings)
  • Windows (recomendado para la integración con Excel)

Instalación

# Clonar el repositorio
git clone https://github.com/ChuchoCoder/EPGB_pyRofex.git
cd EPGB_pyRofex

# Crear y activar un entorno virtual (Windows)
python -m venv .venv
.venv\Scripts\activate

# Instalar el paquete en modo editable
pip install -e . --force-reinstall

Configuración

  1. Copiá la plantilla y creá el archivo de configuración:
copy .env.example .env
  1. Editá el archivo .env con tus credenciales:
PYROFEX_USER=tu_usuario
PYROFEX_PASSWORD=tu_contraseña
PYROFEX_ACCOUNT=tu_cuenta

# Opcional: Configura el intervalo de actualización de Excel (en segundos, por defecto: 3.0)
EXCEL_UPDATE_INTERVAL=3.0

# Trades Sheet Configuration (opcional)
TRADES_SYNC_ENABLED=true                # Habilitar sincronización de trades (por defecto: true)
TRADES_REALTIME_ENABLED=false           # Habilitar actualizaciones en tiempo real vía WebSocket (por defecto: false)
TRADES_SYNC_INTERVAL_SECONDS=300        # Intervalo de sincronización periódica en segundos (por defecto: 300 = 5 min)
EXCEL_SHEET_TRADES=Trades               # Nombre de la hoja de trades (por defecto: Trades)
TRADES_BATCH_SIZE=500                   # Tamaño de lote para procesamiento masivo (por defecto: 500)

Importante: Nunca compartas ni subas tu archivo .env con credenciales reales.

Configuración de Trades

La aplicación puede sincronizar operaciones ejecutadas (trades) desde el broker a una hoja de Excel dedicada. Hay dos modos de operación:

  • Modo Periódico (por defecto): TRADES_REALTIME_ENABLED=false

    • Sincroniza trades cada TRADES_SYNC_INTERVAL_SECONDS segundos (por defecto: 300s = 5 min)
    • Usa llamadas REST a la API del broker
    • Menor carga en tiempo real, pero mayor latencia
  • Modo Tiempo Real: TRADES_REALTIME_ENABLED=true

    • Sincroniza trades inmediatamente vía WebSocket cuando ocurren
    • Actualización instantánea de operaciones ejecutadas
    • Mayor carga en tiempo de ejecución, pero latencia mínima

Para deshabilitar completamente la sincronización de trades, configurá: TRADES_SYNC_ENABLED=false

  1. (Opcional) Generá módulos de configuración faltantes:
python tools/create_configs.py

Configuración de Instrumentos en Excel

La hoja Tickers del archivo EPGB OC-DI - Python.xlsb define qué instrumentos se van a suscribir. Cada tipo de instrumento tiene una columna fija.

Tipo Columna Rango usado Ejemplo en celda Transformación hacia pyRofex
Opciones A A2:A500 GFGC32781O Se agrega prefijo MERV - XMEV - y sufijo - 24hs (ya incluido si figura en la plantilla)
Acciones C C2:C500 GGAL - 24hs / GGAL - spot Prefijo + sufijo (24hs o spot). Spot se detecta al tener literal spot en el nombre
Bonos E E2:E500 AL30 - 24hs / AL30D - spot Prefijo + sufijo; sufijo - 24hs o - spot según la celda
CEDEARs G G2:G500 AAPL - 24hs Prefijo + sufijo
Letras I I2:I500 S30S5 - 24hs Prefijo + sufijo
ONs K K2:K500 TLC1O - 24hs Prefijo + sufijo
Panel General M M2:M500 HAVA - 24hs Prefijo + sufijo
Futuros O O2:O500 DLR/NOV25 SIN prefijo ni sufijo (detectado por /)

Los símbolos se transforman mediante la función interna transform_symbol_for_pyrofex. Si el símbolo contiene / (caso futuros como DLR/NOV25) no se aplica el prefijo MERV - XMEV - ni el sufijo - 24hs.

Opciones

  • Deben colocarse en la columna A.
  • Formato típico: Código raíz + cadena de vencimiento + O (ej: GFGC32781O).
  • La aplicación genera un DataFrame con columnas: bid, ask, bidsize, asksize, last, change, open, high, low, previous_close, turnover, volume, operations, datetime.

Spot vs 24hs

Para acciones/bonos/etc. se distinguen dos variantes:

  • AL30 - 24hs (24 horas)
  • AL30 - spot (contado inmediato)

Ambas variantes pueden convivir. El sufijo exacto determina la transformación y suscripción.

Futuros

  • Se ingresan en la columna O sin sufijos: DLR/NOV25, DLR/DIC25, DLR/ENE26.
  • La detección de futuro es por el caracter /.
  • No se agrega prefijo ni sufijo para asegurar compatibilidad con la API.

Cauciones (Repos)

No se configuran manualmente en el Excel: se generan automáticamente de 1D a 32D bajo el formato:

MERV - XMEV - PESOS - 1D
...
MERV - XMEV - PESOS - 32D

Se muestran en la tabla derecha de la hoja Prices.

Validación de Instrumentos

Al iniciar, la app:

  1. Lee cada columna y filtra celdas vacías.
  2. Aplica transformación de símbolos.
  3. Consulta el caché de instrumentos de pyRofex.
  4. Remueve los símbolos inválidos (log: ⚠️ Total: X símbolos inválidos removidos).
  5. Muestra resumen por tipo (ej: Opciones: 52/60 válidas).

Ejemplo Visual

Hoja Tickers (configuración de símbolos): Tickers Sheet

Hoja Prices (datos de mercado y cauciones): Prices Sheet

Logs de inicio y validación: Startup Logs Marketdata Logs

Optimización de Actualizaciones de Excel

La aplicación evita escribir en Excel cuando no hay datos nuevos de mercado:

  • Primera iteración: siempre actualiza (📊 Primera actualización de Excel - inicializando).
  • Ciclos siguientes: compara last_market_data_time vs last_excel_update_time.
  • Si no hubo nuevos mensajes: ⏭️ Sin nuevos datos de mercado ... - omitiendo Excel.
  • Cada 10 ciclos: 📊 Optimización Excel - Ciclo N: X actualizaciones, Y omitidas (Z% ahorrado).

Esto reduce la carga cuando el mercado está cerrado o en períodos de baja actividad.

Ejecutar la aplicación

# Ejecutar mediante el comando instalado
epgb-options

# O en forma de módulo (equivalente)
python -m epgb_options.main

🧪 Validación del sistema

Si encuentras algún problema, verificá que tu instalación esté correcta ejecutando:

# Validación completa del sistema (estructura, importaciones, entry points)
python tools/validate_system.py

# Validación del quickstart (dependencias, transformaciones, integración)
python tools/validate_quickstart.py

validate_system.py verifica:

  • ✅ Importaciones y estructura del paquete src.epgb_options
  • ✅ Disponibilidad del comando epgb-options
  • ✅ Presencia de módulos de configuración y archivos necesarios

validate_quickstart.py verifica:

  • ✅ Instalación de dependencias (pyRofex, xlwings, pandas)
  • ✅ Acceso al archivo Excel EPGB OC-DI - Python.xlsb
  • ✅ Configuración del entorno y credenciales
  • ✅ Lógica de transformación de símbolos (18 casos de prueba)
  • ✅ Validación de datos de mercado
  • ✅ Integración de módulos Excel y Market Data
  • ✅ Cache inteligente de instrumentos para mejor rendimiento

📁 Estructura de archivos

Los archivos y recursos principales se encuentran en la raíz del proyecto o en las subcarpetas indicadas:

EPGB_pyRofex/
├── .env.example                ← Plantilla de configuración
├── .env                        ← Tu configuración (creala a partir de la plantilla)
├── "EPGB OC-DI - Python.xlsb"  ← Planilla de Excel
├── src/                        ← Código de la aplicación
└── data/cache/                 ← Caché automático (no tocar)

Importante: Copiá .env.example a .env y completá tus credenciales. El archivo Excel debe estar en la raíz del proyecto.

📋 Solución de problemas

Problemas comunes

  1. Errores de importación
# Reinstalá el paquete
pip install -e . --force-reinstall --no-deps
  1. Problemas de conexión con Excel
  • Asegurate de que Excel esté instalado y accesible
  • Verificá los permisos del archivo Excel
  • Comprobá que xlwings esté correctamente instalado
  1. Errores de autenticación con la API

Síntomas:

❌ AUTHENTICATION FAILED
🔐 PyRofex rejected your credentials
Error details: Authentication fails. Incorrect User or Password

Soluciones sugeridas:

  • Verificá tus credenciales en la plataforma de tu proveedor de pyRofex. Las credenciales pueden expirar o cambiar.
  • Actualizá el archivo .env con tus credenciales:
# Editá el archivo .env en la raíz del proyecto
PYROFEX_USER=tu_usuario
PYROFEX_PASSWORD=tu_contraseña
PYROFEX_ACCOUNT=tu_cuenta
  • Validá la configuración ejecutando:
python tools/validate_system.py
  1. La aplicación no encuentra el archivo .env

Si ves un error como "No se encontró el archivo .env":

  1. Verificá que el archivo .env esté en la raíz del proyecto:
dir .env
  1. Si no existe, copialo desde la plantilla:
copy .env.example .env
  1. Editá el archivo .env con tus credenciales reales.

Obtener ayuda

  1. Ejecutá el validador del sistema:
python tools/validate_system.py
  1. Verificá tu configuración:
  • Revisá que el archivo .env exista en la raíz del proyecto y tenga las credenciales correctas
  • Confirmá que el entorno virtual esté activado
  • Asegurate de que Excel esté cerrado antes de ejecutar la aplicación

🔒 Consideraciones de seguridad

  • Nunca subas tu archivo .env: contiene credenciales sensibles
  • Establecé permisos apropiados en los archivos de configuración
  • Rotá tus credenciales regularmente para mayor seguridad
  • El archivo .env está excluido del control de versiones por defecto

💡 Dependencias principales

Esta aplicación utiliza:

Paquete Propósito
pyRofex Integración con la API de Matba Rofex
xlwings Integración con Microsoft Excel
pandas Manipulación y análisis de datos
python-dotenv Gestión de variables de entorno

👨‍💻 ¿Querés contribuir?

Si sos desarrollador y querés contribuir al proyecto, consultá la guía para desarrolladores en CONTRIBUTING.md.

🆘 Soporte

Para problemas y consultas:

  • Ejecutá python tools/validate_system.py para validar tu configuración
  • Revisá los módulos en src/epgb_options/config/
  • Asegurate de que el archivo .env exista en la raíz del proyecto con las credenciales correctas
  • Confirmá que el entorno virtual esté activado

About

Actualiza la planilla de Excel EPGB, obteniendo market data de Primary usando pyRofex (Python)

Resources

Contributing

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •