Proyecto end-to-end que integra un stack profesional de MLOps y LLMOps para resolver problemas financieros reales de inversión, dentro de una única aplicación web.
FinSight AI es una plataforma de inteligencia de inversiones que combina 4 módulos de Machine Learning clásico (MLOps) con un asistente conversacional basado en un LLM (LLMOps) que explica y unifica las predicciones de todos los módulos.
Un inversor (o un asesor financiero) necesita tomar decisiones informadas. FinSight AI le ofrece, desde una sola interfaz web:
| Módulo | Tipo de ML | Pregunta que responde |
|---|---|---|
| Portfolio Optimizer | Optimización + ML | ¿Cómo distribuyo mi capital entre activos para maximizar retorno ajustado a riesgo? |
| Price Forecaster | Series temporales | ¿Cuál es la proyección de precio de un activo en los próximos días? |
| Credit Risk Scorer | Clasificación | ¿Cuál es el riesgo de impago de un emisor / contraparte? |
| Market Sentiment Analyzer | NLP / clasificación | ¿Cuál es el sentimiento del mercado sobre un activo según las noticias? |
| AI Assistant 🤖 | LLM (vLLM + Langfuse) | "Explícame en lenguaje natural qué significan estos resultados y qué debería considerar" |
El AI Assistant es la pieza que une todo: recibe el contexto de los 4 módulos y genera explicaciones, resúmenes y respuestas en lenguaje natural, con observabilidad completa vía Langfuse.
| Capa | Tecnología | Rol en el proyecto |
|---|---|---|
| Experiment tracking & registry | MLflow | Registrar experimentos, métricas, artefactos y versionar modelos en producción |
| Versionado de datos | DVC | Versionar datasets y pipelines de forma reproducible (backend S3) |
| Orquestación | Apache Airflow | Programar y orquestar los pipelines de entrenamiento/retraining |
| Infraestructura como código | Terraform | Provisionar la infraestructura AWS (EKS, S3, ECR, RDS, IAM) |
| Contenedores | Docker | Empaquetar cada servicio de forma reproducible |
| Orquestación de contenedores | Kubernetes | Desplegar y escalar los servicios en producción (EKS) |
| Serving del LLM | vLLM | Servir el modelo de lenguaje con alto throughput (API compatible con OpenAI) |
| Observabilidad LLM | Langfuse | Trazas, costos, evaluación y debugging del LLM |
| API / Backend | FastAPI | Exponer modelos ML y el asistente LLM vía REST |
| Frontend | React + Vite + Tailwind | Interfaz web profesional |
┌─────────────────────────┐
│ Frontend (React) │
│ Dashboard de inversión │
└───────────┬──────────────┘
│ HTTP/REST
┌───────────▼──────────────┐
│ FastAPI (Backend) │
│ /portfolio /forecast │
│ /credit /sentiment /chat │
└───┬───────────────┬───────┘
┌───────────────────────┘ └────────────────────┐
│ carga modelos contexto + │ prompt
▼ ▼
┌────────────────────────┐ ┌────────────────────────┐
│ Modelos ML (MLflow │ │ LLM Service │
│ Model Registry) │ │ vLLM (OpenAI API) │
│ - portfolio │ │ + Langfuse (trazas) │
│ - forecasting │ └────────────────────────┘
│ - credit_risk │
│ - sentiment │
└───────────┬─────────────┘
│ entrenados por
▼
┌────────────────────────┐ ┌──────────────┐ ┌────────────────────┐
│ Airflow DAGs │─────▶│ MLflow │ │ DVC (datos + │
│ (pipelines ML) │ │ Tracking+Reg. │ │ pipelines, S3) │
└────────────────────────┘ └──────────────┘ └────────────────────┘
Infraestructura: Docker → docker-compose (local) | Terraform + Kubernetes (AWS / EKS)
📖 Ver el detalle completo en
docs/01-arquitectura.md.
finsight-ai/
├── README.md # Este archivo
├── docs/ # 📚 Documentación didáctica completa
│ ├── 01-arquitectura.md
│ ├── 02-mlops.md # MLflow + DVC + Airflow explicados
│ ├── 03-llmops.md # vLLM + Langfuse explicados
│ ├── 04-infraestructura.md # Docker + K8s + Terraform explicados
│ ├── 05-guia-local.md # Cómo levantar todo en local (Windows)
│ ├── 06-guia-aws.md # Cómo desplegar en AWS
│ ├── 07-glosario.md # Glosario de términos MLOps/LLMOps
│ ├── 08-monitoreo-y-evaluacion.md # Data drift (Evidently) + LLM-as-judge (Langfuse)
│ └── 09-datos-reales-finnhub.md # Datos de mercado reales (Yahoo chart API + Finnhub)
├── ml/ # 🧠 Código de Machine Learning (MLOps)
│ ├── common/ # Utilidades compartidas (config, MLflow, datos)
│ ├── monitoring/ # Data drift (Evidently)
│ ├── portfolio/ # Módulo 1: optimización de portafolio
│ ├── forecasting/ # Módulo 2: forecasting de precios
│ ├── credit_risk/ # Módulo 3: scoring de riesgo crediticio
│ └── sentiment/ # Módulo 4: análisis de sentimiento
├── airflow/ # 🔁 Orquestación
│ └── dags/ # DAGs de entrenamiento por módulo
├── services/ # 🚀 Servicios desplegables
│ ├── api/ # Backend FastAPI
│ └── llm/ # Cliente vLLM + integración Langfuse
├── frontend/ # 💻 App web React
├── infra/ # 🏗️ Infraestructura
│ ├── terraform/ # IaC para AWS
│ └── k8s/ # Manifiestos de Kubernetes
├── data/ # Datos (versionados con DVC, no en git)
├── docker-compose.yml # Stack local completo
├── dvc.yaml # Definición de pipelines DVC
├── params.yaml # Hiperparámetros centralizados
├── Makefile # Atajos de comandos
└── .env.example # Variables de entorno de ejemplo
Requisitos: Docker Desktop, ~8 GB de RAM libre. (Detalle en
docs/05-guia-local.md)
# 1. Copia las variables de entorno
cp .env.example .env
# 2. Levanta todo el stack (MLflow, Airflow, Langfuse, API, frontend, Postgres)
docker compose up -d
# 3. Entrena los modelos iniciales (registra en MLflow)
make train-all
# 4. Abre la app
# Frontend: http://localhost:5173
# API docs: http://localhost:8000/docs
# MLflow: http://localhost:5000
# Airflow: http://localhost:8080 (admin / admin)
# Langfuse: http://localhost:3000
⚠️ Sobre vLLM y GPU: vLLM rinde mejor con GPU. Si tu máquina no tiene GPU (caso típico en Windows), el proyecto usa por defecto un proveedor LLM mock/CPU controlado por la variableLLM_PROVIDER. Verdocs/03-llmops.md.
Si tu objetivo es aprender el stack, te recomiendo este recorrido:
docs/01-arquitectura.md— entiende cómo encajan todas las piezas.docs/02-mlops.md— MLflow, DVC y Airflow con ejemplos del proyecto.docs/03-llmops.md— cómo se sirve y observa el LLM.docs/04-infraestructura.md— Docker, Kubernetes y Terraform.docs/05-guia-local.mdydocs/06-guia-aws.md— manos a la obra.
Este es un proyecto educativo. Los modelos usan datos sintéticos o de demostración y no constituyen asesoría financiera. No lo uses para tomar decisiones de inversión reales.