trading-platform/docs/02-definicion-modulos/OQI-006-ml-signals/implementacion/PLAN-IMPLEMENTACION-FASES.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

606 lines
17 KiB
Markdown

# Plan de Implementacion - ML Hierarchical Architecture
**Version:** 1.0.0
**Fecha:** 2026-01-07
**Estado:** DRAFT - Pendiente Validacion
---
## Resumen Ejecutivo
Este plan detalla las fases de implementacion para:
1. Walk-forward optimization (validar en mas periodos OOS)
2. Entrenar mas activos (BTCUSD, GBPUSD, USDJPY)
3. Neural Gating Training (completar integracion de datos)
4. Produccion (integrar con FastAPI)
---
## Estado Actual
### Modelos Existentes
| Componente | XAUUSD | EURUSD | BTCUSD | GBPUSD | USDJPY |
|------------|--------|--------|--------|--------|--------|
| Attention 5m | OK | OK | NO | NO | NO |
| Attention 15m | OK | OK | NO | NO | NO |
| Base Model High 5m | OK | OK | NO | NO | NO |
| Base Model Low 5m | OK | OK | NO | NO | NO |
| Base Model High 15m | OK | OK | NO | NO | NO |
| Base Model Low 15m | OK | OK | NO | NO | NO |
| Metamodel XGBoost | OK | OK | NO | NO | NO |
| Neural Gating | PARCIAL | NO | NO | NO | NO |
| Backtest V2 | OK | OK | NO | NO | NO |
### Resultados Validados
| Activo | Estrategia | Expectancy | Win Rate | PF |
|--------|------------|------------|----------|-----|
| XAUUSD | conservative | +0.0284 | 46.0% | 1.07 |
| EURUSD | conservative | +0.0780 | 48.2% | 1.23 |
---
## FASE 1: Walk-Forward Optimization
### Objetivo
Validar la estrategia "conservative" en multiples periodos OOS para confirmar robustez.
### Archivos Involucrados
| Archivo | Accion | Proposito |
|---------|--------|-----------|
| `scripts/evaluate_hierarchical_v2.py` | EJECUTAR | Backtest con walk-forward |
| `src/backtesting/engine.py` | LEER | Entender mecanismo actual |
| `config/validation_oos.yaml` | MODIFICAR | Definir periodos walk-forward |
### Periodos de Validacion
```yaml
walk_forward_periods:
- name: "Q3-2024"
start: "2024-07-01"
end: "2024-09-30"
- name: "Q4-2024"
start: "2024-10-01"
end: "2024-12-31"
- name: "Full-2024-H2"
start: "2024-07-01"
end: "2024-12-31"
```
### Dependencias
- Modelos de Attention entrenados (OK)
- Modelos Base entrenados (OK)
- Metamodels entrenados (OK)
- Datos historicos en BD (VERIFICAR)
### Metricas de Exito
- Expectancy > 0 en TODOS los periodos
- Win Rate > 40%
- Profit Factor > 1.0
- Max Drawdown < 50R
### Comandos de Ejecucion
```bash
cd /home/isem/workspace-v1/projects/trading-platform/apps/ml-engine
# XAUUSD Walk-Forward
python scripts/evaluate_hierarchical_v2.py \
--symbol XAUUSD \
--strategy conservative \
--start-date 2024-07-01 \
--end-date 2024-12-31 \
--output models/backtest_results_v2/walk_forward/
# EURUSD Walk-Forward
python scripts/evaluate_hierarchical_v2.py \
--symbol EURUSD \
--strategy conservative \
--start-date 2024-07-01 \
--end-date 2024-12-31 \
--output models/backtest_results_v2/walk_forward/
```
---
## FASE 2: Entrenar Nuevos Activos
### Objetivo
Extender la arquitectura jerarquica a BTCUSD, GBPUSD, USDJPY.
### Pre-requisitos (VERIFICAR)
1. **Datos en BD MySQL:**
```sql
SELECT ticker, COUNT(*), MIN(date_agg), MAX(date_agg)
FROM tickers_agg_data
WHERE ticker IN ('X:BTCUSD', 'C:GBPUSD', 'C:USDJPY')
GROUP BY ticker;
```
2. **Minimo requerido:**
- 5 anos de datos (2019-2024)
- Minimo 500,000 registros por activo
### Sub-fases por Activo
#### 2.1 BTCUSD
```yaml
ticker_format: "X:BTCUSD" # Crypto usa prefijo X:
caracteristicas:
- Alta volatilidad (ATR ~$500-2000)
- 24/7 trading
- Correlacion baja con forex
```
**Comandos:**
```bash
# Paso 1: Entrenar Attention Models
python scripts/train_attention_model.py \
--symbols BTCUSD \
--timeframes 5m,15m \
--output models/attention/
# Paso 2: Entrenar Base Models
python scripts/train_symbol_timeframe_models.py \
--symbols BTCUSD \
--timeframes 5m,15m \
--output models/symbol_timeframe_models/
# Paso 3: Entrenar Metamodel
python scripts/train_metamodels.py \
--symbols BTCUSD \
--output models/metamodels/
# Paso 4: Backtest
python scripts/evaluate_hierarchical_v2.py \
--symbol BTCUSD \
--strategy conservative
```
#### 2.2 GBPUSD
```yaml
ticker_format: "C:GBPUSD"
caracteristicas:
- Volatilidad media (~60-100 pips diarios)
- Sesiones London y NY
- Correlacion alta con EURUSD
```
**Comandos:**
```bash
python scripts/train_attention_model.py --symbols GBPUSD
python scripts/train_symbol_timeframe_models.py --symbols GBPUSD
python scripts/train_metamodels.py --symbols GBPUSD
python scripts/evaluate_hierarchical_v2.py --symbol GBPUSD
```
#### 2.3 USDJPY
```yaml
ticker_format: "C:USDJPY"
caracteristicas:
- Volatilidad baja-media (~50-80 pips diarios)
- Activo en sesion Asia y NY
- Correlacion inversa con XAUUSD
```
**Comandos:**
```bash
python scripts/train_attention_model.py --symbols USDJPY
python scripts/train_symbol_timeframe_models.py --symbols USDJPY
python scripts/train_metamodels.py --symbols USDJPY
python scripts/evaluate_hierarchical_v2.py --symbol USDJPY
```
### Archivos a Modificar
| Archivo | Cambio | Razon |
|---------|--------|-------|
| `config/models.yaml` | Agregar hiperparametros por activo | Volatilidad diferente |
| `src/config/feature_flags.py` | Agregar SYMBOL_CONFIGS | Nuevos activos |
| `src/data/features.py` | Verificar escala de ATR | BTC vs Forex |
---
## FASE 3: Neural Gating Training
### Objetivo
Completar el entrenamiento de Neural Gating para TODOS los activos.
### Estado Actual
| Activo | Neural Gating | XGBoost Comparison |
|--------|---------------|-------------------|
| XAUUSD | Training Data Cached | Pendiente |
| EURUSD | NO | NO |
| BTCUSD | NO | NO |
| GBPUSD | NO | NO |
| USDJPY | NO | NO |
### Archivos Clave
| Archivo | Lineas | Proposito |
|---------|--------|-----------|
| `src/models/neural_gating_metamodel.py` | 853 | Arquitectura NN |
| `scripts/train_neural_gating.py` | 286 | Script completo |
| `scripts/train_neural_gating_simple.py` | 313 | Script simplificado |
### Arquitectura Neural Gating
```
Input Features (10):
├── pred_high_5m
├── pred_low_5m
├── pred_high_15m
├── pred_low_15m
├── attention_5m
├── attention_15m
├── attention_class_5m
├── attention_class_15m
├── ATR_ratio
└── volume_z
Networks:
├── GatingNetwork: [32, 16] -> alpha_high, alpha_low (0-1)
├── ResidualNetwork: [64, 32] -> residual_high, residual_low
└── ConfidenceNetwork: [32, 16] -> confidence (0-1)
Formula:
delta_final = alpha * pred_5m + (1-alpha) * pred_15m + residual + softplus()
```
### Comandos de Ejecucion
```bash
# Opcion 1: Script Completo (usa training_data.joblib existente)
python scripts/train_neural_gating.py \
--symbols XAUUSD,EURUSD \
--epochs 100 \
--compare
# Opcion 2: Script Simple (genera datos desde HierarchicalPipeline)
python scripts/train_neural_gating_simple.py \
--symbol XAUUSD \
--epochs 50 \
--compare
# Para TODOS los activos (post-Fase 2)
python scripts/train_neural_gating.py \
--symbols XAUUSD,EURUSD,BTCUSD,GBPUSD,USDJPY \
--output-dir models/metamodels_neural \
--epochs 100 \
--compare
```
### Metricas de Comparacion
| Metrica | Neural | XGBoost | Winner |
|---------|--------|---------|--------|
| MAE (avg) | TBD | TBD | TBD |
| R2 (avg) | TBD | TBD | TBD |
| Confidence Accuracy | TBD | TBD | TBD |
| Improvement over avg | TBD | TBD | TBD |
---
## FASE 4: Integracion con FastAPI
### Objetivo
Conectar los modelos ML con el API de produccion.
### Endpoints Existentes (Puerto 3083)
| Endpoint | Metodo | Proposito |
|----------|--------|-----------|
| `/health` | GET | Health check |
| `/predict/range` | POST | Prediccion delta high/low |
| `/generate/signal` | POST | Genera signal completa |
| `/api/ensemble/{symbol}` | POST | Signal ensemble |
| `/ws/signals` | WS | Signals en tiempo real |
### Archivos a Verificar/Modificar
| Archivo | Accion | Razon |
|---------|--------|-------|
| `src/api/main.py` | VERIFICAR | Endpoints existentes |
| `src/services/prediction_service.py` | MODIFICAR | Integrar Neural Gating |
| `src/services/hierarchical_predictor.py` | VERIFICAR | Pipeline de prediccion |
### Flujo de Integracion
```
1. Request: POST /predict/range {symbol: "XAUUSD", timeframe: "15m"}
2. HierarchicalPredictor.predict()
├── Load Attention Model -> attention_score, attention_class
├── Load Base Models -> pred_high_5m, pred_low_5m, pred_high_15m, pred_low_15m
├── Compute Context -> ATR_ratio, volume_z
├── DECISION: XGBoost OR Neural Gating?
│ │
│ ├── XGBoost: AssetMetamodel.predict()
│ │
│ └── Neural: NeuralGatingMetamodel.predict()
3. Response: {delta_high, delta_low, confidence, ...}
```
### Configuracion de Seleccion de Modelo
```yaml
# config/models.yaml
metamodel:
default: "xgboost" # o "neural_gating"
per_symbol:
XAUUSD: "neural_gating" # Si Neural supera XGBoost
EURUSD: "xgboost"
BTCUSD: "xgboost"
```
### Comandos de Verificacion
```bash
# Iniciar API
cd /home/isem/workspace-v1/projects/trading-platform/apps/ml-engine
uvicorn src.api.main:app --host 0.0.0.0 --port 3083 --reload
# Test endpoint
curl -X POST http://localhost:3083/predict/range \
-H "Content-Type: application/json" \
-d '{"symbol": "XAUUSD", "timeframe": "15m"}'
# Health check
curl http://localhost:3083/health
```
---
## FASE 5: Validacion Final
### Checklist de Validacion
#### 5.1 Walk-Forward
- [ ] XAUUSD Q3-2024: Expectancy > 0
- [ ] XAUUSD Q4-2024: Expectancy > 0
- [ ] EURUSD Q3-2024: Expectancy > 0
- [ ] EURUSD Q4-2024: Expectancy > 0
#### 5.2 Nuevos Activos
- [ ] BTCUSD: Todos los modelos entrenados
- [ ] BTCUSD: Backtest con expectancy > 0
- [ ] GBPUSD: Todos los modelos entrenados
- [ ] GBPUSD: Backtest con expectancy > 0
- [ ] USDJPY: Todos los modelos entrenados
- [ ] USDJPY: Backtest con expectancy > 0
#### 5.3 Neural Gating
- [ ] XAUUSD: Neural vs XGBoost comparado
- [ ] EURUSD: Neural vs XGBoost comparado
- [ ] Winner seleccionado por activo
#### 5.4 API
- [ ] /predict/range funcional para todos los activos
- [ ] /generate/signal funcional
- [ ] WebSocket /ws/signals funcional
- [ ] Backend Express puede comunicarse
---
## Dependencias Entre Fases
```
FASE 1 (Walk-Forward)
└── No tiene dependencias previas
FASE 2 (Nuevos Activos)
└── Depende de: Datos disponibles en BD MySQL
FASE 3 (Neural Gating)
├── XAUUSD/EURUSD: Sin dependencias (modelos existentes)
└── BTCUSD/GBPUSD/USDJPY: Depende de FASE 2
FASE 4 (FastAPI)
├── Depende de: FASE 3 (saber cual modelo usar)
└── Puede ejecutarse en paralelo con FASE 1-2
FASE 5 (Validacion)
└── Depende de: Todas las fases anteriores
```
---
## Estimacion de Recursos
### Tiempo de Entrenamiento (GPU RTX 5060 Ti)
| Modelo | Por Activo | Total (5 activos) |
|--------|------------|-------------------|
| Attention | ~10 min | ~50 min |
| Base Models | ~30 min | ~2.5 hrs |
| Metamodel XGBoost | ~5 min | ~25 min |
| Neural Gating | ~15 min | ~1.25 hrs |
| Backtest | ~30 min | ~2.5 hrs |
| **TOTAL** | ~1.5 hrs | ~7-8 hrs |
### Espacio en Disco
| Componente | Por Activo | Total |
|------------|------------|-------|
| Attention | ~2 MB | ~10 MB |
| Base Models | ~1.5 MB | ~7.5 MB |
| Metamodel | ~300 KB | ~1.5 MB |
| Neural Gating | ~50 KB | ~250 KB |
| Backtest Results | ~100 KB | ~500 KB |
| **TOTAL** | ~4 MB | ~20 MB |
---
## Proximos Pasos Inmediatos
1. **HOY:** Validar datos en BD para BTCUSD, GBPUSD, USDJPY
2. **EJECUTAR:** Walk-Forward para XAUUSD y EURUSD
3. **DECIDIR:** Orden de prioridad de nuevos activos
4. **ENTRENAR:** Primer activo nuevo (sugerido: GBPUSD por correlacion con EURUSD)
---
---
## VALIDACION DEL PLAN vs ANALISIS
### Requisitos Originales vs Cobertura
| Requisito | Cubierto | Fase | Detalle |
|-----------|----------|------|---------|
| Walk-forward optimization | SI | FASE 1 | Periodos Q3-2024, Q4-2024 definidos |
| Entrenar BTCUSD | SI | FASE 2.1 | Ticker: X:BTCUSD |
| Entrenar GBPUSD | SI | FASE 2.2 | Ticker: C:GBPUSD |
| Entrenar USDJPY | SI | FASE 2.3 | Ticker: C:USDJPY |
| Neural Gating Training | SI | FASE 3 | Scripts identificados |
| Integracion FastAPI | SI | FASE 4 | Endpoints documentados |
### Archivos Criticos Identificados
```
TIER 1 (Base - Sin dependencias):
├── config/database.yaml [EXISTE]
└── src/data/database.py [EXISTE]
TIER 2 (Entrenamiento Independiente):
├── scripts/train_attention_model.py [EXISTE]
│ └── Genera: models/attention/{symbol}_{tf}_attention/
├── scripts/train_symbol_timeframe_models.py [EXISTE]
│ └── Genera: models/symbol_timeframe_models/{symbol}_{tf}_{target}_h3.joblib
TIER 3 (Requiere TIER 2):
├── scripts/train_metamodels.py [EXISTE]
│ ├── Carga: models/attention/* [REQUERIDO]
│ ├── Carga: models/symbol_timeframe_models/* [REQUERIDO]
│ └── Genera: models/metamodels/{symbol}/
TIER 4 (Evaluacion - Requiere TIER 3):
├── scripts/evaluate_hierarchical_v2.py [EXISTE]
│ ├── Carga: models/attention/* [REQUERIDO]
│ ├── Carga: models/symbol_timeframe_models/* [REQUERIDO]
│ ├── Carga: models/metamodels/* [REQUERIDO]
│ └── Genera: models/backtest_results_v2/
TIER 5 (Neural Gating - Paralelo a TIER 3):
├── scripts/train_neural_gating.py [EXISTE]
│ ├── Carga: models/metamodels/trainer_metadata.joblib [REQUERIDO]
│ └── Genera: models/metamodels_neural/{symbol}/
├── scripts/train_neural_gating_simple.py [EXISTE]
│ ├── Carga: HierarchicalPipeline (modelos TIER 2-3)
│ └── Genera: models/metamodels_neural/{symbol}/
```
### Orden de Ejecucion por Nuevo Activo
```
Para entrenar BTCUSD/GBPUSD/USDJPY:
1. Verificar datos en BD:
SELECT COUNT(*), MIN(date_agg), MAX(date_agg)
FROM tickers_agg_data
WHERE ticker IN ('X:BTCUSD', 'C:GBPUSD', 'C:USDJPY');
2. Entrenar Attention (independiente):
python scripts/train_attention_model.py --symbols {SYMBOL}
3. Entrenar Base Models (independiente):
python scripts/train_symbol_timeframe_models.py --symbols {SYMBOL}
4. Entrenar Metamodel (requiere 2 y 3):
python scripts/train_metamodels.py --symbols {SYMBOL}
5. Evaluar (requiere 4):
python scripts/evaluate_hierarchical_v2.py --symbols {SYMBOL}
6. (Opcional) Neural Gating (requiere 4):
python scripts/train_neural_gating.py --symbols {SYMBOL}
```
### Datos Requeridos en BD MySQL
| Tabla | Campo | Tipo | Requerido |
|-------|-------|------|-----------|
| tickers_agg_data | date_agg | DATETIME | SI |
| tickers_agg_data | ticker | VARCHAR | SI |
| tickers_agg_data | open | DECIMAL | SI |
| tickers_agg_data | high | DECIMAL | SI |
| tickers_agg_data | low | DECIMAL | SI |
| tickers_agg_data | close | DECIMAL | SI |
| tickers_agg_data | volume | BIGINT | SI |
| tickers_agg_data | vwap | DECIMAL | Opcional |
**Minimos por Activo:**
- Registros: 50,000+ (5m data)
- Periodo: 2019-01-01 a 2024-12-31 (5 anos)
### Riesgos Identificados
| Riesgo | Probabilidad | Impacto | Mitigacion |
|--------|--------------|---------|------------|
| Datos insuficientes para BTCUSD/GBPUSD/USDJPY | MEDIA | ALTO | Verificar BD antes de entrenar |
| Neural Gating no supera XGBoost | BAJA | BAJO | Mantener XGBoost como fallback |
| Walk-forward muestra sobreajuste | MEDIA | ALTO | Ajustar filtros de estrategia |
| API no soporta nuevos activos | BAJA | MEDIO | Verificar endpoints existentes |
---
## MATRIZ DE TRAZABILIDAD
### Archivos Modificados vs Fases
| Archivo | FASE 1 | FASE 2 | FASE 3 | FASE 4 |
|---------|--------|--------|--------|--------|
| config/validation_oos.yaml | MODIFICAR | - | - | - |
| config/models.yaml | - | MODIFICAR | - | MODIFICAR |
| scripts/train_attention_model.py | - | EJECUTAR | - | - |
| scripts/train_symbol_timeframe_models.py | - | EJECUTAR | - | - |
| scripts/train_metamodels.py | - | EJECUTAR | - | - |
| scripts/train_neural_gating.py | - | - | EJECUTAR | - |
| scripts/evaluate_hierarchical_v2.py | EJECUTAR | EJECUTAR | - | - |
| src/services/prediction_service.py | - | - | - | MODIFICAR |
| src/api/main.py | - | - | - | VERIFICAR |
### Modelos Generados vs Fases
| Modelo | FASE 1 | FASE 2 | FASE 3 | FASE 4 |
|--------|--------|--------|--------|--------|
| models/attention/BTCUSD_* | - | GENERAR | - | - |
| models/attention/GBPUSD_* | - | GENERAR | - | - |
| models/attention/USDJPY_* | - | GENERAR | - | - |
| models/symbol_timeframe_models/BTCUSD_* | - | GENERAR | - | - |
| models/symbol_timeframe_models/GBPUSD_* | - | GENERAR | - | - |
| models/symbol_timeframe_models/USDJPY_* | - | GENERAR | - | - |
| models/metamodels/BTCUSD/ | - | GENERAR | - | - |
| models/metamodels/GBPUSD/ | - | GENERAR | - | - |
| models/metamodels/USDJPY/ | - | GENERAR | - | - |
| models/metamodels_neural/XAUUSD/ | - | - | GENERAR | - |
| models/metamodels_neural/EURUSD/ | - | - | GENERAR | - |
| models/backtest_results_v2/walk_forward/ | GENERAR | - | - | - |
---
**Documento generado automaticamente**
**ML-Specialist-Agent | Trading Platform**
**Version:** 1.1.0 | **Fecha:** 2026-01-07