Skip to content

faiber1986/finsight-ai

Repository files navigation

FinSight AI — Plataforma de Inteligencia de Inversiones (MLOps + LLMOps)

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.


🎯 ¿Qué problema resuelve?

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.


🧱 Stack tecnológico

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

🗺️ Arquitectura (vista de pájaro)

                                ┌─────────────────────────┐
                                │      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.


📂 Estructura del repositorio

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

🚀 Inicio rápido (local con Docker Compose)

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 variable LLM_PROVIDER. Ver docs/03-llmops.md.


🧭 ¿Por dónde empezar a aprender?

Si tu objetivo es aprender el stack, te recomiendo este recorrido:

  1. docs/01-arquitectura.md — entiende cómo encajan todas las piezas.
  2. docs/02-mlops.md — MLflow, DVC y Airflow con ejemplos del proyecto.
  3. docs/03-llmops.md — cómo se sirve y observa el LLM.
  4. docs/04-infraestructura.md — Docker, Kubernetes y Terraform.
  5. docs/05-guia-local.md y docs/06-guia-aws.md — manos a la obra.

⚠️ Disclaimer

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.

About

MLOps + LLMOps investment intelligence platform with real market data, ML models, and trading backtesting

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors