trading-platform/docs/99-analisis/ML-MODELOS-VUELTA3-FINAL.md
rckrdmrd a7cca885f0 feat: Major platform documentation and architecture updates
Changes include:
- Updated architecture documentation
- Enhanced module definitions (OQI-001 to OQI-008)
- ML integration documentation updates
- Trading strategies documentation
- Orchestration and inventory updates
- Docker configuration updates

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-07 05:33:35 -06:00

17 KiB

title version date status author epic tags
Análisis de Modelos ML - Vuelta 3 (FINAL) 1.0.0 2026-01-06 Final ML-Specialist + Orquestador OQI-006
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

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

  • Identificados factores hardcodeados y solución
  • Encontrado SymbolTimeframeTrainer con factores dinámicos
  • Encontrado DynamicFactorWeighter con softplus
  • Encontrado VolatilityRangePredictor (Transformer)
  • Encontrado modelos entrenados en models/ml_first/
  • Identificado punto de desconexión (prediction_service.py:157)
  • Documentados filtros direccionales exitosos (SHORT bias)
  • Propuesto plan de refactoring mínimo viable
  • Definidos tests de regresión
  • 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