Proyecto
Stock Signals Tracker
Sistema serverless que detecta señales de compra y venta en acciones de la Bolsa Mexicana de Valores.
Ver en GitHub →Objetivo
Sistema serverless en AWS que rastrea precios diarios de acciones en la Bolsa Mexicana de Valores (BMV) y el Sistema Internacional de Cotizaciones (SIC). Aplica indicadores de análisis técnico — Bandas de Bollinger y RSI — para detectar automáticamente señales de compra y venta. El sistema no ejecuta órdenes: observa, calcula y registra para apoyar decisiones informadas.
Cómo funciona
- Captura diaria de preciosDe lunes a viernes a las 16:30 CDMX, Windows Task Scheduler ejecuta un script Python local que descarga precios OHLCV desde Yahoo Finance (yfinance). La ejecución local es necesaria porque Yahoo Finance bloquea las IPs de AWS Lambda.
- Tipo de cambio USD/MXNEl mismo script consulta la API Frankfurter (ECB) para obtener el tipo de cambio del día y calcula el precio en pesos de las acciones cotizadas en dólares.
- Persistencia en DynamoDB y S3Los precios y el tipo de cambio se almacenan en DynamoDB y en archivos Parquet particionados por mercado y fecha en S3.
- Análisis reactivo vía StreamsCada escritura en la tabla de precios activa un DynamoDB Stream que invoca automáticamente la Lambda analyze-signals.
- Cálculo de indicadores técnicosLa Lambda consulta los últimos 90 días de historial, calcula Bandas de Bollinger (20 días) y RSI (14 períodos) con pandas, y clasifica cada ticker como BUY, SELL o HOLD.
- Almacenamiento de señalesLas señales se persisten en DynamoDB y S3, disponibles para consulta SQL vía Amazon Athena con catálogo Glue.
Automatización diaria
La captura de precios se ejecuta a las 16:30 CDMX (lunes–viernes) desde Windows Task Scheduler. El análisis de señales es completamente reactivo mediante DynamoDB Streams — sin polling ni scheduler adicional en AWS. Si el equipo estaba apagado a las 16:30, la tarea se ejecuta en cuanto se reconecta a la red.
Servicios AWS
- DynamoDB3 tablas on-demand con Streams (precios, señales, tipos de cambio)
- Lambda3 funciones (fetch, analyze, backfill) + 1 layer Python con pandas y pyarrow
- S3Almacenamiento Parquet particionado por mercado y fecha
- AWS GlueCatálogo de datos para Athena
- Amazon AthenaConsultas SQL sobre los datos históricos en S3
- SSM Parameter StoreConfiguración de tickers e indicadores técnicos
- EventBridgeRegla cron deshabilitada; la captura usa Task Scheduler local
- CloudWatch LogsMonitoreo de ejecuciones Lambda
- IAMPolíticas de mínimo privilegio por función
- CloudFormation / CDK4 stacks de infraestructura como código en TypeScript
Servicios externos
- Frankfurter (ECB)Tipo de cambio USD/MXN diario. Gratuito, sin API key requerida.
- Yahoo Finance (yfinance)Precios históricos OHLCV. Gratuito, ejecutado desde IP residencial para evitar el bloqueo que aplica sobre rangos de AWS.
Stack