munger-engine / docs /api_reqs.md
dromerosm's picture
Refactor project structure: Move docs to /docs, update README
4811dd1
# Documento de Especificaciones T茅cnicas: Munger Intelligence Engine API
**Versi贸n:** 1.0
**Tecnolog铆as:** Node.js, Next.js (App Router), TypeScript, yahoo-finance2
**Despliegue:** Hugging Face Spaces (Docker)
---
## 1. Resumen del Proyecto
El "Munger Intelligence Engine" es una API de an谩lisis financiero dise帽ada para automatizar la estrategia de inversi贸n de Charlie Munger: comprar empresas de "alta calidad" cuando cotizan cerca de su media m贸vil de 200 semanas (200-WMA). El sistema debe realizar descargas diarias, filtrar por capitalizaci贸n de mercado y gestionar estados de se帽ales en tiempo real.
---
## 2. Definici贸n de la Watchlist e Ingesta de Datos
### 2.1 Segmentaci贸n por Capitalizaci贸n (Market Cap)
El sistema debe ignorar cualquier activo que no cumpla con los umbrales de seguridad institucional:
* **Elite Compounders (Mega Cap):** > $100B. Empresas con fosos econ贸micos globales.
* **Blue Chips (Large Cap):** > $10B. Est谩ndar m铆nimo de liquidez y estabilidad para la estrategia.
### 2.2 Estrategia de Descarga Paralelizada (Batching)
Para optimizar el rendimiento y evitar bloqueos de IP/Rate Limiting de Yahoo Finance:
* **Tama帽o de Lote (Batch):** 50 tickers por iteraci贸n.
* **Concurrencia:** Utilizar `Promise.all` para procesar los 50 tickers de cada lote simult谩neamente.
* **Frecuencia:** Descarga diaria automatizada de `quote` y `quoteSummary`.
---
## 3. L贸gica del Motor de An谩lisis (Munger Strategy)
Cada ticker debe ser evaluado bajo tres filtros secuenciales:
1. **Filtro Fundamental (Calidad):**
* **ROE (Return on Equity):** > 15% (M铆nimo), > 25% (Excelente).
* **Debt/Equity:** < 50% (M铆nimo), < 15% (Ideal).
2. **Filtro T茅cnico (Valor):**
* **200-WMA:** Media m贸vil simple de los 煤ltimos 200 cierres semanales.
* **Gatillo (Trigger):** Precio Actual $\leq$ (200-WMA * 1.05).
3. **Margen de Seguridad:** Diferencia porcentual entre el Precio Actual y el Target Mean de analistas.
---
## 4. Gesti贸n de Estados por Ticker
El sistema debe mantener un estado persistente para cada ticker en la base de datos o archivo de estado en Hugging Face:
| Estado | Descripci贸n |
| :--- | :--- |
| `SCANNING` | Iniciando descarga de datos de `yahoo-finance2`. |
| `FILTERING` | Validando Market Cap y m茅tricas de calidad (ROE/Deuda). |
| `TECHNICAL_EVAL` | Calculando posici贸n respecto a la 200-WMA. |
| `SIGNAL_READY` | Activo listo para compra o seguimiento activo. |
| `ERROR` | Fallo en la ingesta de datos o ticker no encontrado. |
---
## 5. Especificaci贸n de Endpoints de la API
### `GET /api/v1/health`
* **Prop贸sito:** Monitorizaci贸n del sistema y estado de las APIs externas.
* **Response:** JSON con `status`, `last_sync_timestamp` y `api_latency`.
### `POST /api/v1/sync`
* **Prop贸sito:** Disparador del ciclo de descarga diaria (v铆a Cron).
* **L贸gica:** Ejecuta el procesamiento por lotes (50 tickers) usando `Promise.all`.
* **Payload:** `{ "force": boolean, "segments": ["mega", "large"] }`.
### `GET /api/v1/signals`
* **Prop贸sito:** Listar oportunidades activas para el Dashboard.
* **Filtros:** Por `sector`, `munger_score` (0-100) y `upside`.
* **Response:** Array de objetos `MungerStock`.
### `GET /api/v1/ticker/:id`
* **Prop贸sito:** Deep Dive de un activo espec铆fico.
* **Response:** Detalle completo incluyendo `quoteSummary`, hist贸rico de WMA y catalizadores fundamentales.
### `GET /api/v1/portfolio`
* **Prop贸sito:** Estado de las posiciones actuales en Alpaca (Paper Trading).
* **Response:** Equity total, P&L de posiciones y "D铆as de Disciplina" (tiempo sin trades impulsivos).
---
## 6. Despliegue en Hugging Face Spaces
* **Docker Image:** Base `node:20-slim`.
* **Persistencia:** Utilizar **HF Datasets** o **R2 de Cloudflare** para evitar p茅rdida de datos por reinicio del Space.
* **Variables de Entorno:** `ALPACA_KEY`, `ALPACA_SECRET`, `HF_TOKEN`.