| 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
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
- Revisar y aprobar
ET-REFACTORING-MINIMO-VIABLE.md
- Crear branch
feature/ml-integration-v2
- Implementar CAMBIO 3 (filtros direccionales) primero
- Ejecutar backtesting para validar
- 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