FASE 1 - DDL-Backend Coherence (continued): - market-data.types.ts: Updated TickerRow, added Ohlcv5mRow, Ohlcv15mRow, OhlcvStagingRow - llm.types.ts: Updated UserPreferences, UserMemory, Embedding + 3 Row types - financial.types.ts: +6 types (Invoice, WalletAuditLog, etc.) - entity.types.ts (trading): +5 types (Symbol, TradingBot, etc.) FASE 2 - Backend-Frontend Coherence (continued): - llmStore.ts: New Zustand store with session lifecycle management - riskStore.ts: New Zustand store for risk assessment - risk.service.ts: New service with 8 functions - currency.service.ts: New service with 5 functions FASE 3 - Documentation: - OQI-007: Updated to 100% (7 ET, 11 US, 6 RF) - OQI-008: Added ET-PFM-010-architecture.md, ET-PFM-011-goals-system.md - Updated all _MAP.md and README.md indexes Build validation: Backend tsc PASSED, Frontend Vite PASSED Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
270 lines
9.3 KiB
Markdown
270 lines
9.3 KiB
Markdown
---
|
|
id: "MAP-OQI-008-portfolio-manager"
|
|
title: "Mapa de OQI-008-portfolio-manager"
|
|
type: "Index"
|
|
project: "trading-platform"
|
|
updated_date: "2026-01-28"
|
|
---
|
|
|
|
# _MAP: OQI-008 - Portfolio Manager
|
|
|
|
**Ultima actualizacion:** 2026-01-28
|
|
**Estado:** En Desarrollo (45% completado)
|
|
**Version:** 1.1.0
|
|
|
|
---
|
|
|
|
## Propósito
|
|
|
|
Esta épica implementa un sistema profesional de gestión de carteras a largo plazo con optimización de portfolios, rebalanceo automático, distribución de rendimientos y proyecciones de inversión.
|
|
|
|
---
|
|
|
|
## Contenido del Directorio
|
|
|
|
```
|
|
OQI-008-portfolio-manager/
|
|
├── README.md # Documentacion tecnica principal
|
|
├── _MAP.md # Este archivo - indice
|
|
├── requerimientos/ # Documentos de requerimientos funcionales (7)
|
|
│ ├── RF-PFM-001-dashboard-portfolio.md # Dashboard del portfolio
|
|
│ ├── RF-PFM-002-analisis-riesgo.md # Analisis de riesgo (VaR, Sharpe)
|
|
│ ├── RF-PFM-003-rebalanceo.md # Rebalanceo automatico
|
|
│ ├── RF-PFM-004-historial-transacciones.md # Historial de transacciones
|
|
│ ├── RF-PFM-005-comparacion-benchmark.md # Comparacion vs benchmark
|
|
│ ├── RF-PFM-006-reportes-fiscales.md # Reportes fiscales
|
|
│ └── RF-PFM-007-metas-inversion.md # Metas de inversion
|
|
├── especificaciones/ # Especificaciones tecnicas (11)
|
|
│ ├── ET-PFM-001-arquitectura-dashboard.md # Arquitectura del dashboard
|
|
│ ├── ET-PFM-002-calculo-metricas.md # Calculo de metricas
|
|
│ ├── ET-PFM-003-stress-testing.md # Stress testing
|
|
│ ├── ET-PFM-004-motor-rebalanceo.md # Motor de rebalanceo
|
|
│ ├── ET-PFM-005-historial-reportes.md # Historial y reportes
|
|
│ ├── ET-PFM-006-reportes-fiscales.md # Engine de reportes fiscales
|
|
│ ├── ET-PFM-007-motor-metas.md # Motor de metas (entity)
|
|
│ ├── ET-PFM-008-frontend.md # Especificacion frontend
|
|
│ ├── ET-PFM-009-custom-charts-svg-canvas.md # Charts SVG + Canvas
|
|
│ ├── ET-PFM-010-architecture.md # **Arquitectura general sistema**
|
|
│ └── ET-PFM-011-goals-system.md # **Sistema completo de Goals**
|
|
├── historias-usuario/ # User Stories (14)
|
|
│ ├── US-PFM-001-ver-resumen-portfolio.md # Ver resumen del portfolio
|
|
│ ├── US-PFM-002-ver-posiciones.md # Ver posiciones detalladas
|
|
│ ├── US-PFM-003-ver-metricas-riesgo.md # Ver metricas de riesgo
|
|
│ ├── US-PFM-004-ejecutar-stress-test.md # Ejecutar stress test
|
|
│ ├── US-PFM-005-configurar-asignacion.md # Configurar asignacion
|
|
│ ├── US-PFM-006-ver-desviacion.md # Ver desviacion de targets
|
|
│ ├── US-PFM-007-ejecutar-rebalanceo.md # Ejecutar rebalanceo
|
|
│ ├── US-PFM-008-ver-historial.md # Ver historial transacciones
|
|
│ ├── US-PFM-009-exportar-historial.md # Exportar historial
|
|
│ ├── US-PFM-010-comparar-benchmark.md # Comparar con benchmark
|
|
│ ├── US-PFM-011-metricas-benchmark.md # Metricas de benchmark
|
|
│ ├── US-PFM-012-reporte-fiscal.md # Generar reporte fiscal
|
|
│ ├── US-PFM-013-alerta-rebalanceo.md # Alerta de rebalanceo
|
|
│ └── US-PFM-014-generar-pdf.md # Generar reporte PDF
|
|
└── implementacion/ # Trazabilidad
|
|
└── TRACEABILITY.yml
|
|
```
|
|
|
|
---
|
|
|
|
## Requerimientos Funcionales
|
|
|
|
| ID | Nombre | Prioridad | SP | Estado |
|
|
|----|--------|-----------|-----|--------|
|
|
| RF-PFM-001 | Dashboard del Portfolio | P0 | 8 | ✅ Documentado |
|
|
| RF-PFM-002 | Análisis de Riesgo | P0 | 10 | ✅ Documentado |
|
|
| RF-PFM-003 | Rebalanceo Automático | P0 | 13 | ✅ Documentado |
|
|
| RF-PFM-004 | Historial de Transacciones | P0 | 10 | ✅ Documentado |
|
|
| RF-PFM-005 | Comparación vs Benchmark | P1 | 10 | ✅ Documentado |
|
|
| RF-PFM-006 | Reportes Fiscales | P1 | 8 | ✅ Documentado |
|
|
| RF-PFM-007 | Metas de Inversión | P2 | 6 | ✅ Documentado |
|
|
|
|
**Total:** 65 SP (100% documentados)
|
|
|
|
---
|
|
|
|
## Especificaciones Tecnicas
|
|
|
|
| ID | Nombre | Componente | Estado |
|
|
|----|--------|------------|--------|
|
|
| ET-PFM-001 | Arquitectura Dashboard | Frontend | Documentado |
|
|
| ET-PFM-002 | Calculo de Metricas | Backend | Documentado |
|
|
| ET-PFM-003 | Stress Testing | Risk Engine | Documentado |
|
|
| ET-PFM-004 | Motor de Rebalanceo | Backend | Documentado |
|
|
| ET-PFM-005 | Historial y Reportes | Backend | Documentado |
|
|
| ET-PFM-006 | Reportes Fiscales | Tax Engine | Documentado |
|
|
| ET-PFM-007 | Motor de Metas (Entity) | Goals Engine | Documentado |
|
|
| ET-PFM-008 | Frontend Completo | Frontend | Documentado |
|
|
| ET-PFM-009 | Custom Charts SVG/Canvas | Frontend | Documentado |
|
|
| ET-PFM-010 | **Arquitectura General** | Sistema | **Documentado** |
|
|
| ET-PFM-011 | **Sistema de Goals Completo** | Goals Engine | **Documentado** |
|
|
|
|
**Total:** 11 ET (100% documentados)
|
|
|
|
---
|
|
|
|
## Historias de Usuario
|
|
|
|
| ID | Historia | Prioridad | SP | Estado |
|
|
|----|----------|-----------|-----|--------|
|
|
| US-PFM-001 | Ver resumen del portfolio | P0 | 5 | Documentado |
|
|
| US-PFM-002 | Ver posiciones detalladas | P0 | 8 | Documentado |
|
|
| US-PFM-003 | Ver metricas de riesgo | P0 | 5 | Documentado |
|
|
| US-PFM-004 | Ejecutar stress test | P0 | 5 | Documentado |
|
|
| US-PFM-005 | Configurar asignacion target | P0 | 8 | Documentado |
|
|
| US-PFM-006 | Ver desviacion de targets | P1 | 5 | Documentado |
|
|
| US-PFM-007 | Ejecutar rebalanceo | P1 | 5 | Documentado |
|
|
| US-PFM-008 | Ver historial de transacciones | P1 | 3 | Documentado |
|
|
| US-PFM-009 | Exportar historial | P2 | 5 | Documentado |
|
|
| US-PFM-010 | Comparar con benchmark | P2 | 3 | Documentado |
|
|
| US-PFM-011 | Metricas de benchmark | P1 | 5 | Documentado |
|
|
| US-PFM-012 | Generar reporte fiscal | P2 | 8 | Documentado |
|
|
| US-PFM-013 | Alerta de rebalanceo | P2 | 5 | Documentado |
|
|
| US-PFM-014 | Generar reporte PDF | P0 | 5 | Documentado |
|
|
|
|
**Total:** 75 SP (100% documentados)
|
|
|
|
---
|
|
|
|
## Perfiles de Riesgo
|
|
|
|
| Perfil | Atlas | Orion | Nova | Cash | Target Mensual |
|
|
|--------|-------|-------|------|------|----------------|
|
|
| Ultra Conservador | 70% | 20% | 0% | 10% | 2-3% |
|
|
| Conservador | 50% | 35% | 5% | 10% | 3-5% |
|
|
| Moderado | 30% | 50% | 15% | 5% | 5-8% |
|
|
| Agresivo | 15% | 45% | 35% | 5% | 8-15% |
|
|
| Ultra Agresivo | 5% | 30% | 60% | 5% | 15%+ |
|
|
|
|
---
|
|
|
|
## Triggers de Rebalanceo
|
|
|
|
| Tipo | Condición | Frecuencia |
|
|
|------|-----------|------------|
|
|
| Drift | Desviación > 5% | Continuo |
|
|
| Calendario | Día 1 del mes | Mensual |
|
|
| Rendimiento | Ganancia > 20% | Por evento |
|
|
| Drawdown | Pérdida > 15% | Por evento |
|
|
| Objetivo | Meta alcanzada | Por evento |
|
|
|
|
---
|
|
|
|
## Distribución de Rendimientos
|
|
|
|
**Esquema por Defecto:**
|
|
- 80% reinversión (compound growth)
|
|
- 20% distribución al usuario
|
|
|
|
**Frecuencias:**
|
|
- Mensual, Trimestral, Semestral, Anual, Manual
|
|
|
|
**Destinos:**
|
|
- Wallet interno
|
|
- Cuenta bancaria (Stripe payout)
|
|
- Crypto wallet (futuro)
|
|
|
|
---
|
|
|
|
## Dependencias
|
|
|
|
### Depende de:
|
|
|
|
- **OQI-001:** Autenticación
|
|
- **OQI-004:** Investment Accounts (cuentas de inversión)
|
|
- **OQI-005:** Payments (distribuciones, aportaciones)
|
|
- **OQI-006:** ML Signals (performance de agentes)
|
|
|
|
### Bloquea:
|
|
|
|
- Ninguna
|
|
|
|
---
|
|
|
|
## Stack Técnico
|
|
|
|
| Capa | Tecnología | Uso |
|
|
|------|------------|-----|
|
|
| Frontend | React + D3.js | Dashboard y charts |
|
|
| Backend | Express.js | API REST |
|
|
| Database | PostgreSQL | Persistencia |
|
|
| Cálculos | Python (NumPy, SciPy) | Monte Carlo, métricas |
|
|
| Jobs | Bull Queue + Redis | Rebalanceo, distribuciones |
|
|
| Cache | Redis | Performance |
|
|
|
|
---
|
|
|
|
## Métricas del Portfolio
|
|
|
|
### Performance
|
|
- TWR (Time-Weighted Return)
|
|
- MWR (Money-Weighted Return)
|
|
- Sharpe Ratio
|
|
- Sortino Ratio
|
|
- Maximum Drawdown
|
|
- Calmar Ratio
|
|
|
|
### Risk
|
|
- Beta vs benchmark
|
|
- Alpha generation
|
|
- Volatilidad
|
|
- Value at Risk (VaR)
|
|
|
|
---
|
|
|
|
## Criterios de Aceptación
|
|
|
|
### Funcionales
|
|
|
|
- [ ] Cuestionario de perfil de riesgo completo
|
|
- [ ] Dashboard de portfolio con métricas
|
|
- [ ] Rebalanceo automático funcionando
|
|
- [ ] Distribuciones mensuales ejecutándose
|
|
- [ ] Proyecciones Monte Carlo precisas
|
|
- [ ] Metas de inversión con tracking
|
|
|
|
### No Funcionales
|
|
|
|
- [ ] Dashboard carga < 2 segundos
|
|
- [ ] Simulaciones < 5 segundos (1000 escenarios)
|
|
- [ ] Distribuciones procesadas en < 24 horas
|
|
|
|
### Técnicos
|
|
|
|
- [ ] Cobertura tests > 80%
|
|
- [ ] Logs de auditoría completos
|
|
- [ ] Documentación API
|
|
|
|
---
|
|
|
|
## Hitos
|
|
|
|
| Hito | Entregables | Target |
|
|
|------|-------------|--------|
|
|
| M1 | Perfiles + asignación básica | Sprint 11 |
|
|
| M2 | Rebalanceo automático | Sprint 12 |
|
|
| M3 | Distribuciones + wallet | Sprint 12 |
|
|
| M4 | Proyecciones + metas | Sprint 13 |
|
|
| M5 | Reportes + exportación | Sprint 13 |
|
|
|
|
---
|
|
|
|
## Referencias
|
|
|
|
- [README Principal](./README.md)
|
|
- [ET-PFM-010: Arquitectura General](./especificaciones/ET-PFM-010-architecture.md)
|
|
- [ET-PFM-011: Sistema de Goals](./especificaciones/ET-PFM-011-goals-system.md)
|
|
- [OQI-004: Investment Accounts](../OQI-004-investment-accounts/)
|
|
- [OQI-005: Payments](../OQI-005-payments-stripe/)
|
|
- [Modern Portfolio Theory](https://en.wikipedia.org/wiki/Modern_portfolio_theory)
|
|
|
|
---
|
|
|
|
## Historial de Cambios
|
|
|
|
| Fecha | Version | Descripcion |
|
|
|-------|---------|-------------|
|
|
| 2025-12-05 | 1.0.0 | Documentacion inicial |
|
|
| 2026-01-25 | 1.0.1 | Agregados ET-PFM-008, ET-PFM-009, US-PFM-013, US-PFM-014 |
|
|
| 2026-01-28 | 1.1.0 | Agregados ET-PFM-010 (Arquitectura), ET-PFM-011 (Goals System) |
|