FinTrend es una plataforma basada en arquitectura de microservicios diseñada para la gestión de portafolios, análisis de mercado, historial de precios y orquestación de señales de inversión (trading insights) utilizando Inteligencia Artificial (LLMs). El proyecto utiliza un enfoque políglota, combinando diferentes lenguajes de programación y bases de datos especializadas para cada dominio.
| Microservicio | Descripción | Repositorio |
|---|---|---|
| MS1 - Gestión de Portafolio | Gestión de perfiles y portafolios de inversión | MS1 |
| MS2 - Historial de Precios | Datos históricos de precios de activos financieros | MS2 |
| MS3 - Feed de Noticias | Consumo y almacenamiento de noticias del mercado | MS3 |
| MS4 - Orquestador de Señales | Generación de señales e insights con IA (LLMs) | MS4 |
| MS5 - Analítica de Mercado | Análisis de datos a gran escala con AWS Athena | MS5 |
| Ingesta de Datos | Scripts y automatización para la ingesta de datos a S3 | Ingesta |
| Frontend | Aplicación web interactiva y dashboards consolidando los servicios | Frontend |
fintrendDemo.mp4
El proyecto está diseñado bajo una arquitectura de microservicios, donde cada servicio tiene una responsabilidad única, su propia base de datos (Database per Service) y se comunica con otros servicios mediante APIs REST.
Toda la infraestructura está containerizada con Docker y orquestada para despliegue tanto local (Docker Compose) como en la nube (AWS CloudFormation).
- Frontend: Aplicación SPA interactiva.
- Backend (Microservicios): 5 servicios independientes.
- Bases de Datos: MySQL, PostgreSQL, MongoDB, y servicios analíticos (AWS Athena).
- Integraciones Externas: APIs de noticias financieras, proveedores de LLMs (OpenAI, Groq).
- Directorio:
Gestion-Portafolio/ - Tecnologías: Python, Flask, MySQL, SQLAlchemy.
- Descripción: Se encarga de gestionar los perfiles de los usuarios y sus portafolios de inversión. Mantiene el registro de los activos adquiridos y las transacciones realizadas por los usuarios.
- Directorio:
Historial-Precios/ - Tecnologías: Java, Spring Boot, PostgreSQL, JPA/Hibernate.
- Descripción: Responsable de almacenar y proveer datos históricos de precios de diferentes activos financieros. Expone endpoints para consultar la evolución de precios en el tiempo.
- Directorio:
Feed-Noticias/ - Tecnologías: Node.js, Express, MongoDB, Mongoose.
- Descripción: Consume y almacena noticias del mercado financiero a través de APIs externas (como Finnhub o News API). Utiliza una base de datos NoSQL (MongoDB) debido a la naturaleza semi-estructurada de las noticias y artículos.
- Directorio:
Orquestador-Senales/ - Tecnologías: Python, Flask, Integración LLM (OpenAI / Groq / OpenRouter).
- Descripción: Es el motor de inteligencia del sistema. Actúa como un orquestador que recopila información del MS2 (precios) y MS3 (noticias), y utiliza Modelos de Lenguaje Grande (LLMs) para generar análisis de sentimiento, insights y señales de inversión para el usuario.
- Directorio:
Analitica-Mercado/ - Tecnologías: Python, Flask, Boto3 (AWS SDK), AWS Athena, AWS S3.
- Descripción: Microservicio enfocado en el análisis de datos a gran escala utilizando infraestructura de AWS (Athena y S3). Ejecuta consultas analíticas sobre grandes volúmenes de datos financieros exportados.
- Tecnologías: React 19, Vite, TypeScript, Tailwind CSS.
- Librerías Destacadas:
Rechartsyd3para visualización de datos financieros.Framer MotionyThree.jspara animaciones e interfaces 3D (ej. globo terráqueo interactivo, componentes dinámicos).- Componentes de UI modernos y modulares (Bento grids, efectos retro/terminal).
- Descripción: Una interfaz de usuario moderna, reactiva y altamente interactiva que consolida la información de todos los microservicios, presentando dashboards de portafolio, gráficos de precios, noticias de mercado y las señales generadas por IA.
Toda la infraestructura cloud está automatizada como código (IaC) mediante AWS CloudFormation (CloudFormation.yaml).
- Contenedores: Todos los servicios y bases de datos están definidos en archivos
Dockerfileindividuales. - Ingesta de Datos: Scripts y configuraciones para migrar o inicializar datos en MySQL, PostgreSQL y MongoDB a un S3 Bucket para su posterior catalogación en AWS Glue y consultas analíticas en AWS Athena.
- Bases de Datos Aisladas: Cada microservicio cuenta con su propia base de datos (MySQL, PostgreSQL, MongoDB) desplegada en instancias protegidas dentro de una subred privada.
- Balanceo de Carga: Un Load Balancer interno (ILB) distribuye las peticiones del frontend hacia las instancias EC2 que ejecutan los contenedores Docker de los microservicios, asegurando resiliencia.
- Seguridad: Implementación de Security Groups estrictos que limitan el tráfico, exponiendo únicamente los puertos necesarios entre las capas de la VPC.
