--- title: "Análisis de Modelos ML - Vuelta 3 (FINAL)" version: "1.0.0" date: "2026-01-06" status: "Final" author: "ML-Specialist + Orquestador" epic: "OQI-006" tags: ["ml", "final", "solution", "implementation"] --- # ANÁLISIS DE MODELOS ML - VUELTA 3 (DOCUMENTO FINAL) ## 1. RESUMEN EJECUTIVO ### 1.1 Objetivo del Análisis Redefinir la documentación y arquitectura de los modelos ML de trading-platform para: - Alcanzar 80%+ win rate en movimientos fuertes - Implementar sistema de atención con factores dinámicos (no hardcoded) - Escalar de 3 a 100+ activos - Gestión de riesgo 2:1 o 3:1 (TP:SL) ### 1.2 Hallazgo Principal > **La infraestructura necesaria YA EXISTE, pero NO está integrada** | Componente | Estado | Ubicación | |------------|--------|-----------| | Modelos por símbolo/timeframe | ✅ Existe | `models/ml_first/{symbol}/{tf}/` | | Trainer separado | ✅ Existe | `symbol_timeframe_trainer.py` | | Factores dinámicos | ✅ Existe | `SYMBOL_CONFIGS` | | Attention weighting | ✅ Existe | `DynamicFactorWeighter` | | Transformer con volatility bias | ✅ Existe | `VolatilityRangePredictor` | | **Integración en producción** | ❌ Falta | `prediction_service.py` usa legacy | ### 1.3 Métricas Actuales vs Objetivo | Métrica | Actual | Objetivo Inmediato | Meta Final | |---------|--------|-------------------|------------| | Win Rate | 33-44% | 55-60% | 80%+ | | Profit Factor | 1.07 | 1.3 | 1.8+ | | R:R Ratio | 1.2:1 | 1.8:1 | 2.5:1 | | Max Drawdown | 15% | 12% | 10% | | Símbolos soportados | 2-3 | 5+ | 100+ | --- ## 2. ARQUITECTURA DE SOLUCIÓN ### 2.1 Diagrama de Arquitectura Propuesta ``` ┌─────────────────────────────────────────────────────────────────────────┐ │ ML PREDICTION SYSTEM v2.0 │ ├─────────────────────────────────────────────────────────────────────────┤ │ │ │ ┌───────────────┐ ┌────────────────┐ ┌──────────────────────┐ │ │ │ API Layer │ │ Prediction │ │ Model Registry │ │ │ │ (FastAPI) │───▶│ Service v2 │───▶│ │ │ │ │ │ │ │ │ models/ml_first/ │ │ │ │ /predict/ │ │ Symbol-aware │ │ ├── XAUUSD/ │ │ │ │ /signals/ │ │ loading │ │ │ ├── 5m/ │ │ │ │ /amd/ │ │ │ │ │ └── 15m/ │ │ │ │ /ensemble/ │ └────────┬───────┘ │ ├── EURUSD/ │ │ │ └───────────────┘ │ │ └── BTCUSD/ │ │ │ │ └──────────────────────┘ │ │ ▼ │ │ ┌─────────────────────────────────────────────────────────────────┐ │ │ │ ATTENTION LAYER │ │ │ ├─────────────────────────────────────────────────────────────────┤ │ │ │ ┌──────────────────┐ ┌───────────────────┐ ┌──────────────┐ │ │ │ │ │ DynamicFactor │ │ Softplus Mapping │ │ Sample │ │ │ │ │ │ Calculator │ │ │ │ Weighting │ │ │ │ │ │ │ │ m = delta/factor │ │ │ │ │ │ │ │ factor = median( │ │ w = softplus(m-1) │ │ XGBoost: │ │ │ │ │ │ range, │ │ w = clip(w, 0, 3) │ │ sample_weight│ │ │ │ │ │ window=200 │ │ │ │ │ │ │ │ │ │ ).shift(1) │ │ m<1 → w≈0 (noise) │ │ Transformer: │ │ │ │ │ │ │ │ m=2 → w≈1 (signal)│ │ attn_bias │ │ │ │ │ └──────────────────┘ └───────────────────┘ └──────────────┘ │ │ │ └─────────────────────────────────────────────────────────────────┘ │ │ │ │ ┌─────────────────────────────────────────────────────────────────┐ │ │ │ MODEL ENSEMBLE │ │ │ ├─────────────────────────────────────────────────────────────────┤ │ │ │ │ │ │ │ ┌────────────┐ ┌────────────┐ ┌────────────┐ ┌────────────┐ │ │ │ │ │ XGBoost │ │ AMD │ │ ICT/SMC │ │ TP/SL │ │ │ │ │ │ Range │ │ Detector │ │ Detector │ │ Classifier │ │ │ │ │ │ Predictor │ │ │ │ │ │ │ │ │ │ │ │ │ │ Phase: │ │ Order │ │ P(TP first)│ │ │ │ │ │ ΔHigh/ΔLow │ │ A/M/D │ │ Blocks, │ │ 2:1, 3:1 │ │ │ │ │ │ │ │ │ │ FVG │ │ │ │ │ │ │ │ Weight:35% │ │ Weight:20% │ │ Weight:25% │ │ Weight:20% │ │ │ │ │ └────────────┘ └────────────┘ └────────────┘ └────────────┘ │ │ │ │ │ │ │ │ │ ▼ │ │ │ │ ┌────────────────────────────────────────────────────────────┐ │ │ │ │ │ META-MODEL (XGBoost) │ │ │ │ │ │ Features: [pred_high, pred_low, amd_phase, ict_score, │ │ │ │ │ │ prob_tp, volatility, session, attention_weight] │ │ │ │ │ └────────────────────────────────────────────────────────────┘ │ │ │ └─────────────────────────────────────────────────────────────────┘ │ │ │ │ ┌─────────────────────────────────────────────────────────────────┐ │ │ │ DIRECTIONAL FILTERS │ │ │ ├─────────────────────────────────────────────────────────────────┤ │ │ │ SHORT (2+ confirmaciones): LONG (3+ confirmaciones): │ │ │ │ ├── RSI > 55 ├── RSI < 35 │ │ │ │ ├── SAR above price ├── SAR below price │ │ │ │ ├── CMF < 0 ├── CMF > 0.1 │ │ │ │ └── MFI > 55 └── MFI < 35 │ │ │ └─────────────────────────────────────────────────────────────────┘ │ │ │ │ OUTPUT: { direction, entry, sl, tp, confidence, attention_weight } │ └─────────────────────────────────────────────────────────────────────────┘ ``` ### 2.2 Configuración Centralizada **Archivo propuesto**: `config/symbols.yaml` ```yaml symbols: XAUUSD: base_factor: 5.0 # USD - rango típico 5m pip_value: 0.01 typical_spread: 0.30 direction_bias: short # Basado en backtests min_confidence: 0.70 BTCUSD: base_factor: 100.0 # USD - rango típico 5m pip_value: 0.01 typical_spread: 10.0 direction_bias: none min_confidence: 0.75 EURUSD: base_factor: 0.0005 # ~5 pips pip_value: 0.0001 typical_spread: 0.0001 direction_bias: none min_confidence: 0.70 GBPUSD: base_factor: 0.0006 # ~6 pips pip_value: 0.0001 typical_spread: 0.00012 direction_bias: none min_confidence: 0.70 USDJPY: base_factor: 0.05 # ~5 pips pip_value: 0.01 typical_spread: 0.012 direction_bias: none min_confidence: 0.70 defaults: factor_window: 200 softplus_beta: 4.0 softplus_w_max: 3.0 min_attention: 1.5 # Solo señales con attention >= 1.5 ``` --- ## 3. PLAN DE IMPLEMENTACIÓN ### 3.1 Fases de Implementación ``` ╔═══════════════════════════════════════════════════════════════════════╗ ║ ROADMAP DE IMPLEMENTACIÓN ║ ╠═══════════════════════════════════════════════════════════════════════╣ ║ ║ ║ FASE 1: Quick Wins (Semana 1) ║ ║ ├── [1] Activar filtros direccionales en signal_generator.py ║ ║ ├── [2] Cargar modelos separados en prediction_service.py ║ ║ └── [3] Eliminar factores hardcodeados ║ ║ ║ ║ FASE 2: Integración Attention (Semana 2) ║ ║ ├── [4] Integrar DynamicFactorWeighter en pipeline ║ ║ ├── [5] Agregar attention_weight a output de API ║ ║ └── [6] Filtrar señales por min_attention >= 1.5 ║ ║ ║ ║ FASE 3: Metamodelo (Semana 3-4) ║ ║ ├── [7] Implementar MetamodelEnsemble con pesos adaptativos ║ ║ ├── [8] Reentrenar modelos con attention weighting ║ ║ └── [9] Backtesting extensivo (3 meses) ║ ║ ║ ║ FASE 4: Escalamiento (Semana 5+) ║ ║ ├── [10] Agregar 5 símbolos adicionales ║ ║ ├── [11] Automatizar reentrenamiento semanal ║ ║ └── [12] Dashboard de monitoreo ║ ║ ║ ╚═══════════════════════════════════════════════════════════════════════╝ ``` ### 3.2 Estimación de Impacto por Fase | Fase | Win Rate Esperado | Effort | Riesgo | |------|-------------------|--------|--------| | FASE 1 | 44% → 55% | 1 semana | Bajo | | FASE 2 | 55% → 65% | 1 semana | Bajo | | FASE 3 | 65% → 75% | 2 semanas | Medio | | FASE 4 | 75% → 80% | 2+ semanas | Medio | --- ## 4. ENTREGABLES GENERADOS ### 4.1 Documentos de Análisis | Documento | Descripción | Ubicación | |-----------|-------------|-----------| | ML-MODELOS-VUELTA1-ANALISIS.md | Análisis inicial, inventario de modelos | `docs/99-analisis/` | | ML-MODELOS-VUELTA2-ANALISIS.md | Análisis profundo, quick wins | `docs/99-analisis/` | | ML-MODELOS-VUELTA3-FINAL.md | Documento final consolidado | `docs/99-analisis/` | | ET-ML-FACTORES-ATENCION-SPEC.md | Especificación técnica de factores | `docs/99-analisis/` | | ET-REFACTORING-MINIMO-VIABLE.md | Plan de refactoring con código | `docs/99-analisis/` | ### 4.2 Archivos de Código Identificados para Modificación | Archivo | Cambio Requerido | Prioridad | |---------|------------------|-----------| | `prediction_service.py:157` | Cargar modelos separados | ALTA | | `range_predictor_factor.py:598-601` | Eliminar SYMBOLS hardcoded | ALTA | | `signal_generator.py` | Agregar DirectionalFilters | ALTA | | `enhanced_range_predictor.py` | Integrar DynamicFactorWeighter | MEDIA | | `strategy_ensemble.py:151-174` | Pesos adaptativos | MEDIA | ### 4.3 Configuraciones Propuestas | Archivo | Contenido | Estado | |---------|-----------|--------| | `config/symbols.yaml` | Configuración centralizada de símbolos | Propuesto | | `config/attention.yaml` | Configuración de attention weighting | Propuesto | | `config/unified_model.yaml` | Hyperparámetros unificados | Propuesto | --- ## 5. VALIDACIÓN FINAL ### 5.1 Checklist de Validación - [x] Identificados factores hardcodeados y solución - [x] Encontrado `SymbolTimeframeTrainer` con factores dinámicos - [x] Encontrado `DynamicFactorWeighter` con softplus - [x] Encontrado `VolatilityRangePredictor` (Transformer) - [x] Encontrado modelos entrenados en `models/ml_first/` - [x] Identificado punto de desconexión (`prediction_service.py:157`) - [x] Documentados filtros direccionales exitosos (SHORT bias) - [x] Propuesto plan de refactoring mínimo viable - [x] Definidos tests de regresión - [x] Estimado impacto por fase ### 5.2 Riesgos y Mitigaciones | Riesgo | Probabilidad | Impacto | Mitigación | |--------|--------------|---------|------------| | Regresión en win rate | Baja | Alto | Tests de regresión, rollback rápido | | Latencia incrementada | Media | Medio | Profiling, lazy loading | | Modelos no compatibles | Baja | Alto | Fallback a legacy | | Overfitting por atención | Media | Medio | Validación walk-forward | --- ## 6. CONCLUSIÓN ### 6.1 Hallazgo Principal El proyecto trading-platform tiene una base sólida de ML con infraestructura avanzada que **no está siendo utilizada en producción**. La brecha principal es de **integración**, no de capacidad. ### 6.2 Recomendación Implementar el **Refactoring Mínimo Viable** (FASE 1) en la primera semana para obtener mejoras inmediatas del 10-15% en win rate con riesgo bajo. ### 6.3 Próximos Pasos Inmediatos 1. Revisar y aprobar `ET-REFACTORING-MINIMO-VIABLE.md` 2. Crear branch `feature/ml-integration-v2` 3. Implementar CAMBIO 3 (filtros direccionales) primero 4. Ejecutar backtesting para validar 5. Proceder con CAMBIO 1 y 2 --- ## ANEXO: RESUMEN DE 3 VUELTAS | Vuelta | Foco | Hallazgo Principal | |--------|------|-------------------| | 1 | Inventario | 15+ modelos ML, factores hardcodeados identificados | | 2 | Arquitectura | Infraestructura existe pero no integrada | | 3 | Solución | Plan de refactoring con quick wins definidos | --- *Documento generado: 2026-01-06* *Estado: FINAL - Listo para implementación* *Autor: ML-Specialist + Orquestador*