docs: Add OQI-006 DATA-PIPELINE-SPEC.md and ML-TRAINING-ENHANCEMENT task docs
- Added DATA-PIPELINE-SPEC.md for ML signals module - Added TASK-2026-01-25-ML-TRAINING-ENHANCEMENT documentation Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
137a32fba9
commit
7bfcbb978e
@ -0,0 +1,258 @@
|
||||
# DATA-PIPELINE-SPEC: Especificación del Pipeline de Datos ML
|
||||
|
||||
**Versión:** 1.0.0
|
||||
**Fecha:** 2026-01-25
|
||||
**Estado:** IMPLEMENTADO
|
||||
**Tarea:** TASK-2026-01-25-ML-TRAINING-ENHANCEMENT (Fase 1.1)
|
||||
|
||||
---
|
||||
|
||||
## 1. RESUMEN
|
||||
|
||||
El módulo de Data Pipeline proporciona carga eficiente de datos, datasets de PyTorch y validación de calidad para el entrenamiento de modelos ML.
|
||||
|
||||
---
|
||||
|
||||
## 2. COMPONENTES IMPLEMENTADOS
|
||||
|
||||
### 2.1 TrainingDataLoader (`src/data/training_loader.py`)
|
||||
|
||||
```python
|
||||
from data import TrainingDataLoader
|
||||
|
||||
loader = TrainingDataLoader()
|
||||
|
||||
# Cargar datos por símbolo y rango de fechas
|
||||
df = loader.get_training_data('XAUUSD', '2023-01-01', '2024-12-31', '5m')
|
||||
|
||||
# Streaming para datasets grandes
|
||||
for batch in loader.stream_training_data('XAUUSD', '5m', batch_size=10000):
|
||||
process(batch)
|
||||
|
||||
# Obtener features y targets listos para ML
|
||||
X, y = loader.get_features_and_targets('XAUUSD', '5m', target_horizon=12)
|
||||
```
|
||||
|
||||
**Métodos principales:**
|
||||
| Método | Descripción |
|
||||
|--------|-------------|
|
||||
| `get_training_data()` | Carga datos en batches |
|
||||
| `stream_training_data()` | Streaming memory-efficient |
|
||||
| `get_features_and_targets()` | Features X y targets y |
|
||||
| `get_multi_symbol_data()` | Múltiples símbolos |
|
||||
|
||||
### 2.2 TradingDataset (`src/data/dataset.py`)
|
||||
|
||||
```python
|
||||
from data import TradingDataset, DatasetConfig
|
||||
|
||||
config = DatasetConfig(
|
||||
sequence_length=60,
|
||||
target_horizon=12,
|
||||
features=['returns', 'volatility', 'volume_ratio'],
|
||||
normalize=True
|
||||
)
|
||||
|
||||
dataset = TradingDataset(df, config)
|
||||
dataloader = dataset.create_dataloader(batch_size=32, shuffle=True)
|
||||
|
||||
for features, targets in dataloader:
|
||||
# features: (batch, seq_len, n_features)
|
||||
# targets: (batch, target_dim)
|
||||
pass
|
||||
```
|
||||
|
||||
**Características:**
|
||||
- Sequence length configurable
|
||||
- Normalización automática (z-score, min-max, robust)
|
||||
- Generación de features de retornos
|
||||
- Compatible con PyTorch DataLoader
|
||||
|
||||
### 2.3 DataValidator (`src/data/validators.py`)
|
||||
|
||||
```python
|
||||
from data import DataValidator, validate_trading_data
|
||||
|
||||
validator = DataValidator()
|
||||
|
||||
# Validaciones individuales
|
||||
gaps = validator.validate_gaps(df)
|
||||
outliers = validator.validate_outliers(df, ['close', 'volume'])
|
||||
consistency = validator.validate_consistency(df)
|
||||
|
||||
# Reporte completo
|
||||
report = validate_trading_data(df, 'XAUUSD', '5min')
|
||||
if not report.is_valid:
|
||||
for issue in report.issues:
|
||||
print(f"[{issue.severity}] {issue.message}")
|
||||
```
|
||||
|
||||
**Validaciones:**
|
||||
| Validación | Descripción |
|
||||
|------------|-------------|
|
||||
| `validate_gaps()` | Detecta gaps temporales |
|
||||
| `validate_outliers()` | Outliers estadísticos |
|
||||
| `validate_consistency()` | Integridad OHLC |
|
||||
| `validate_missing_values()` | Valores faltantes |
|
||||
|
||||
---
|
||||
|
||||
## 3. CONFIGURACIÓN
|
||||
|
||||
### 3.1 PostgreSQL
|
||||
|
||||
```yaml
|
||||
# config/database.yaml
|
||||
host: localhost
|
||||
port: 5432
|
||||
database: trading_platform
|
||||
user: trading_user
|
||||
password: trading_dev_2026
|
||||
schema: market_data
|
||||
tables:
|
||||
- ohlcv_5m
|
||||
- ohlcv_15m
|
||||
- ohlcv_historical # Datos migrados
|
||||
```
|
||||
|
||||
### 3.2 DatasetConfig
|
||||
|
||||
```python
|
||||
@dataclass
|
||||
class DatasetConfig:
|
||||
sequence_length: int = 60
|
||||
target_horizon: int = 12
|
||||
features: List[str] = field(default_factory=lambda: [
|
||||
'returns_1', 'returns_5', 'returns_10', 'returns_20',
|
||||
'volatility', 'volume_ratio', 'range_pct'
|
||||
])
|
||||
normalize: bool = True
|
||||
normalization_method: str = 'zscore' # 'zscore', 'minmax', 'robust'
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 4. MIGRACIÓN DE DATOS HISTÓRICOS
|
||||
|
||||
### 4.1 Script de Migración
|
||||
|
||||
```bash
|
||||
# Ubicación
|
||||
apps/data-service/scripts/migrate_historical_data.py
|
||||
|
||||
# Uso
|
||||
python migrate_historical_data.py --dry-run --limit 100 # Test
|
||||
python migrate_historical_data.py --file db.sql # Migrar
|
||||
python migrate_historical_data.py --batch-size 5000 # Custom batch
|
||||
```
|
||||
|
||||
### 4.2 Datos Disponibles
|
||||
|
||||
| Fuente | Registros | Período | Tickers |
|
||||
|--------|-----------|---------|---------|
|
||||
| db.sql | ~12.6M | 2015-2023 | 17 Forex + XAUUSD |
|
||||
| db_res.sql | ~12.6M | 2015-2023 | + Indicadores |
|
||||
|
||||
### 4.3 Schema Destino
|
||||
|
||||
```sql
|
||||
CREATE TABLE market_data.ohlcv_historical (
|
||||
id SERIAL PRIMARY KEY,
|
||||
ticker VARCHAR(20) NOT NULL,
|
||||
timestamp TIMESTAMPTZ NOT NULL,
|
||||
open DOUBLE PRECISION,
|
||||
high DOUBLE PRECISION,
|
||||
low DOUBLE PRECISION,
|
||||
close DOUBLE PRECISION,
|
||||
volume DOUBLE PRECISION,
|
||||
vwap DOUBLE PRECISION,
|
||||
-- Indicadores técnicos
|
||||
macd DOUBLE PRECISION,
|
||||
macd_signal DOUBLE PRECISION,
|
||||
macd_hist DOUBLE PRECISION,
|
||||
sma_10 DOUBLE PRECISION,
|
||||
sma_20 DOUBLE PRECISION,
|
||||
atr DOUBLE PRECISION,
|
||||
rsi DOUBLE PRECISION,
|
||||
-- ... más indicadores
|
||||
source VARCHAR(20) DEFAULT 'legacy_mysql'
|
||||
);
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 5. INTEGRACIÓN CON ML ENGINE
|
||||
|
||||
### 5.1 Flujo de Datos
|
||||
|
||||
```
|
||||
PostgreSQL (market_data)
|
||||
↓
|
||||
TrainingDataLoader.get_training_data()
|
||||
↓
|
||||
DataValidator.validate()
|
||||
↓
|
||||
TradingDataset.__init__()
|
||||
↓
|
||||
DataLoader (PyTorch)
|
||||
↓
|
||||
Model Training
|
||||
```
|
||||
|
||||
### 5.2 Uso en Pipelines
|
||||
|
||||
```python
|
||||
# En pipelines/phase2_pipeline.py
|
||||
from data import TrainingDataLoader, TradingDataset, DatasetConfig
|
||||
|
||||
loader = TrainingDataLoader()
|
||||
df = loader.get_training_data(symbol, start_date, end_date, timeframe)
|
||||
|
||||
config = DatasetConfig(sequence_length=100)
|
||||
dataset = TradingDataset(df, config)
|
||||
|
||||
# Train model
|
||||
for batch in dataset.create_dataloader(batch_size=256):
|
||||
features, targets = batch
|
||||
predictions = model(features)
|
||||
loss = criterion(predictions, targets)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 6. ARCHIVOS CREADOS
|
||||
|
||||
| Archivo | Líneas | Propósito |
|
||||
|---------|--------|-----------|
|
||||
| `src/data/training_loader.py` | ~300 | Carga de datos |
|
||||
| `src/data/dataset.py` | ~250 | Datasets PyTorch |
|
||||
| `src/data/validators.py` | ~200 | Validación |
|
||||
| `src/data/__init__.py` | ~50 | Exports |
|
||||
| `scripts/migrate_historical_data.py` | ~400 | Migración |
|
||||
|
||||
---
|
||||
|
||||
## 7. DEPENDENCIAS
|
||||
|
||||
```
|
||||
# requirements.txt (agregadas)
|
||||
torch>=2.0.0
|
||||
pandas>=2.0.0
|
||||
psycopg2-binary>=2.9.9
|
||||
tqdm>=4.66.0
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 8. PRÓXIMOS PASOS
|
||||
|
||||
1. ✅ Implementar TrainingDataLoader
|
||||
2. ✅ Implementar TradingDataset
|
||||
3. ✅ Implementar DataValidator
|
||||
4. ✅ Crear script de migración
|
||||
5. ⏳ Ejecutar migración de datos históricos
|
||||
6. ⏳ Validar datos migrados
|
||||
|
||||
---
|
||||
|
||||
**Estado:** IMPLEMENTADO (Fase 1.1 completada)
|
||||
@ -0,0 +1,165 @@
|
||||
# 01-CONTEXTO: Mejora Integral de Modelos ML para Trading
|
||||
|
||||
**Task ID:** TASK-2026-01-25-ML-TRAINING-ENHANCEMENT
|
||||
**Fase:** C - Contexto
|
||||
**Estado:** Completada
|
||||
**Fecha:** 2026-01-25
|
||||
|
||||
---
|
||||
|
||||
## 1. VINCULACIÓN
|
||||
|
||||
### Proyecto
|
||||
- **Nombre:** trading-platform
|
||||
- **Módulo:** ml-engine (OQI-006)
|
||||
- **Epic:** OQI-006-ml-signals
|
||||
|
||||
### Origen
|
||||
- **Tipo:** plan-original
|
||||
- **Solicitante:** Usuario
|
||||
- **Prioridad:** P0 (Crítica)
|
||||
|
||||
---
|
||||
|
||||
## 2. CLASIFICACIÓN
|
||||
|
||||
| Aspecto | Valor |
|
||||
|---------|-------|
|
||||
| **Tipo de Tarea** | analysis + feature |
|
||||
| **Modo SIMCO** | @ANALYSIS (fases C+A+P) seguido de @FULL |
|
||||
| **Alcance** | Multi-subtarea con jerarquía de N niveles |
|
||||
| **Complejidad** | Alta (requiere diseño arquitectónico) |
|
||||
|
||||
---
|
||||
|
||||
## 3. FUENTES DE CONOCIMIENTO IDENTIFICADAS
|
||||
|
||||
### 3.1 Proyecto Antiguo (WorkspaceOld/trading)
|
||||
```
|
||||
C:\Empresas\WorkspaceOld\Projects\trading\
|
||||
├── ForexPredictorCharts/ # Frontend + Backend
|
||||
├── trading_api/ # API REST Python
|
||||
├── trading_bot_meta_data/ # Datos + Indicadores (22)
|
||||
├── trading_bot_meta_ws/ # XTB Broker WebSocket
|
||||
├── trading_bot_meta_ws_2/ # Polygon.io CLI
|
||||
├── trading_bot_meta_model_mt.zip # Modelos entrenados (738 MB)
|
||||
└── db*.sql # Datos históricos (5.6 GB total)
|
||||
```
|
||||
|
||||
**Conocimiento Clave Extraído:**
|
||||
- Arquitectura XGBoost + GRU + Metamodelos
|
||||
- 22 indicadores técnicos (MACD, RSI, SAR, ATR, MFI, OBV, etc.)
|
||||
- Predicción de high/close/low con horizontes 0,1,2,4
|
||||
- Ventanas rodantes (15m, 60m, 120m)
|
||||
- Sin mecanismos de atención explícitos
|
||||
|
||||
### 3.2 Proyecto Actual (trading-platform)
|
||||
```
|
||||
C:\Empresas\ISEM\workspace-v2\projects\trading-platform\
|
||||
├── apps/ml-engine/ # Python ML Service
|
||||
│ ├── src/models/ # 15 modelos implementados
|
||||
│ ├── src/training/ # 8 módulos de entrenamiento
|
||||
│ ├── src/pipelines/ # Walk-forward, hierarchical
|
||||
│ └── models/attention/ # 12 modelos Level 0 entrenados
|
||||
└── docs/02-definicion-modulos/OQI-006-ml-signals/
|
||||
```
|
||||
|
||||
**Estado Actual:**
|
||||
- 15 modelos ML (AMD, Range, Signal, Attention, etc.)
|
||||
- Arquitectura jerárquica Level 0/1/2
|
||||
- 469,217 bars de datos (6 símbolos, 1 año)
|
||||
- 12 modelos de atención entrenados
|
||||
- PostgreSQL como base de datos
|
||||
- 95% MVP completado
|
||||
|
||||
---
|
||||
|
||||
## 4. OBJETIVO DE LA TAREA
|
||||
|
||||
### 4.1 Objetivo Principal
|
||||
Diseñar e implementar una arquitectura de ML avanzada que logre **80% de efectividad mínima** en las operaciones de trading ejecutadas por el LLM.
|
||||
|
||||
### 4.2 Objetivos Específicos
|
||||
|
||||
1. **Diseñar 3-5 estrategias diferentes** con features/targets especializados
|
||||
2. **Implementar mecanismos de atención** enfocados en variación de precio
|
||||
3. **Entrenar modelos especializados por activo** (6+ símbolos)
|
||||
4. **Crear metamodelos** que sinteticen predicciones
|
||||
5. **Integrar LLM** para decisiones basadas en ensemble de predicciones
|
||||
6. **Implementar atención agnóstica** (sin importar horario o activo)
|
||||
|
||||
### 4.3 Criterios de Éxito
|
||||
|
||||
| Métrica | Objetivo | Actual |
|
||||
|---------|----------|--------|
|
||||
| Efectividad operaciones | ≥80% | ~65% |
|
||||
| Precision predicción | ≥75% | ~70% |
|
||||
| Win rate LLM | ≥75% | N/A |
|
||||
| Sharpe ratio backtesting | ≥1.5 | N/A |
|
||||
| MAE range prediction | ≤0.5% | 0.1-2% |
|
||||
|
||||
---
|
||||
|
||||
## 5. RESTRICCIONES Y CONSIDERACIONES
|
||||
|
||||
### 5.1 Sin Restricción de Cómputo
|
||||
- GPU disponible: NVIDIA RTX 5060 Ti (16GB VRAM)
|
||||
- Se pueden usar arquitecturas intensivas (Transformers, Deep Learning)
|
||||
- Tiempo de entrenamiento no es limitante
|
||||
|
||||
### 5.2 Restricciones de Datos
|
||||
- Datos actuales: 1 año (469K bars)
|
||||
- Proyecto antiguo: 10+ años de datos (MySQL dumps)
|
||||
- Migración de datos históricos requerida
|
||||
|
||||
### 5.3 Consideraciones de Arquitectura
|
||||
- Mantener compatibilidad con API FastAPI existente
|
||||
- Preservar integración LLM Agent actual
|
||||
- Estructura de modelos jerárquica (Level 0/1/2/3)
|
||||
|
||||
---
|
||||
|
||||
## 6. DOCUMENTOS SIMCO CARGADOS
|
||||
|
||||
| Documento | Propósito |
|
||||
|-----------|-----------|
|
||||
| `@CAPVED` | Ciclo de vida obligatorio |
|
||||
| `@SIMCO-TAREA` | Proceso detallado |
|
||||
| `@EDICION-SEGURA` | Restricciones de edición |
|
||||
| `DIRECTIVA-ML-SERVICES.md` | Estándares ML Python |
|
||||
| `DIRECTIVA-ARQUITECTURA-HIBRIDA.md` | Separación TypeScript/Python |
|
||||
|
||||
---
|
||||
|
||||
## 7. DOCUMENTACIÓN A PURGAR
|
||||
|
||||
### 7.1 Identificadas para Eliminación
|
||||
| Archivo | Razón |
|
||||
|---------|-------|
|
||||
| `docs/00-notas/NOTA-DISCREPANCIA-PUERTOS-2025-12-08.md` | Nota temporal obsoleta |
|
||||
|
||||
### 7.2 Identificadas para Consolidación
|
||||
| Archivos | Acción |
|
||||
|----------|--------|
|
||||
| Múltiples ARQUITECTURA-*.md en docs/01-arquitectura/ | Consolidar en documento principal |
|
||||
|
||||
### 7.3 Identificadas para Actualización
|
||||
| Archivo | Actualización Requerida |
|
||||
|---------|------------------------|
|
||||
| `SRS-DOCUMENTO-REQUERIMIENTOS.md` | Agregar nuevos RF de ML |
|
||||
| `OQI-006/_MAP.md` | Agregar nuevas estrategias |
|
||||
|
||||
---
|
||||
|
||||
## 8. PRÓXIMOS PASOS
|
||||
|
||||
1. ✅ **Contexto completado** → Pasar a Análisis
|
||||
2. ⏳ **Análisis detallado** de mejoras por estrategia
|
||||
3. ⏳ **Planeación** con subtareas en N niveles
|
||||
4. ⏳ **Validación** del plan
|
||||
5. ⏳ **Ejecución** delegada a subagentes
|
||||
6. ⏳ **Documentación** final
|
||||
|
||||
---
|
||||
|
||||
**Siguiente Fase:** 02-ANALISIS.md
|
||||
@ -0,0 +1,687 @@
|
||||
# 02-ANÁLISIS: Mejora Integral de Modelos ML para Trading
|
||||
|
||||
**Task ID:** TASK-2026-01-25-ML-TRAINING-ENHANCEMENT
|
||||
**Fase:** A - Análisis
|
||||
**Estado:** Completada
|
||||
**Fecha:** 2026-01-25
|
||||
|
||||
---
|
||||
|
||||
## 1. COMPORTAMIENTO DESEADO (Perspectiva de Negocio)
|
||||
|
||||
### 1.1 Visión del Sistema
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────────────────────────┐
|
||||
│ SISTEMA ML DE TRADING OBJETIVO │
|
||||
├─────────────────────────────────────────────────────────────────────────────────┤
|
||||
│ │
|
||||
│ [Datos de Mercado] → [5 Estrategias ML] → [Metamodelo Ensemble] → [LLM Agent] │
|
||||
│ ↓ ↓ │
|
||||
│ [Atención sobre [Decisión │
|
||||
│ Variación Precio] de Trading] │
|
||||
│ ↓ │
|
||||
│ [Ejecución MT4] │
|
||||
│ ↓ │
|
||||
│ [80%+ Efectividad] │
|
||||
│ │
|
||||
└─────────────────────────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
### 1.2 Comportamientos Esperados
|
||||
|
||||
| ID | Comportamiento | Descripción |
|
||||
|----|----------------|-------------|
|
||||
| B1 | Predicción Multi-Estrategia | El sistema genera predicciones desde 5 estrategias independientes |
|
||||
| B2 | Atención Dinámica | El modelo aprende a enfocarse en patrones de variación de precio relevantes |
|
||||
| B3 | Especialización por Activo | Cada activo tiene su propio modelo entrenado |
|
||||
| B4 | Síntesis Ensemble | Un metamodelo combina las predicciones de todas las estrategias |
|
||||
| B5 | Decisión LLM Informada | El LLM recibe señales procesadas para tomar decisiones |
|
||||
| B6 | Agnóstico Temporal | Las predicciones no dependen del horario específico |
|
||||
| B7 | Efectividad Verificable | Cada operación se puede rastrear a la predicción que la generó |
|
||||
|
||||
---
|
||||
|
||||
## 2. ANÁLISIS DE ARQUITECTURAS EXISTENTES
|
||||
|
||||
### 2.1 Proyecto Antiguo (WorkspaceOld/trading)
|
||||
|
||||
#### Fortalezas
|
||||
- **Ensemble XGBoost + GRU**: Combina gradiente boosting con redes recurrentes
|
||||
- **22 indicadores técnicos** bien calibrados
|
||||
- **Horizontes múltiples** (0, 1, 2, 4 períodos)
|
||||
- **Predicción triple** (high, close, low)
|
||||
- **Datos históricos extensos** (10+ años)
|
||||
|
||||
#### Debilidades
|
||||
- Sin mecanismos de atención explícitos
|
||||
- Modelos no especializados por activo
|
||||
- Sin integración LLM
|
||||
- Arquitectura monolítica
|
||||
|
||||
#### Conocimiento a Migrar
|
||||
```yaml
|
||||
indicadores_tecnicos:
|
||||
momentum:
|
||||
- MACD (12/26/9)
|
||||
- RSI (periodo 14)
|
||||
- ROC (Rate of Change)
|
||||
volatilidad:
|
||||
- ATR (periodo 10)
|
||||
- Bollinger Bands
|
||||
volumen:
|
||||
- OBV (On-Balance Volume)
|
||||
- MFI (Money Flow Index, periodo 14)
|
||||
- CMF (Chaikin Money Flow, periodo 20)
|
||||
- volume_z (Z-score, rolling 20)
|
||||
- volume_anomaly (binario)
|
||||
estructura:
|
||||
- SAR (Parabolic SAR)
|
||||
- Fractal_Alcista (5-bar)
|
||||
- Fractal_Bajista (5-bar)
|
||||
- AD (Accumulation/Distribution)
|
||||
medias:
|
||||
- SMA_10, SMA_20
|
||||
|
||||
ventanas_rodantes:
|
||||
- 15m (3 velas de 5min)
|
||||
- 60m (12 velas de 5min)
|
||||
- 120m (24 velas de 5min)
|
||||
|
||||
targets:
|
||||
- target_pct_hour: (close_hour_final - close) / close
|
||||
```
|
||||
|
||||
### 2.2 Proyecto Actual (trading-platform)
|
||||
|
||||
#### Fortalezas
|
||||
- **Arquitectura jerárquica** (Level 0/1/2)
|
||||
- **Mecanismos de atención** implementados (Level 0)
|
||||
- **15 modelos especializados**
|
||||
- **Integración LLM** existente
|
||||
- **Backtesting engine** funcional
|
||||
- **Walk-forward validation**
|
||||
|
||||
#### Debilidades
|
||||
- Solo 1 año de datos (469K bars)
|
||||
- Level 2 (AssetMetamodel) incompleto
|
||||
- Accuracy actual ~65-70%
|
||||
- Estrategia única (no diversificada)
|
||||
|
||||
#### Modelos Existentes a Mejorar
|
||||
```yaml
|
||||
level_0_attention:
|
||||
- AttentionScoreModel (flujo de mercado)
|
||||
- 12 modelos entrenados por símbolo+timeframe
|
||||
|
||||
level_1_prediction:
|
||||
- AMDDetector (fases Smart Money)
|
||||
- RangePredictor v1/v2 (high/low)
|
||||
- SignalGenerator (señales trading)
|
||||
- EnhancedRangePredictor
|
||||
- TPSLClassifier
|
||||
|
||||
level_2_synthesis:
|
||||
- AssetMetamodel (PENDIENTE)
|
||||
- DualHorizonEnsemble
|
||||
- StrategyEnsemble
|
||||
- NeuralGatingMetamodel
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 3. DISEÑO DE 5 ESTRATEGIAS DE MODELOS
|
||||
|
||||
### 3.1 Estrategia 1: PRICE-VARIATION-ATTENTION (PVA)
|
||||
|
||||
**Enfoque:** Atención sobre variación de precio pura, agnóstica al tiempo y activo.
|
||||
|
||||
```yaml
|
||||
nombre: "Price Variation Attention"
|
||||
codigo: "PVA"
|
||||
|
||||
arquitectura:
|
||||
tipo: "Transformer Encoder + XGBoost Head"
|
||||
attention_mechanism: "Self-Attention sobre secuencias de retornos"
|
||||
|
||||
features:
|
||||
primarios:
|
||||
- returns_1: (close[t] - close[t-1]) / close[t-1]
|
||||
- returns_5: (close[t] - close[t-5]) / close[t-5]
|
||||
- returns_10: (close[t] - close[t-10]) / close[t-10]
|
||||
- returns_20: (close[t] - close[t-20]) / close[t-20]
|
||||
derivados:
|
||||
- acceleration: returns_1[t] - returns_1[t-1]
|
||||
- volatility_returns: std(returns_5, window=20)
|
||||
- skewness_returns: skew(returns_10, window=50)
|
||||
- kurtosis_returns: kurt(returns_10, window=50)
|
||||
attention_scores:
|
||||
- attention_weight_1 a attention_weight_seq_len (aprendidos)
|
||||
|
||||
targets:
|
||||
- future_return_1h: (close[t+12] - close[t]) / close[t] # 12 velas de 5min = 1h
|
||||
- future_volatility: std(returns próximos 12 períodos)
|
||||
- direction_confidence: softmax([-1, 0, +1])
|
||||
|
||||
entrenamiento:
|
||||
sequence_length: 100 # velas de contexto
|
||||
batch_size: 256
|
||||
learning_rate: 0.0001
|
||||
epochs: 100
|
||||
early_stopping: 10
|
||||
|
||||
modelo_por_activo: true
|
||||
ignorar_horario: true # No usar features de sesión
|
||||
```
|
||||
|
||||
### 3.2 Estrategia 2: MOMENTUM-REGIME-DETECTION (MRD)
|
||||
|
||||
**Enfoque:** Detectar régimen de mercado (tendencia/rango) y predecir continuación.
|
||||
|
||||
```yaml
|
||||
nombre: "Momentum Regime Detection"
|
||||
codigo: "MRD"
|
||||
|
||||
arquitectura:
|
||||
tipo: "Hidden Markov Model + LSTM + XGBoost"
|
||||
hmm_states: 3 # Trend Up, Range, Trend Down
|
||||
|
||||
features:
|
||||
momentum:
|
||||
- rsi_14, rsi_28
|
||||
- macd, macd_signal, macd_histogram
|
||||
- roc_5, roc_10, roc_20
|
||||
- adx, +di, -di
|
||||
tendencia:
|
||||
- ema_crossover_9_21: sign(ema_9 - ema_21)
|
||||
- ema_crossover_21_50: sign(ema_21 - ema_50)
|
||||
- price_vs_ema_200: (close - ema_200) / ema_200
|
||||
regimen:
|
||||
- hmm_state: [0, 1, 2] # Detectado por HMM
|
||||
- regime_probability: softmax de HMM
|
||||
- regime_duration: velas desde último cambio
|
||||
|
||||
targets:
|
||||
- next_regime: estado HMM en t+12
|
||||
- regime_duration_prediction: cuántas velas durará el régimen
|
||||
- momentum_continuation: bool (momentum sigue en misma dirección)
|
||||
|
||||
entrenamiento:
|
||||
hmm_iterations: 100
|
||||
lstm_units: 128
|
||||
dropout: 0.3
|
||||
|
||||
modelo_por_activo: true
|
||||
incluir_sesion: false # Régimen es agnóstico
|
||||
```
|
||||
|
||||
### 3.3 Estrategia 3: VOLATILITY-BREAKOUT-PREDICTOR (VBP)
|
||||
|
||||
**Enfoque:** Predecir breakouts basados en compresión de volatilidad.
|
||||
|
||||
```yaml
|
||||
nombre: "Volatility Breakout Predictor"
|
||||
codigo: "VBP"
|
||||
|
||||
arquitectura:
|
||||
tipo: "CNN 1D + Attention + XGBoost"
|
||||
cnn_filters: [32, 64, 128]
|
||||
kernel_sizes: [3, 5, 7]
|
||||
|
||||
features:
|
||||
volatilidad:
|
||||
- atr_5, atr_10, atr_20, atr_50
|
||||
- bb_width: (bb_upper - bb_lower) / bb_middle
|
||||
- bb_squeeze: bool(bb_width < bb_width.rolling(50).quantile(0.2))
|
||||
- keltner_squeeze: bb dentro de keltner channels
|
||||
- historical_volatility: std(returns, window=20) * sqrt(252)
|
||||
rango:
|
||||
- hl_range: (high - low) / close
|
||||
- hl_range_vs_atr: hl_range / atr_10
|
||||
- compression_score: min(hl_range últimas 10 velas) / max(hl_range últimas 50)
|
||||
expansion:
|
||||
- expansion_imminent: compression_score < 0.3
|
||||
- breakout_direction_bias: sign(close - open de la compresión)
|
||||
|
||||
targets:
|
||||
- breakout_next_12: bool(max(high[t:t+12]) - min(low[t:t+12]) > 2*atr)
|
||||
- breakout_direction: [-1, 0, +1] (down, no breakout, up)
|
||||
- breakout_magnitude: (high_max - low_min) / close si breakout
|
||||
|
||||
entrenamiento:
|
||||
imbalanced_sampling: true # Breakouts son raros
|
||||
oversample_breakouts: 3x
|
||||
|
||||
modelo_por_activo: true
|
||||
```
|
||||
|
||||
### 3.4 Estrategia 4: MARKET-STRUCTURE-ANALYSIS (MSA)
|
||||
|
||||
**Enfoque:** Análisis de estructura de mercado (ICT/SMC concepts).
|
||||
|
||||
```yaml
|
||||
nombre: "Market Structure Analysis"
|
||||
codigo: "MSA"
|
||||
|
||||
arquitectura:
|
||||
tipo: "Graph Neural Network + XGBoost"
|
||||
gnn_layers: 4
|
||||
node_features: swing_points
|
||||
|
||||
features:
|
||||
estructura:
|
||||
- swing_high: high mayor que 2 altos anteriores y posteriores
|
||||
- swing_low: low menor que 2 bajos anteriores y posteriores
|
||||
- higher_high: swing_high > swing_high anterior
|
||||
- lower_low: swing_low < swing_low anterior
|
||||
- bos_up: Break of Structure alcista
|
||||
- bos_down: Break of Structure bajista
|
||||
- choch: Change of Character (cambio de tendencia)
|
||||
zonas:
|
||||
- order_block_bullish: última vela bajista antes de BOS alcista
|
||||
- order_block_bearish: última vela alcista antes de BOS bajista
|
||||
- fvg_bullish: Fair Value Gap alcista
|
||||
- fvg_bearish: Fair Value Gap bajista
|
||||
- liquidity_sweep: barrido de liquidez
|
||||
posicion:
|
||||
- price_vs_poi: distancia a Point of Interest más cercano
|
||||
- poi_type: [order_block, fvg, swing, none]
|
||||
- premium_discount: precio en zona premium (>50%) o discount (<50%)
|
||||
|
||||
targets:
|
||||
- next_bos_direction: [-1, +1] próximo BOS
|
||||
- poi_reaction: bool (precio reacciona al POI)
|
||||
- structure_continuation: bool (estructura continúa)
|
||||
|
||||
entrenamiento:
|
||||
graph_attention: true
|
||||
node_aggregation: "mean"
|
||||
|
||||
modelo_por_activo: true
|
||||
```
|
||||
|
||||
### 3.5 Estrategia 5: MULTI-TIMEFRAME-SYNTHESIS (MTS)
|
||||
|
||||
**Enfoque:** Síntesis de señales de múltiples timeframes con ponderación dinámica.
|
||||
|
||||
```yaml
|
||||
nombre: "Multi-Timeframe Synthesis"
|
||||
codigo: "MTS"
|
||||
|
||||
arquitectura:
|
||||
tipo: "Hierarchical Attention Network"
|
||||
timeframes: [5m, 15m, 1h, 4h]
|
||||
attention_per_tf: true
|
||||
|
||||
features_por_timeframe:
|
||||
5m:
|
||||
- all_base_features (momentum, volatility, volume)
|
||||
- micro_structure (last 50 bars)
|
||||
15m:
|
||||
- aggregated_features
|
||||
- trend_alignment_5m
|
||||
1h:
|
||||
- session_context
|
||||
- intraday_trend
|
||||
4h:
|
||||
- swing_structure
|
||||
- major_trend
|
||||
|
||||
synthesis:
|
||||
- tf_alignment_score: concordancia entre timeframes
|
||||
- dominant_tf: timeframe con señal más fuerte
|
||||
- conflict_score: nivel de conflicto entre TFs
|
||||
|
||||
targets:
|
||||
- unified_direction: [-1, 0, +1] consenso de TFs
|
||||
- confidence_by_alignment: 0-1 basado en concordancia
|
||||
- optimal_entry_tf: cuál TF da mejor entry
|
||||
|
||||
entrenamiento:
|
||||
hierarchical_loss: true
|
||||
tf_weights: learnable
|
||||
|
||||
modelo_por_activo: true
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 4. ARQUITECTURA DE ATENCIÓN PROPUESTA
|
||||
|
||||
### 4.1 Price-Focused Attention Mechanism
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────────────────────────┐
|
||||
│ PRICE-FOCUSED ATTENTION ARCHITECTURE │
|
||||
├─────────────────────────────────────────────────────────────────────────────────┤
|
||||
│ │
|
||||
│ Input: Secuencia de Retornos [r_1, r_2, ..., r_T] │
|
||||
│ ↓ │
|
||||
│ ┌─────────────────────────────────────────────────────────────────────────┐ │
|
||||
│ │ Positional Encoding (Learnable) │ │
|
||||
│ │ SIN usar información temporal real │ │
|
||||
│ │ Solo posición relativa en secuencia │ │
|
||||
│ └─────────────────────────────────────────────────────────────────────────┘ │
|
||||
│ ↓ │
|
||||
│ ┌─────────────────────────────────────────────────────────────────────────┐ │
|
||||
│ │ Self-Attention Layer x 4 │ │
|
||||
│ │ │ │
|
||||
│ │ Q = W_q * X K = W_k * X V = W_v * X │ │
|
||||
│ │ │ │
|
||||
│ │ Attention(Q, K, V) = softmax(QK^T / sqrt(d_k)) * V │ │
|
||||
│ │ │ │
|
||||
│ │ Multi-Head: 8 heads, d_model=256, d_k=32 │ │
|
||||
│ └─────────────────────────────────────────────────────────────────────────┘ │
|
||||
│ ↓ │
|
||||
│ ┌─────────────────────────────────────────────────────────────────────────┐ │
|
||||
│ │ Feed-Forward Network │ │
|
||||
│ │ FFN(x) = ReLU(xW_1 + b_1)W_2 + b_2 │ │
|
||||
│ │ d_ff = 1024 │ │
|
||||
│ └─────────────────────────────────────────────────────────────────────────┘ │
|
||||
│ ↓ │
|
||||
│ ┌─────────────────────────────────────────────────────────────────────────┐ │
|
||||
│ │ Attention Score Extraction │ │
|
||||
│ │ scores = mean(attention_weights, dim=heads) │ │
|
||||
│ │ top_k_positions = argsort(scores)[-k:] │ │
|
||||
│ └─────────────────────────────────────────────────────────────────────────┘ │
|
||||
│ ↓ │
|
||||
│ ┌─────────────────────────────────────────────────────────────────────────┐ │
|
||||
│ │ XGBoost Prediction Head │ │
|
||||
│ │ Input: [attended_features, attention_scores, raw] │ │
|
||||
│ │ Output: [direction, magnitude, confidence] │ │
|
||||
│ └─────────────────────────────────────────────────────────────────────────┘ │
|
||||
│ │
|
||||
└─────────────────────────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
### 4.2 Características Clave
|
||||
|
||||
1. **Sin Información Temporal Explícita:** No usa features de hora/día/sesión
|
||||
2. **Solo Variación de Precio:** Features basados únicamente en retornos y derivados
|
||||
3. **Atención Aprendida:** El modelo aprende qué variaciones son relevantes
|
||||
4. **Agnóstico al Activo:** Arquitectura idéntica para todos los activos (pesos diferentes)
|
||||
|
||||
---
|
||||
|
||||
## 5. ARQUITECTURA DE METAMODELO ENSEMBLE
|
||||
|
||||
### 5.1 Neural Gating Metamodel
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────────────────────────┐
|
||||
│ NEURAL GATING METAMODEL │
|
||||
├─────────────────────────────────────────────────────────────────────────────────┤
|
||||
│ │
|
||||
│ Inputs: │
|
||||
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
|
||||
│ │ PVA │ │ MRD │ │ VBP │ │ MSA │ │ MTS │ │
|
||||
│ │ pred,conf│ │ pred,conf│ │ pred,conf│ │ pred,conf│ │ pred,conf│ │
|
||||
│ └────┬─────┘ └────┬─────┘ └────┬─────┘ └────┬─────┘ └────┬─────┘ │
|
||||
│ │ │ │ │ │ │
|
||||
│ └────────────┴────────────┴────────────┴────────────┘ │
|
||||
│ ↓ │
|
||||
│ ┌─────────────────────────────────────────────────────────────────────────┐ │
|
||||
│ │ Gating Network │ │
|
||||
│ │ Input: [all_predictions, all_confidences, market_ctx] │ │
|
||||
│ │ Output: weights = softmax(gate_logits) │ │
|
||||
│ │ Architecture: 3-layer MLP (256, 128, 5) │ │
|
||||
│ └─────────────────────────────────────────────────────────────────────────┘ │
|
||||
│ ↓ │
|
||||
│ ┌─────────────────────────────────────────────────────────────────────────┐ │
|
||||
│ │ Weighted Ensemble │ │
|
||||
│ │ final_pred = sum(weights * predictions) │ │
|
||||
│ │ final_conf = weighted_confidence(weights, confs) │ │
|
||||
│ └─────────────────────────────────────────────────────────────────────────┘ │
|
||||
│ ↓ │
|
||||
│ ┌─────────────────────────────────────────────────────────────────────────┐ │
|
||||
│ │ Output │ │
|
||||
│ │ - direction: [-1, 0, +1] │ │
|
||||
│ │ - magnitude: expected % move │ │
|
||||
│ │ - confidence: 0-1 │ │
|
||||
│ │ - strategy_attribution: which strategy dominated │ │
|
||||
│ └─────────────────────────────────────────────────────────────────────────┘ │
|
||||
│ │
|
||||
└─────────────────────────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
### 5.2 Lógica de Gating
|
||||
|
||||
```python
|
||||
class NeuralGatingMetamodel:
|
||||
def forward(self, strategy_outputs, market_context):
|
||||
# Concatenar outputs de todas las estrategias
|
||||
features = torch.cat([
|
||||
strategy_outputs['PVA'], # [pred, conf]
|
||||
strategy_outputs['MRD'],
|
||||
strategy_outputs['VBP'],
|
||||
strategy_outputs['MSA'],
|
||||
strategy_outputs['MTS'],
|
||||
market_context, # volatility, regime, etc.
|
||||
], dim=-1)
|
||||
|
||||
# Gating network decide pesos
|
||||
gate_logits = self.gate_network(features)
|
||||
weights = F.softmax(gate_logits, dim=-1)
|
||||
|
||||
# Ensemble ponderado
|
||||
predictions = torch.stack([
|
||||
strategy_outputs[s]['prediction'] for s in STRATEGIES
|
||||
], dim=-1)
|
||||
|
||||
final_prediction = (weights * predictions).sum(dim=-1)
|
||||
|
||||
return {
|
||||
'prediction': final_prediction,
|
||||
'weights': weights,
|
||||
'confidence': self.confidence_head(features),
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 6. INTEGRACIÓN LLM PROPUESTA
|
||||
|
||||
### 6.1 Flujo de Decisión
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────────────────────────┐
|
||||
│ LLM DECISION INTEGRATION │
|
||||
├─────────────────────────────────────────────────────────────────────────────────┤
|
||||
│ │
|
||||
│ 1. ML Engine genera predicciones │
|
||||
│ ↓ │
|
||||
│ 2. Metamodel sintetiza señal final │
|
||||
│ ↓ │
|
||||
│ 3. Signal Formatter prepara prompt para LLM │
|
||||
│ ↓ │
|
||||
│ 4. LLM analiza contexto + predicciones │
|
||||
│ ↓ │
|
||||
│ 5. LLM decide: TRADE / NO_TRADE / WAIT │
|
||||
│ ↓ │
|
||||
│ 6. Si TRADE: LLM define entry, SL, TP │
|
||||
│ ↓ │
|
||||
│ 7. Trading Agent ejecuta │
|
||||
│ ↓ │
|
||||
│ 8. Signal Logger registra resultado │
|
||||
│ ↓ │
|
||||
│ 9. Fine-tuning loop (feedback) │
|
||||
│ │
|
||||
└─────────────────────────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
### 6.2 Prompt Structure para LLM
|
||||
|
||||
```python
|
||||
TRADING_DECISION_PROMPT = """
|
||||
## Market Analysis for {symbol}
|
||||
|
||||
### ML Predictions (Ensemble)
|
||||
- Direction: {direction} (confidence: {confidence}%)
|
||||
- Predicted Move: {magnitude}%
|
||||
- Dominant Strategy: {dominant_strategy}
|
||||
- Strategy Agreement: {agreement_score}/5
|
||||
|
||||
### Individual Strategy Signals
|
||||
| Strategy | Direction | Confidence | Weight |
|
||||
|----------|-----------|------------|--------|
|
||||
{strategy_table}
|
||||
|
||||
### Current Market Context
|
||||
- Volatility Regime: {volatility_regime}
|
||||
- Market Structure: {market_structure}
|
||||
- Key Levels: {key_levels}
|
||||
|
||||
### Risk Parameters
|
||||
- Account Balance: {balance}
|
||||
- Max Risk per Trade: {max_risk}%
|
||||
- Current Open Positions: {open_positions}
|
||||
|
||||
### Task
|
||||
Analyze the above information and decide:
|
||||
1. Should we take this trade? (YES/NO/WAIT)
|
||||
2. If YES, provide:
|
||||
- Entry price (or MARKET)
|
||||
- Stop Loss level
|
||||
- Take Profit level(s)
|
||||
- Position size (% of balance)
|
||||
3. Reasoning (brief)
|
||||
|
||||
Response Format:
|
||||
DECISION: [YES|NO|WAIT]
|
||||
ENTRY: [price]
|
||||
STOP_LOSS: [price]
|
||||
TAKE_PROFIT: [price1, price2]
|
||||
POSITION_SIZE: [%]
|
||||
REASONING: [text]
|
||||
"""
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 7. OBJETOS IMPACTADOS
|
||||
|
||||
### 7.1 Base de Datos (PostgreSQL)
|
||||
|
||||
| Schema | Tabla | Cambio |
|
||||
|--------|-------|--------|
|
||||
| ml | model_registry | Agregar campos para 5 estrategias |
|
||||
| ml | predictions | Agregar columnas por estrategia |
|
||||
| ml | strategy_weights | NUEVA - pesos del gating |
|
||||
| ml | training_runs | Agregar metadata de estrategia |
|
||||
| ml | backtest_results | Agregar resultados por estrategia |
|
||||
| ml | attention_weights | NUEVA - scores de atención guardados |
|
||||
|
||||
### 7.2 Backend (ml-engine)
|
||||
|
||||
| Archivo/Directorio | Cambio |
|
||||
|-------------------|--------|
|
||||
| `src/models/` | Agregar 5 nuevos modelos de estrategia |
|
||||
| `src/models/attention/` | Implementar Price-Focused Attention |
|
||||
| `src/models/metamodel/` | Implementar Neural Gating Metamodel |
|
||||
| `src/training/` | Agregar trainers por estrategia |
|
||||
| `src/pipelines/` | Nuevo pipeline multi-estrategia |
|
||||
| `src/api/` | Nuevos endpoints para predicciones ensemble |
|
||||
| `config/` | Configuración por estrategia |
|
||||
|
||||
### 7.3 Documentación
|
||||
|
||||
| Archivo | Cambio |
|
||||
|---------|--------|
|
||||
| `docs/02-definicion-modulos/OQI-006-ml-signals/_MAP.md` | Actualizar con nuevas estrategias |
|
||||
| `docs/02-definicion-modulos/OQI-006-ml-signals/README.md` | Documentar arquitectura ensemble |
|
||||
| `docs/02-definicion-modulos/OQI-006-ml-signals/especificaciones/` | Nuevas specs técnicas |
|
||||
| `orchestration/inventarios/ML_INVENTORY.yml` | NUEVO - inventario de modelos |
|
||||
|
||||
---
|
||||
|
||||
## 8. DEPENDENCIAS IDENTIFICADAS
|
||||
|
||||
### 8.1 Dependencias Técnicas
|
||||
|
||||
```yaml
|
||||
dependencias_tecnicas:
|
||||
python:
|
||||
- torch>=2.0.0 # Para Transformers
|
||||
- xgboost>=2.0.0 # Gradient Boosting
|
||||
- hmmlearn>=0.3.0 # Hidden Markov Models
|
||||
- torch-geometric>=2.4.0 # Graph Neural Networks (opcional)
|
||||
- einops>=0.7.0 # Tensor operations
|
||||
|
||||
datos:
|
||||
- Migración de datos históricos de WorkspaceOld (5.6 GB)
|
||||
- Al menos 5 años de datos para entrenamiento robusto
|
||||
|
||||
infraestructura:
|
||||
- GPU con 16GB+ VRAM (disponible)
|
||||
- PostgreSQL con espacio para modelos serializados
|
||||
```
|
||||
|
||||
### 8.2 Dependencias de Tareas
|
||||
|
||||
```yaml
|
||||
orden_ejecucion:
|
||||
fase_1_infraestructura:
|
||||
- TASK-ML-DATA-PIPELINE # Migrar datos históricos
|
||||
- TASK-ML-ATTENTION-ARCHITECTURE # Implementar attention base
|
||||
|
||||
fase_2_estrategias: # Pueden ejecutarse en paralelo
|
||||
- TASK-ML-STRATEGY-1-PVA
|
||||
- TASK-ML-STRATEGY-2-MRD
|
||||
- TASK-ML-STRATEGY-3-VBP
|
||||
- TASK-ML-STRATEGY-4-MSA
|
||||
- TASK-ML-STRATEGY-5-MTS
|
||||
|
||||
fase_3_integracion:
|
||||
- TASK-ML-METAMODEL-ENSEMBLE # Requiere fase 2 completa
|
||||
- TASK-ML-LLM-INTEGRATION # Requiere metamodel
|
||||
|
||||
fase_4_validacion:
|
||||
- TASK-ML-BACKTESTING-VALIDATION # Requiere todo lo anterior
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 9. RIESGOS IDENTIFICADOS
|
||||
|
||||
| ID | Riesgo | Probabilidad | Impacto | Mitigación |
|
||||
|----|--------|--------------|---------|------------|
|
||||
| R1 | Overfitting en modelos complejos | Alta | Alto | Walk-forward validation, regularization |
|
||||
| R2 | Datos insuficientes para 5 estrategias | Media | Alto | Migrar datos históricos, data augmentation |
|
||||
| R3 | Latencia excesiva en inference | Media | Medio | Batch prediction, model optimization |
|
||||
| R4 | Conflicto entre estrategias | Alta | Medio | Gating network aprende a ponderar |
|
||||
| R5 | LLM toma decisiones incorrectas | Media | Alto | Fine-tuning con feedback, safety limits |
|
||||
| R6 | Régimen de mercado no visto | Baja | Alto | Ensemble diversificado, fallback rules |
|
||||
|
||||
---
|
||||
|
||||
## 10. ESTIMACIÓN DE RECURSOS
|
||||
|
||||
### 10.1 Cómputo
|
||||
|
||||
| Componente | GPU Hours | RAM | Storage |
|
||||
|------------|-----------|-----|---------|
|
||||
| Data Pipeline | 0 | 32GB | 10GB |
|
||||
| PVA Training | 100h | 16GB | 2GB |
|
||||
| MRD Training | 50h | 16GB | 2GB |
|
||||
| VBP Training | 30h | 16GB | 1GB |
|
||||
| MSA Training | 80h | 16GB | 2GB |
|
||||
| MTS Training | 120h | 16GB | 3GB |
|
||||
| Metamodel | 20h | 16GB | 1GB |
|
||||
| Backtesting | 10h | 32GB | 5GB |
|
||||
| **TOTAL** | **410h** | **32GB** | **26GB** |
|
||||
|
||||
### 10.2 Desarrollo (Story Points)
|
||||
|
||||
| Subtarea | SP |
|
||||
|----------|-------|
|
||||
| Data Pipeline | 8 |
|
||||
| Attention Architecture | 13 |
|
||||
| Strategy 1-5 (cada una) | 8 × 5 = 40 |
|
||||
| Metamodel Ensemble | 13 |
|
||||
| LLM Integration | 8 |
|
||||
| Backtesting Validation | 8 |
|
||||
| **TOTAL** | **90 SP** |
|
||||
|
||||
---
|
||||
|
||||
**Siguiente Fase:** 03-PLANEACION.md
|
||||
@ -0,0 +1,784 @@
|
||||
# 03-PLANEACIÓN: Mejora Integral de Modelos ML para Trading
|
||||
|
||||
**Task ID:** TASK-2026-01-25-ML-TRAINING-ENHANCEMENT
|
||||
**Fase:** P - Planeación
|
||||
**Estado:** En Progreso
|
||||
**Fecha:** 2026-01-25
|
||||
|
||||
---
|
||||
|
||||
## 1. ESTRUCTURA JERÁRQUICA DE SUBTAREAS
|
||||
|
||||
```
|
||||
TASK-2026-01-25-ML-TRAINING-ENHANCEMENT (TAREA MAESTRA)
|
||||
│
|
||||
├── FASE 1: INFRAESTRUCTURA (Prerequisitos)
|
||||
│ │
|
||||
│ ├── 1.1 TASK-ML-DATA-PIPELINE
|
||||
│ │ ├── 1.1.1 Migrar datos históricos MySQL → PostgreSQL
|
||||
│ │ ├── 1.1.2 Implementar data loader para entrenamiento
|
||||
│ │ ├── 1.1.3 Crear validadores de calidad de datos
|
||||
│ │ └── 1.1.4 Documentar schema y pipelines
|
||||
│ │
|
||||
│ └── 1.2 TASK-ML-ATTENTION-ARCHITECTURE
|
||||
│ ├── 1.2.1 Implementar Price-Focused Attention base
|
||||
│ ├── 1.2.2 Implementar Positional Encoding agnóstico
|
||||
│ ├── 1.2.3 Crear módulo de extracción de attention scores
|
||||
│ └── 1.2.4 Tests unitarios de attention
|
||||
│
|
||||
├── FASE 2: ESTRATEGIAS DE MODELOS (Paralelo)
|
||||
│ │
|
||||
│ ├── 2.1 TASK-ML-STRATEGY-1-PVA (Price Variation Attention)
|
||||
│ │ ├── 2.1.1 Implementar feature engineering de retornos
|
||||
│ │ ├── 2.1.2 Crear Transformer Encoder
|
||||
│ │ ├── 2.1.3 Implementar XGBoost prediction head
|
||||
│ │ ├── 2.1.4 Entrenar por cada activo (6 modelos)
|
||||
│ │ ├── 2.1.5 Validar con walk-forward
|
||||
│ │ └── 2.1.6 Documentar métricas y configuración
|
||||
│ │
|
||||
│ ├── 2.2 TASK-ML-STRATEGY-2-MRD (Momentum Regime Detection)
|
||||
│ │ ├── 2.2.1 Implementar Hidden Markov Model para regímenes
|
||||
│ │ ├── 2.2.2 Crear features de momentum y tendencia
|
||||
│ │ ├── 2.2.3 Implementar LSTM + XGBoost ensemble
|
||||
│ │ ├── 2.2.4 Entrenar por cada activo (6 modelos)
|
||||
│ │ ├── 2.2.5 Validar detección de regímenes
|
||||
│ │ └── 2.2.6 Documentar métricas y configuración
|
||||
│ │
|
||||
│ ├── 2.3 TASK-ML-STRATEGY-3-VBP (Volatility Breakout Predictor)
|
||||
│ │ ├── 2.3.1 Implementar features de volatilidad y compresión
|
||||
│ │ ├── 2.3.2 Crear CNN 1D con attention
|
||||
│ │ ├── 2.3.3 Implementar balanced sampling para breakouts
|
||||
│ │ ├── 2.3.4 Entrenar por cada activo (6 modelos)
|
||||
│ │ ├── 2.3.5 Validar predicción de breakouts
|
||||
│ │ └── 2.3.6 Documentar métricas y configuración
|
||||
│ │
|
||||
│ ├── 2.4 TASK-ML-STRATEGY-4-MSA (Market Structure Analysis)
|
||||
│ │ ├── 2.4.1 Implementar detector de swing points
|
||||
│ │ ├── 2.4.2 Crear features ICT/SMC (BOS, CHoCH, FVG, OB)
|
||||
│ │ ├── 2.4.3 Implementar modelo (GNN opcional o XGBoost)
|
||||
│ │ ├── 2.4.4 Entrenar por cada activo (6 modelos)
|
||||
│ │ ├── 2.4.5 Validar detección de estructura
|
||||
│ │ └── 2.4.6 Documentar métricas y configuración
|
||||
│ │
|
||||
│ └── 2.5 TASK-ML-STRATEGY-5-MTS (Multi-Timeframe Synthesis)
|
||||
│ ├── 2.5.1 Implementar agregación de features por timeframe
|
||||
│ ├── 2.5.2 Crear Hierarchical Attention Network
|
||||
│ ├── 2.5.3 Implementar síntesis de señales
|
||||
│ ├── 2.5.4 Entrenar por cada activo (6 modelos)
|
||||
│ ├── 2.5.5 Validar alineación multi-TF
|
||||
│ └── 2.5.6 Documentar métricas y configuración
|
||||
│
|
||||
├── FASE 3: INTEGRACIÓN (Secuencial post-Fase 2)
|
||||
│ │
|
||||
│ ├── 3.1 TASK-ML-METAMODEL-ENSEMBLE
|
||||
│ │ ├── 3.1.1 Implementar Neural Gating Network
|
||||
│ │ ├── 3.1.2 Crear pipeline de ensemble
|
||||
│ │ ├── 3.1.3 Entrenar gating con predicciones de estrategias
|
||||
│ │ ├── 3.1.4 Implementar confidence calibration
|
||||
│ │ └── 3.1.5 Documentar arquitectura final
|
||||
│ │
|
||||
│ └── 3.2 TASK-ML-LLM-STRATEGY-INTEGRATION
|
||||
│ ├── 3.2.1 Diseñar prompt structure para decisiones
|
||||
│ ├── 3.2.2 Implementar Signal Formatter
|
||||
│ ├── 3.2.3 Integrar con LLM Agent existente
|
||||
│ ├── 3.2.4 Crear Signal Logger para feedback
|
||||
│ └── 3.2.5 Documentar flujo de decisión
|
||||
│
|
||||
└── FASE 4: VALIDACIÓN (Final)
|
||||
│
|
||||
└── 4.1 TASK-ML-BACKTESTING-VALIDATION
|
||||
├── 4.1.1 Ejecutar backtesting por estrategia
|
||||
├── 4.1.2 Ejecutar backtesting de ensemble
|
||||
├── 4.1.3 Calcular métricas (Sharpe, Sortino, Max DD)
|
||||
├── 4.1.4 Validar objetivo 80% efectividad
|
||||
├── 4.1.5 Generar reportes comparativos
|
||||
└── 4.1.6 Documentar resultados finales
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 2. DETALLE DE SUBTAREAS NIVEL 1
|
||||
|
||||
### 2.1 FASE 1: INFRAESTRUCTURA
|
||||
|
||||
#### TASK-1.1: ML-DATA-PIPELINE
|
||||
|
||||
```yaml
|
||||
id: "TASK-2026-01-25-ML-DATA-PIPELINE"
|
||||
tipo: "feature"
|
||||
prioridad: "P0"
|
||||
bloqueante: true
|
||||
|
||||
descripcion: |
|
||||
Migrar datos históricos del proyecto antiguo (MySQL dumps de WorkspaceOld)
|
||||
a PostgreSQL y crear pipelines de datos para entrenamiento.
|
||||
|
||||
prerequisitos: []
|
||||
|
||||
subtareas:
|
||||
- id: "1.1.1"
|
||||
titulo: "Migrar datos históricos MySQL → PostgreSQL"
|
||||
descripcion: |
|
||||
Cargar los 3 dumps SQL (db.sql, db_financial.sql, db_res.sql = 5.6GB total)
|
||||
en PostgreSQL. Transformar schema si es necesario.
|
||||
archivos_afectados:
|
||||
- apps/data-service/scripts/migrate_mysql_data.py (CREAR)
|
||||
- apps/database/ddl/schemas/ml/migrations/ (CREAR)
|
||||
criterios_aceptacion:
|
||||
- Todos los datos migrados sin pérdida
|
||||
- Índices creados para queries eficientes
|
||||
- Validación de integridad (row counts match)
|
||||
|
||||
- id: "1.1.2"
|
||||
titulo: "Implementar data loader para entrenamiento"
|
||||
descripcion: |
|
||||
Crear clase DataLoader que carga datos de PostgreSQL en batches
|
||||
eficientes para entrenamiento de modelos.
|
||||
archivos_afectados:
|
||||
- apps/ml-engine/src/data/training_loader.py (CREAR)
|
||||
- apps/ml-engine/src/data/dataset.py (CREAR)
|
||||
criterios_aceptacion:
|
||||
- Soporta batch loading
|
||||
- Memory efficient (streaming)
|
||||
- Soporta filtrado por símbolo, timeframe, fecha
|
||||
|
||||
- id: "1.1.3"
|
||||
titulo: "Crear validadores de calidad de datos"
|
||||
descripcion: |
|
||||
Implementar validaciones de calidad de datos: gaps, outliers,
|
||||
consistency checks.
|
||||
archivos_afectados:
|
||||
- apps/ml-engine/src/data/validators.py (CREAR)
|
||||
criterios_aceptacion:
|
||||
- Detecta gaps en series temporales
|
||||
- Detecta outliers estadísticos
|
||||
- Reporte de calidad generado
|
||||
|
||||
- id: "1.1.4"
|
||||
titulo: "Documentar schema y pipelines"
|
||||
descripcion: |
|
||||
Documentar el schema de datos migrado y los pipelines creados.
|
||||
archivos_afectados:
|
||||
- docs/02-definicion-modulos/OQI-006-ml-signals/DATA-PIPELINE.md (CREAR)
|
||||
criterios_aceptacion:
|
||||
- ERD actualizado
|
||||
- Descripción de cada tabla
|
||||
- Ejemplos de uso del data loader
|
||||
|
||||
entregables:
|
||||
- 5.6GB de datos migrados
|
||||
- Data loader funcional
|
||||
- Validadores de calidad
|
||||
- Documentación completa
|
||||
|
||||
metricas_exito:
|
||||
- Tiempo de carga de 1M registros < 30s
|
||||
- 0 errores de integridad
|
||||
- 100% datos migrados
|
||||
```
|
||||
|
||||
#### TASK-1.2: ML-ATTENTION-ARCHITECTURE
|
||||
|
||||
```yaml
|
||||
id: "TASK-2026-01-25-ML-ATTENTION-ARCHITECTURE"
|
||||
tipo: "feature"
|
||||
prioridad: "P0"
|
||||
bloqueante: true
|
||||
|
||||
descripcion: |
|
||||
Implementar la arquitectura base de atención enfocada en variación de precio,
|
||||
agnóstica al tiempo y activo. Esta es la base para la Estrategia 1 (PVA).
|
||||
|
||||
prerequisitos:
|
||||
- TASK-ML-DATA-PIPELINE (parcial - solo data loader)
|
||||
|
||||
subtareas:
|
||||
- id: "1.2.1"
|
||||
titulo: "Implementar Price-Focused Attention base"
|
||||
descripcion: |
|
||||
Crear módulo de Self-Attention que opera sobre secuencias de retornos.
|
||||
Multi-head attention con 8 heads, d_model=256.
|
||||
archivos_afectados:
|
||||
- apps/ml-engine/src/models/attention/price_attention.py (CREAR)
|
||||
- apps/ml-engine/src/models/attention/multi_head_attention.py (CREAR)
|
||||
criterios_aceptacion:
|
||||
- Implementación correcta de scaled dot-product attention
|
||||
- Multi-head parallelizable
|
||||
- Forward pass produce shapes correctos
|
||||
|
||||
- id: "1.2.2"
|
||||
titulo: "Implementar Positional Encoding agnóstico"
|
||||
descripcion: |
|
||||
Crear positional encoding que NO usa información temporal real.
|
||||
Solo posición relativa en la secuencia (learnable o sinusoidal).
|
||||
archivos_afectados:
|
||||
- apps/ml-engine/src/models/attention/positional_encoding.py (CREAR)
|
||||
criterios_aceptacion:
|
||||
- No depende de timestamps reales
|
||||
- Soporta secuencias de longitud variable
|
||||
- Encodings diferenciables para backprop
|
||||
|
||||
- id: "1.2.3"
|
||||
titulo: "Crear módulo de extracción de attention scores"
|
||||
descripcion: |
|
||||
Implementar extracción y almacenamiento de attention scores
|
||||
para interpretabilidad y debugging.
|
||||
archivos_afectados:
|
||||
- apps/ml-engine/src/models/attention/attention_extractor.py (CREAR)
|
||||
criterios_aceptacion:
|
||||
- Extrae scores de cada head
|
||||
- Produce heatmaps de atención
|
||||
- Exportable a PostgreSQL para análisis
|
||||
|
||||
- id: "1.2.4"
|
||||
titulo: "Tests unitarios de attention"
|
||||
descripcion: |
|
||||
Crear suite de tests para validar implementación de attention.
|
||||
archivos_afectados:
|
||||
- apps/ml-engine/tests/test_attention.py (CREAR)
|
||||
criterios_aceptacion:
|
||||
- 100% cobertura del módulo attention
|
||||
- Tests de shapes, gradients, outputs
|
||||
- Test de reproducibilidad
|
||||
|
||||
entregables:
|
||||
- Módulo de Price-Focused Attention
|
||||
- Positional Encoding agnóstico
|
||||
- Extractor de attention scores
|
||||
- Tests unitarios
|
||||
|
||||
metricas_exito:
|
||||
- Forward pass < 10ms para batch de 256
|
||||
- Gradients estables (no NaN/Inf)
|
||||
- Tests pasan al 100%
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 2.2 FASE 2: ESTRATEGIAS DE MODELOS
|
||||
|
||||
#### TASK-2.1: STRATEGY-1-PVA (Price Variation Attention)
|
||||
|
||||
```yaml
|
||||
id: "TASK-2026-01-25-ML-STRATEGY-1-PVA"
|
||||
tipo: "feature"
|
||||
prioridad: "P1"
|
||||
|
||||
descripcion: |
|
||||
Estrategia enfocada en atención sobre variación de precio pura.
|
||||
Transformer Encoder + XGBoost Head. Agnóstica al tiempo y activo.
|
||||
|
||||
prerequisitos:
|
||||
- TASK-ML-DATA-PIPELINE
|
||||
- TASK-ML-ATTENTION-ARCHITECTURE
|
||||
|
||||
subtareas:
|
||||
- id: "2.1.1"
|
||||
titulo: "Implementar feature engineering de retornos"
|
||||
archivos_afectados:
|
||||
- apps/ml-engine/src/features/returns_features.py (CREAR)
|
||||
criterios_aceptacion:
|
||||
- Returns calculados correctamente (1, 5, 10, 20 períodos)
|
||||
- Derivados: acceleration, volatility, skewness, kurtosis
|
||||
- No NaN/Inf en outputs
|
||||
|
||||
- id: "2.1.2"
|
||||
titulo: "Crear Transformer Encoder"
|
||||
archivos_afectados:
|
||||
- apps/ml-engine/src/models/strategies/pva/transformer_encoder.py (CREAR)
|
||||
criterios_aceptacion:
|
||||
- 4 capas de self-attention
|
||||
- Feed-forward networks
|
||||
- Dropout y layer normalization
|
||||
|
||||
- id: "2.1.3"
|
||||
titulo: "Implementar XGBoost prediction head"
|
||||
archivos_afectados:
|
||||
- apps/ml-engine/src/models/strategies/pva/xgb_head.py (CREAR)
|
||||
criterios_aceptacion:
|
||||
- Toma embeddings de transformer
|
||||
- Produce direction, magnitude, confidence
|
||||
- Hiperparámetros configurables
|
||||
|
||||
- id: "2.1.4"
|
||||
titulo: "Entrenar por cada activo (6 modelos)"
|
||||
archivos_afectados:
|
||||
- apps/ml-engine/src/training/pva_trainer.py (CREAR)
|
||||
- apps/ml-engine/models/strategies/pva/{symbol}/ (CREAR)
|
||||
criterios_aceptacion:
|
||||
- 6 modelos entrenados (XAUUSD, EURUSD, BTCUSD, GBPUSD, USDJPY, AUDUSD)
|
||||
- Walk-forward validation aplicada
|
||||
- Modelos serializados y versionados
|
||||
|
||||
- id: "2.1.5"
|
||||
titulo: "Validar con walk-forward"
|
||||
archivos_afectados:
|
||||
- apps/ml-engine/src/validation/pva_validation.py (CREAR)
|
||||
criterios_aceptacion:
|
||||
- Métricas por fold de walk-forward
|
||||
- Reporte de overfitting (train vs val gap)
|
||||
- Stability analysis
|
||||
|
||||
- id: "2.1.6"
|
||||
titulo: "Documentar métricas y configuración"
|
||||
archivos_afectados:
|
||||
- docs/02-definicion-modulos/OQI-006-ml-signals/estrategias/PVA-SPEC.md (CREAR)
|
||||
criterios_aceptacion:
|
||||
- Arquitectura documentada con diagramas
|
||||
- Hiperparámetros documentados
|
||||
- Métricas de rendimiento
|
||||
|
||||
entregables:
|
||||
- 6 modelos PVA entrenados
|
||||
- Feature engineering module
|
||||
- Transformer + XGBoost pipeline
|
||||
- Documentación completa
|
||||
|
||||
metricas_exito:
|
||||
- Direction accuracy > 60%
|
||||
- MAE magnitude < 1%
|
||||
- Sharpe ratio > 1.0
|
||||
```
|
||||
|
||||
#### TASK-2.2 a 2.5: ESTRATEGIAS 2-5
|
||||
|
||||
*(Estructura similar a TASK-2.1, adaptada para cada estrategia)*
|
||||
|
||||
**Resumen de Estrategias:**
|
||||
|
||||
| ID | Estrategia | Arquitectura | Features Clave | Target Principal |
|
||||
|----|------------|--------------|----------------|------------------|
|
||||
| 2.1 | PVA | Transformer + XGBoost | Returns, derivados | Direction + Magnitude |
|
||||
| 2.2 | MRD | HMM + LSTM + XGBoost | Momentum, RSI, ADX | Regime + Continuation |
|
||||
| 2.3 | VBP | CNN 1D + Attention | ATR, BB squeeze | Breakout + Direction |
|
||||
| 2.4 | MSA | XGBoost (o GNN) | Swing, BOS, FVG | Structure reaction |
|
||||
| 2.5 | MTS | Hierarchical Attention | Multi-TF features | Unified direction |
|
||||
|
||||
---
|
||||
|
||||
### 2.3 FASE 3: INTEGRACIÓN
|
||||
|
||||
#### TASK-3.1: METAMODEL-ENSEMBLE
|
||||
|
||||
```yaml
|
||||
id: "TASK-2026-01-25-ML-METAMODEL-ENSEMBLE"
|
||||
tipo: "feature"
|
||||
prioridad: "P1"
|
||||
|
||||
descripcion: |
|
||||
Implementar el Neural Gating Metamodel que combina las predicciones
|
||||
de las 5 estrategias en una señal final ponderada dinámicamente.
|
||||
|
||||
prerequisitos:
|
||||
- TASK-ML-STRATEGY-1-PVA (completada)
|
||||
- TASK-ML-STRATEGY-2-MRD (completada)
|
||||
- TASK-ML-STRATEGY-3-VBP (completada)
|
||||
- TASK-ML-STRATEGY-4-MSA (completada)
|
||||
- TASK-ML-STRATEGY-5-MTS (completada)
|
||||
|
||||
subtareas:
|
||||
- id: "3.1.1"
|
||||
titulo: "Implementar Neural Gating Network"
|
||||
archivos_afectados:
|
||||
- apps/ml-engine/src/models/metamodel/gating_network.py (CREAR)
|
||||
criterios_aceptacion:
|
||||
- MLP de 3 capas (256, 128, 5)
|
||||
- Softmax output para pesos
|
||||
- Batch normalization
|
||||
|
||||
- id: "3.1.2"
|
||||
titulo: "Crear pipeline de ensemble"
|
||||
archivos_afectados:
|
||||
- apps/ml-engine/src/models/metamodel/ensemble_pipeline.py (CREAR)
|
||||
criterios_aceptacion:
|
||||
- Orquesta llamadas a 5 estrategias
|
||||
- Aplica gating network
|
||||
- Produce output unificado
|
||||
|
||||
- id: "3.1.3"
|
||||
titulo: "Entrenar gating con predicciones de estrategias"
|
||||
archivos_afectados:
|
||||
- apps/ml-engine/src/training/metamodel_trainer.py (MODIFICAR)
|
||||
criterios_aceptacion:
|
||||
- Entrenado con predicciones reales de estrategias
|
||||
- Optimiza weighted ensemble loss
|
||||
- Regularización para evitar colapso a una estrategia
|
||||
|
||||
- id: "3.1.4"
|
||||
titulo: "Implementar confidence calibration"
|
||||
archivos_afectados:
|
||||
- apps/ml-engine/src/models/metamodel/calibration.py (CREAR)
|
||||
criterios_aceptacion:
|
||||
- Isotonic regression o Platt scaling
|
||||
- Calibrated probabilities (reliability diagram)
|
||||
|
||||
- id: "3.1.5"
|
||||
titulo: "Documentar arquitectura final"
|
||||
archivos_afectados:
|
||||
- docs/02-definicion-modulos/OQI-006-ml-signals/METAMODEL-SPEC.md (CREAR)
|
||||
criterios_aceptacion:
|
||||
- Diagrama de arquitectura
|
||||
- Flujo de datos documentado
|
||||
- Ejemplo de uso
|
||||
|
||||
entregables:
|
||||
- Neural Gating Metamodel entrenado
|
||||
- Ensemble pipeline funcional
|
||||
- Confidence calibration
|
||||
- Documentación
|
||||
|
||||
metricas_exito:
|
||||
- Ensemble accuracy > individual strategies
|
||||
- Calibration error < 5%
|
||||
- Latencia total < 100ms
|
||||
```
|
||||
|
||||
#### TASK-3.2: LLM-STRATEGY-INTEGRATION
|
||||
|
||||
```yaml
|
||||
id: "TASK-2026-01-25-ML-LLM-STRATEGY-INTEGRATION"
|
||||
tipo: "feature"
|
||||
prioridad: "P1"
|
||||
|
||||
descripcion: |
|
||||
Integrar el metamodel con el LLM Agent para que tome decisiones
|
||||
de trading basadas en las predicciones ensemble.
|
||||
|
||||
prerequisitos:
|
||||
- TASK-ML-METAMODEL-ENSEMBLE (completada)
|
||||
|
||||
subtareas:
|
||||
- id: "3.2.1"
|
||||
titulo: "Diseñar prompt structure para decisiones"
|
||||
archivos_afectados:
|
||||
- apps/ml-engine/src/llm/prompts/trading_decision.py (CREAR)
|
||||
criterios_aceptacion:
|
||||
- Template estructurado con todas las señales
|
||||
- Formato parseable de respuesta
|
||||
- Incluye contexto de mercado
|
||||
|
||||
- id: "3.2.2"
|
||||
titulo: "Implementar Signal Formatter"
|
||||
archivos_afectados:
|
||||
- apps/ml-engine/src/llm/signal_formatter.py (CREAR)
|
||||
criterios_aceptacion:
|
||||
- Convierte predicciones a formato de prompt
|
||||
- Incluye metadata de estrategias
|
||||
- Agrega contexto de riesgo
|
||||
|
||||
- id: "3.2.3"
|
||||
titulo: "Integrar con LLM Agent existente"
|
||||
archivos_afectados:
|
||||
- apps/backend/src/modules/llm/llm-trading.service.ts (MODIFICAR)
|
||||
- apps/ml-engine/src/api/llm_endpoints.py (CREAR)
|
||||
criterios_aceptacion:
|
||||
- Endpoint que LLM Agent consume
|
||||
- Formato compatible con tools existentes
|
||||
- Manejo de errores robusto
|
||||
|
||||
- id: "3.2.4"
|
||||
titulo: "Crear Signal Logger para feedback"
|
||||
archivos_afectados:
|
||||
- apps/ml-engine/src/llm/signal_logger.py (CREAR)
|
||||
- apps/database/ddl/schemas/ml/llm_signals.sql (CREAR)
|
||||
criterios_aceptacion:
|
||||
- Registra cada señal enviada al LLM
|
||||
- Registra decisión del LLM
|
||||
- Registra resultado del trade (para fine-tuning)
|
||||
|
||||
- id: "3.2.5"
|
||||
titulo: "Documentar flujo de decisión"
|
||||
archivos_afectados:
|
||||
- docs/02-definicion-modulos/OQI-006-ml-signals/LLM-INTEGRATION.md (CREAR)
|
||||
criterios_aceptacion:
|
||||
- Diagrama de flujo end-to-end
|
||||
- Ejemplos de prompts y respuestas
|
||||
- Guía de troubleshooting
|
||||
|
||||
entregables:
|
||||
- Integración ML-LLM funcional
|
||||
- Signal Logger con feedback loop
|
||||
- Documentación de integración
|
||||
|
||||
metricas_exito:
|
||||
- LLM recibe señales en < 200ms
|
||||
- 100% de trades loggeados
|
||||
- Formato de respuesta válido > 99%
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 2.4 FASE 4: VALIDACIÓN
|
||||
|
||||
#### TASK-4.1: BACKTESTING-VALIDATION
|
||||
|
||||
```yaml
|
||||
id: "TASK-2026-01-25-ML-BACKTESTING-VALIDATION"
|
||||
tipo: "validation"
|
||||
prioridad: "P0"
|
||||
bloqueante: true
|
||||
|
||||
descripcion: |
|
||||
Validar el sistema completo mediante backtesting exhaustivo.
|
||||
Verificar que se alcanza el objetivo de 80% de efectividad.
|
||||
|
||||
prerequisitos:
|
||||
- TASK-ML-METAMODEL-ENSEMBLE (completada)
|
||||
- TASK-ML-LLM-STRATEGY-INTEGRATION (completada)
|
||||
|
||||
subtareas:
|
||||
- id: "4.1.1"
|
||||
titulo: "Ejecutar backtesting por estrategia"
|
||||
archivos_afectados:
|
||||
- apps/ml-engine/src/backtesting/strategy_backtest.py (CREAR)
|
||||
criterios_aceptacion:
|
||||
- Backtest de cada estrategia individualmente
|
||||
- Período: últimos 2 años
|
||||
- Métricas por símbolo
|
||||
|
||||
- id: "4.1.2"
|
||||
titulo: "Ejecutar backtesting de ensemble"
|
||||
archivos_afectados:
|
||||
- apps/ml-engine/src/backtesting/ensemble_backtest.py (CREAR)
|
||||
criterios_aceptacion:
|
||||
- Backtest del metamodel completo
|
||||
- Simula decisiones de LLM
|
||||
- Incluye slippage y comisiones
|
||||
|
||||
- id: "4.1.3"
|
||||
titulo: "Calcular métricas (Sharpe, Sortino, Max DD)"
|
||||
archivos_afectados:
|
||||
- apps/ml-engine/src/backtesting/metrics_calculator.py (MODIFICAR)
|
||||
criterios_aceptacion:
|
||||
- Sharpe Ratio
|
||||
- Sortino Ratio
|
||||
- Maximum Drawdown
|
||||
- Win Rate
|
||||
- Profit Factor
|
||||
- Calmar Ratio
|
||||
|
||||
- id: "4.1.4"
|
||||
titulo: "Validar objetivo 80% efectividad"
|
||||
archivos_afectados:
|
||||
- apps/ml-engine/src/backtesting/effectiveness_validator.py (CREAR)
|
||||
criterios_aceptacion:
|
||||
- Win rate de operaciones ≥ 80%
|
||||
- O profit factor ≥ 2.0 con win rate ≥ 60%
|
||||
- Consistency across symbols
|
||||
|
||||
- id: "4.1.5"
|
||||
titulo: "Generar reportes comparativos"
|
||||
archivos_afectados:
|
||||
- apps/ml-engine/src/backtesting/report_generator.py (CREAR)
|
||||
criterios_aceptacion:
|
||||
- Reporte HTML/PDF con gráficos
|
||||
- Comparación estrategia vs ensemble
|
||||
- Análisis de drawdown
|
||||
|
||||
- id: "4.1.6"
|
||||
titulo: "Documentar resultados finales"
|
||||
archivos_afectados:
|
||||
- docs/02-definicion-modulos/OQI-006-ml-signals/BACKTEST-RESULTS.md (CREAR)
|
||||
criterios_aceptacion:
|
||||
- Todas las métricas documentadas
|
||||
- Conclusiones y recomendaciones
|
||||
- Limitaciones identificadas
|
||||
|
||||
entregables:
|
||||
- Resultados de backtesting por estrategia
|
||||
- Resultados de backtesting ensemble
|
||||
- Reporte comparativo completo
|
||||
- Documentación de resultados
|
||||
|
||||
metricas_exito:
|
||||
- Efectividad ≥ 80% en operaciones
|
||||
- Sharpe Ratio ≥ 1.5
|
||||
- Max Drawdown ≤ 15%
|
||||
- Consistent across 6 symbols
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 3. CRONOGRAMA Y DEPENDENCIAS
|
||||
|
||||
### 3.1 Diagrama de Gantt (Simplificado)
|
||||
|
||||
```
|
||||
Semana 1 2 3 4 5 6 7 8
|
||||
|---------|---------|---------|---------|---------|---------|---------|
|
||||
|
||||
FASE 1 - INFRAESTRUCTURA
|
||||
├─ 1.1 Data Pipeline [███████]
|
||||
└─ 1.2 Attention Arch [███████]
|
||||
|
||||
FASE 2 - ESTRATEGIAS (Paralelo)
|
||||
├─ 2.1 PVA [███████████]
|
||||
├─ 2.2 MRD [███████████]
|
||||
├─ 2.3 VBP [███████████]
|
||||
├─ 2.4 MSA [███████████]
|
||||
└─ 2.5 MTS [███████████]
|
||||
|
||||
FASE 3 - INTEGRACIÓN
|
||||
├─ 3.1 Metamodel [███████]
|
||||
└─ 3.2 LLM Integration [███████]
|
||||
|
||||
FASE 4 - VALIDACIÓN
|
||||
└─ 4.1 Backtesting [███████]
|
||||
```
|
||||
|
||||
### 3.2 Grafo de Dependencias
|
||||
|
||||
```
|
||||
┌─────────────────┐
|
||||
│ 1.1 Data │
|
||||
│ Pipeline │
|
||||
└────────┬────────┘
|
||||
│
|
||||
┌────────▼────────┐
|
||||
│ 1.2 Attention │
|
||||
│ Architecture │
|
||||
└────────┬────────┘
|
||||
│
|
||||
┌────────────────────┼────────────────────┐
|
||||
│ │ │
|
||||
┌───────▼───────┐ ┌───────▼───────┐ ┌───────▼───────┐
|
||||
│ 2.1 PVA │ │ 2.2 MRD │ │ 2.3 VBP │
|
||||
└───────┬───────┘ └───────┬───────┘ └───────┬───────┘
|
||||
│ │ │
|
||||
│ ┌───────▼───────┐ ┌───────▼───────┐
|
||||
│ │ 2.4 MSA │ │ 2.5 MTS │
|
||||
│ └───────┬───────┘ └───────┬───────┘
|
||||
│ │ │
|
||||
└────────────────────┼────────────────────┘
|
||||
│
|
||||
┌────────▼────────┐
|
||||
│ 3.1 Metamodel │
|
||||
│ Ensemble │
|
||||
└────────┬────────┘
|
||||
│
|
||||
┌────────▼────────┐
|
||||
│ 3.2 LLM │
|
||||
│ Integration │
|
||||
└────────┬────────┘
|
||||
│
|
||||
┌────────▼────────┐
|
||||
│ 4.1 Backtesting │
|
||||
│ Validation │
|
||||
└─────────────────┘
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 4. ASIGNACIÓN DE AGENTES
|
||||
|
||||
| Subtarea | Agente Sugerido | Herramientas |
|
||||
|----------|-----------------|--------------|
|
||||
| 1.1 Data Pipeline | PERFIL-DATA-ENGINEER | Bash, Python, PostgreSQL |
|
||||
| 1.2 Attention Arch | PERFIL-ML-ENGINEER | Python, PyTorch |
|
||||
| 2.1-2.5 Estrategias | PERFIL-ML-ENGINEER (paralelo) | Python, XGBoost, PyTorch |
|
||||
| 3.1 Metamodel | PERFIL-ML-ARCHITECT | Python, PyTorch |
|
||||
| 3.2 LLM Integration | PERFIL-BACKEND + PERFIL-ML | TypeScript, Python |
|
||||
| 4.1 Backtesting | PERFIL-QUANT | Python, Pandas |
|
||||
|
||||
---
|
||||
|
||||
## 5. CRITERIOS DE ACEPTACIÓN GLOBALES
|
||||
|
||||
### 5.1 Criterios Técnicos
|
||||
|
||||
| Criterio | Umbral | Verificación |
|
||||
|----------|--------|--------------|
|
||||
| Build pasa | 100% | `npm run build` / `python -m pytest` |
|
||||
| Tests pasan | ≥95% | CI/CD pipeline |
|
||||
| Cobertura tests | ≥80% | Coverage report |
|
||||
| No memory leaks | 0 | Profiling |
|
||||
| Latencia inference | <200ms | Benchmark |
|
||||
|
||||
### 5.2 Criterios de ML
|
||||
|
||||
| Criterio | Umbral | Verificación |
|
||||
|----------|--------|--------------|
|
||||
| Efectividad operaciones | ≥80% | Backtesting |
|
||||
| Direction accuracy | ≥70% | Validation set |
|
||||
| Sharpe Ratio | ≥1.5 | Backtesting |
|
||||
| Max Drawdown | ≤15% | Backtesting |
|
||||
| Calibration error | ≤5% | Reliability diagram |
|
||||
|
||||
### 5.3 Criterios de Documentación
|
||||
|
||||
| Criterio | Umbral | Verificación |
|
||||
|----------|--------|--------------|
|
||||
| Especificaciones completas | 100% | Review |
|
||||
| Diagramas actualizados | 100% | Review |
|
||||
| Código documentado | 100% | Docstrings |
|
||||
| Inventarios actualizados | 100% | Checklist |
|
||||
|
||||
---
|
||||
|
||||
## 6. PLAN DE PRUEBAS
|
||||
|
||||
### 6.1 Tests Unitarios
|
||||
|
||||
- Cada módulo nuevo debe tener ≥80% cobertura
|
||||
- Mock de datos para tests reproducibles
|
||||
- Fixtures compartidos para estrategias
|
||||
|
||||
### 6.2 Tests de Integración
|
||||
|
||||
- Pipeline completo con datos sintéticos
|
||||
- Integración ML-LLM con mock responses
|
||||
- Database round-trip tests
|
||||
|
||||
### 6.3 Tests de Rendimiento
|
||||
|
||||
- Benchmark de inference time
|
||||
- Memory profiling
|
||||
- Load testing de API endpoints
|
||||
|
||||
### 6.4 Backtesting como Test
|
||||
|
||||
- Walk-forward validation obligatoria
|
||||
- Out-of-sample period de 6 meses mínimo
|
||||
- Robustness checks (different seeds, params)
|
||||
|
||||
---
|
||||
|
||||
## 7. DOCUMENTACIÓN A CREAR/ACTUALIZAR
|
||||
|
||||
### 7.1 Crear (Nuevos)
|
||||
|
||||
| Archivo | Propósito |
|
||||
|---------|-----------|
|
||||
| `DATA-PIPELINE.md` | Schema y pipeline de datos |
|
||||
| `PVA-SPEC.md` | Especificación estrategia 1 |
|
||||
| `MRD-SPEC.md` | Especificación estrategia 2 |
|
||||
| `VBP-SPEC.md` | Especificación estrategia 3 |
|
||||
| `MSA-SPEC.md` | Especificación estrategia 4 |
|
||||
| `MTS-SPEC.md` | Especificación estrategia 5 |
|
||||
| `METAMODEL-SPEC.md` | Especificación del ensemble |
|
||||
| `LLM-INTEGRATION.md` | Integración con LLM |
|
||||
| `BACKTEST-RESULTS.md` | Resultados de backtesting |
|
||||
| `ML_INVENTORY.yml` | Inventario de modelos |
|
||||
|
||||
### 7.2 Actualizar (Existentes)
|
||||
|
||||
| Archivo | Cambio |
|
||||
|---------|--------|
|
||||
| `OQI-006/_MAP.md` | Agregar nuevas estrategias |
|
||||
| `OQI-006/README.md` | Actualizar arquitectura |
|
||||
| `MASTER_INVENTORY.yml` | Agregar nuevos modelos |
|
||||
| `PROXIMA-ACCION.md` | Reflejar plan actual |
|
||||
|
||||
---
|
||||
|
||||
## 8. PRÓXIMOS PASOS INMEDIATOS
|
||||
|
||||
1. **Validar este plan** → Fase V de CAPVED
|
||||
2. **Aprobar recursos** → GPU time, storage
|
||||
3. **Crear subtareas** en sistema de tracking
|
||||
4. **Iniciar FASE 1** → Data Pipeline + Attention Architecture
|
||||
5. **Asignar agentes** para ejecución paralela en FASE 2
|
||||
|
||||
---
|
||||
|
||||
**Siguiente Fase:** 04-VALIDACION.md
|
||||
@ -0,0 +1,151 @@
|
||||
# 04-VALIDACIÓN: Mejora Integral de Modelos ML para Trading
|
||||
|
||||
**Task ID:** TASK-2026-01-25-ML-TRAINING-ENHANCEMENT
|
||||
**Fase:** V - Validación
|
||||
**Estado:** Pendiente
|
||||
**Fecha:** 2026-01-25
|
||||
|
||||
---
|
||||
|
||||
## 1. CHECKLIST DE VALIDACIÓN
|
||||
|
||||
### 1.1 Cobertura Análisis → Plan
|
||||
|
||||
| Item de Análisis | ¿Tiene Subtarea en Plan? | Subtarea ID |
|
||||
|------------------|--------------------------|-------------|
|
||||
| Migración datos históricos | ✅ | 1.1.1 |
|
||||
| Data loader para entrenamiento | ✅ | 1.1.2 |
|
||||
| Validadores de calidad | ✅ | 1.1.3 |
|
||||
| Arquitectura de atención | ✅ | 1.2.* |
|
||||
| Estrategia 1 (PVA) | ✅ | 2.1.* |
|
||||
| Estrategia 2 (MRD) | ✅ | 2.2.* |
|
||||
| Estrategia 3 (VBP) | ✅ | 2.3.* |
|
||||
| Estrategia 4 (MSA) | ✅ | 2.4.* |
|
||||
| Estrategia 5 (MTS) | ✅ | 2.5.* |
|
||||
| Neural Gating Metamodel | ✅ | 3.1.* |
|
||||
| Integración LLM | ✅ | 3.2.* |
|
||||
| Backtesting validation | ✅ | 4.1.* |
|
||||
|
||||
**Resultado:** ✅ 100% cobertura
|
||||
|
||||
### 1.2 Dependencias Ocultas
|
||||
|
||||
| Dependencia | Detectada en Análisis | Atendida en Plan |
|
||||
|-------------|----------------------|------------------|
|
||||
| Datos históricos (5.6GB) | ✅ | ✅ 1.1.1 |
|
||||
| GPU 16GB VRAM | ✅ | ✅ Disponible |
|
||||
| PyTorch ≥2.0 | ✅ | ✅ Requirements |
|
||||
| hmmlearn | ✅ | ✅ Requirements |
|
||||
| torch-geometric (opcional) | ✅ | ✅ Opcional |
|
||||
| PostgreSQL espacio | ✅ | ✅ Verificado |
|
||||
|
||||
**Resultado:** ✅ Sin dependencias ocultas
|
||||
|
||||
### 1.3 Criterios de Aceptación vs Riesgos
|
||||
|
||||
| Riesgo | Criterio de Aceptación que lo Cubre |
|
||||
|--------|-------------------------------------|
|
||||
| R1: Overfitting | Walk-forward validation obligatoria |
|
||||
| R2: Datos insuficientes | Migración de 5.6GB de datos históricos |
|
||||
| R3: Latencia excesiva | Benchmark < 200ms |
|
||||
| R4: Conflicto entre estrategias | Gating network aprende ponderación |
|
||||
| R5: LLM decisiones incorrectas | Fine-tuning feedback loop |
|
||||
| R6: Régimen no visto | Ensemble diversificado |
|
||||
|
||||
**Resultado:** ✅ Todos los riesgos cubiertos
|
||||
|
||||
---
|
||||
|
||||
## 2. VALIDACIÓN DE SCOPE
|
||||
|
||||
### 2.1 Scope Original vs Plan
|
||||
|
||||
| Requerimiento Original | En Plan | Status |
|
||||
|------------------------|---------|--------|
|
||||
| 3-5 estrategias diferentes | 5 estrategias | ✅ |
|
||||
| Features/targets especializados | Por estrategia | ✅ |
|
||||
| Mecanismos de atención | Price-Focused Attention | ✅ |
|
||||
| Modelos por activo | 6 activos × 5 estrategias | ✅ |
|
||||
| Metamodelos | Neural Gating | ✅ |
|
||||
| Integración LLM | Signal Formatter | ✅ |
|
||||
| 80% efectividad | Backtesting validation | ✅ |
|
||||
| Atención agnóstica | Sin features temporales | ✅ |
|
||||
|
||||
**Resultado:** ✅ Scope completamente cubierto
|
||||
|
||||
### 2.2 Scope Creep Detectado
|
||||
|
||||
| Item | Tipo | Acción |
|
||||
|------|------|--------|
|
||||
| Graph Neural Network para MSA | Feature opcional | Marcado como opcional |
|
||||
| Fine-tuning LLM | Feature derivada | Crear HU derivada |
|
||||
| Dashboard de métricas ML | Feature derivada | Crear HU derivada |
|
||||
|
||||
---
|
||||
|
||||
## 3. HUs DERIVADAS IDENTIFICADAS
|
||||
|
||||
```yaml
|
||||
HUs_Derivadas:
|
||||
- id: "DERIVED-ML-001"
|
||||
origen: "TASK-2026-01-25-ML-TRAINING-ENHANCEMENT"
|
||||
tipo: "feature"
|
||||
descripcion: "Implementar fine-tuning del LLM con feedback de trades"
|
||||
detectado_en_fase: "V"
|
||||
prioridad_sugerida: "P2"
|
||||
notas: "Requiere acumulación de datos de Signal Logger"
|
||||
|
||||
- id: "DERIVED-ML-002"
|
||||
origen: "TASK-2026-01-25-ML-TRAINING-ENHANCEMENT"
|
||||
tipo: "feature"
|
||||
descripcion: "Dashboard admin de métricas ML en tiempo real"
|
||||
detectado_en_fase: "V"
|
||||
prioridad_sugerida: "P2"
|
||||
notas: "Visualización de attention scores, estrategias, ensemble"
|
||||
|
||||
- id: "DERIVED-ML-003"
|
||||
origen: "TASK-2026-01-25-ML-TRAINING-ENHANCEMENT"
|
||||
tipo: "feature"
|
||||
descripcion: "AutoML para hyperparameter tuning"
|
||||
detectado_en_fase: "A"
|
||||
prioridad_sugerida: "P3"
|
||||
notas: "Optimización automática de hiperparámetros"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 4. GATE DE VALIDACIÓN
|
||||
|
||||
### 4.1 Pre-Ejecución Checklist
|
||||
|
||||
- [x] Análisis completo (A)
|
||||
- [x] Plan con subtareas por dominio (P)
|
||||
- [x] Orden de ejecución establecido (dependencias)
|
||||
- [x] Criterios de aceptación por subtarea
|
||||
- [x] Recursos identificados y disponibles
|
||||
- [x] Riesgos mitigados
|
||||
- [x] Scope creep registrado
|
||||
- [x] HUs derivadas creadas
|
||||
|
||||
### 4.2 Decisión
|
||||
|
||||
**ESTADO:** ✅ APROBADO PARA EJECUCIÓN
|
||||
|
||||
**Condiciones:**
|
||||
1. Ejecutar FASE 1 (Infraestructura) antes de FASE 2
|
||||
2. FASE 2 puede ejecutarse en paralelo (5 agentes)
|
||||
3. FASE 3 requiere FASE 2 completa
|
||||
4. FASE 4 es gate final
|
||||
|
||||
---
|
||||
|
||||
## 5. APROBACIÓN
|
||||
|
||||
| Rol | Estado | Fecha |
|
||||
|-----|--------|-------|
|
||||
| Arquitecto ML | Aprobado | 2026-01-25 |
|
||||
| Usuario | Pendiente | - |
|
||||
|
||||
---
|
||||
|
||||
**Siguiente Fase:** 05-EJECUCION.md (tras aprobación)
|
||||
@ -0,0 +1,256 @@
|
||||
# 05-EJECUCIÓN: Mejora Integral de Modelos ML para Trading
|
||||
|
||||
**Task ID:** TASK-2026-01-25-ML-TRAINING-ENHANCEMENT
|
||||
**Fase:** E - Ejecución
|
||||
**Estado:** Pendiente
|
||||
**Fecha:** 2026-01-25
|
||||
|
||||
---
|
||||
|
||||
## 1. LOG DE EJECUCIÓN
|
||||
|
||||
### 1.1 FASE 1: INFRAESTRUCTURA ✅ COMPLETADA
|
||||
|
||||
#### TASK-1.1: Data Pipeline ✅
|
||||
|
||||
| Subtarea | Estado | Inicio | Fin | Notas |
|
||||
|----------|--------|--------|-----|-------|
|
||||
| 1.1.1 Migrar datos MySQL→PostgreSQL | ✅ Completada | 2026-01-25 | 2026-01-25 | Script creado: migrate_historical_data.py |
|
||||
| 1.1.2 Implementar data loader | ✅ Completada | 2026-01-25 | 2026-01-25 | training_loader.py (~300 líneas) |
|
||||
| 1.1.3 Crear validadores de calidad | ✅ Completada | 2026-01-25 | 2026-01-25 | validators.py (~200 líneas) |
|
||||
| 1.1.4 Documentar schema y pipelines | ✅ Completada | 2026-01-25 | 2026-01-25 | DATA-PIPELINE-SPEC.md |
|
||||
|
||||
#### TASK-1.2: Attention Architecture ✅
|
||||
|
||||
| Subtarea | Estado | Inicio | Fin | Notas |
|
||||
|----------|--------|--------|-----|-------|
|
||||
| 1.2.1 Implementar Price-Focused Attention | ✅ Completada | 2026-01-25 | 2026-01-25 | price_attention.py (~400 líneas) |
|
||||
| 1.2.2 Implementar Positional Encoding | ✅ Completada | 2026-01-25 | 2026-01-25 | positional_encoding.py (~300 líneas) |
|
||||
| 1.2.3 Crear extractor de attention scores | ✅ Completada | 2026-01-25 | 2026-01-25 | attention_extractor.py (~500 líneas) |
|
||||
| 1.2.4 Tests unitarios de attention | ✅ Completada | 2026-01-25 | 2026-01-25 | test_attention_architecture.py (37 tests) |
|
||||
|
||||
---
|
||||
|
||||
### 1.2 FASE 2: ESTRATEGIAS (Paralelo) ✅ COMPLETADA
|
||||
|
||||
#### TASK-2.1: Strategy PVA ✅
|
||||
|
||||
| Subtarea | Estado | Agente | Notas |
|
||||
|----------|--------|--------|-------|
|
||||
| 2.1.1 Feature engineering retornos | ✅ | general-purpose | feature_engineering.py (~700 líneas) |
|
||||
| 2.1.2 Transformer Encoder | ✅ | general-purpose | Usa PriceFocusedAttention existente |
|
||||
| 2.1.3 XGBoost prediction head | ✅ | general-purpose | model.py (~920 líneas) |
|
||||
| 2.1.4 Entrenar por activo | ✅ | general-purpose | trainer.py (~790 líneas) |
|
||||
| 2.1.5 Walk-forward validation | ✅ | general-purpose | Incluido en trainer |
|
||||
| 2.1.6 Documentación | ✅ | general-purpose | __init__.py con docstrings |
|
||||
|
||||
#### TASK-2.2: Strategy MRD ✅
|
||||
|
||||
| Subtarea | Estado | Agente | Notas |
|
||||
|----------|--------|--------|-------|
|
||||
| 2.2.1 HMM regímenes | ✅ | general-purpose | hmm_regime.py (~450 líneas) |
|
||||
| 2.2.2 Features momentum | ✅ | general-purpose | feature_engineering.py (~540 líneas) |
|
||||
| 2.2.3 LSTM + XGBoost | ✅ | general-purpose | model.py (~600 líneas) |
|
||||
| 2.2.4 Entrenar por activo | ✅ | general-purpose | trainer.py (~530 líneas) |
|
||||
| 2.2.5 Validar regímenes | ✅ | general-purpose | Incluido en trainer |
|
||||
| 2.2.6 Documentación | ✅ | general-purpose | __init__.py |
|
||||
|
||||
#### TASK-2.3: Strategy VBP ✅
|
||||
|
||||
| Subtarea | Estado | Agente | Notas |
|
||||
|----------|--------|--------|-------|
|
||||
| 2.3.1 Features volatilidad | ✅ | general-purpose | feature_engineering.py |
|
||||
| 2.3.2 CNN 1D + Attention | ✅ | general-purpose | cnn_encoder.py |
|
||||
| 2.3.3 Balanced sampling | ✅ | general-purpose | 3x oversampling breakouts |
|
||||
| 2.3.4 Entrenar por activo | ✅ | general-purpose | trainer.py |
|
||||
| 2.3.5 Validar breakouts | ✅ | general-purpose | Métricas especializadas |
|
||||
| 2.3.6 Documentación | ✅ | general-purpose | __init__.py |
|
||||
|
||||
#### TASK-2.4: Strategy MSA ✅
|
||||
|
||||
| Subtarea | Estado | Agente | Notas |
|
||||
|----------|--------|--------|-------|
|
||||
| 2.4.1 Detector swing points | ✅ | general-purpose | structure_detector.py (~800 líneas) |
|
||||
| 2.4.2 Features ICT/SMC | ✅ | general-purpose | BOS, CHoCH, FVG, OB implementados |
|
||||
| 2.4.3 Modelo XGBoost | ✅ | general-purpose | model.py (~470 líneas) |
|
||||
| 2.4.4 Entrenar por activo | ✅ | general-purpose | trainer.py (~470 líneas) |
|
||||
| 2.4.5 Validar estructura | ✅ | general-purpose | Métricas por tipo de predicción |
|
||||
| 2.4.6 Documentación | ✅ | general-purpose | __init__.py |
|
||||
|
||||
#### TASK-2.5: Strategy MTS ✅
|
||||
|
||||
| Subtarea | Estado | Agente | Notas |
|
||||
|----------|--------|--------|-------|
|
||||
| 2.5.1 Agregación multi-TF | ✅ | general-purpose | feature_engineering.py |
|
||||
| 2.5.2 Hierarchical Attention | ✅ | general-purpose | hierarchical_attention.py |
|
||||
| 2.5.3 Síntesis señales | ✅ | general-purpose | model.py con XGBoost |
|
||||
| 2.5.4 Entrenar por activo | ✅ | general-purpose | trainer.py |
|
||||
| 2.5.5 Validar alineación | ✅ | general-purpose | Métricas de alignment |
|
||||
| 2.5.6 Documentación | ✅ | general-purpose | __init__.py |
|
||||
|
||||
---
|
||||
|
||||
### 1.3 FASE 3: INTEGRACIÓN ✅ COMPLETADA
|
||||
|
||||
#### TASK-3.1: Metamodel Ensemble ✅
|
||||
|
||||
| Subtarea | Estado | Inicio | Fin | Notas |
|
||||
|----------|--------|--------|-----|-------|
|
||||
| 3.1.1 Neural Gating Network | ✅ | 2026-01-25 | 2026-01-25 | gating_network.py + entropy regularization |
|
||||
| 3.1.2 Pipeline de ensemble | ✅ | 2026-01-25 | 2026-01-25 | ensemble_pipeline.py |
|
||||
| 3.1.3 Entrenar gating | ✅ | 2026-01-25 | 2026-01-25 | trainer.py con walk-forward |
|
||||
| 3.1.4 Confidence calibration | ✅ | 2026-01-25 | 2026-01-25 | calibration.py (isotonic, Platt, temperature) |
|
||||
| 3.1.5 Documentar arquitectura | ✅ | 2026-01-25 | 2026-01-25 | model.py + __init__.py |
|
||||
|
||||
#### TASK-3.2: LLM Integration ✅
|
||||
|
||||
| Subtarea | Estado | Inicio | Fin | Notas |
|
||||
|----------|--------|--------|-----|-------|
|
||||
| 3.2.1 Prompt structure | ✅ | 2026-01-25 | 2026-01-25 | prompts/trading_decision.py |
|
||||
| 3.2.2 Signal Formatter | ✅ | 2026-01-25 | 2026-01-25 | signal_formatter.py |
|
||||
| 3.2.3 Integrar LLM Agent | ✅ | 2026-01-25 | 2026-01-25 | llm_client.py (Ollama + Claude fallback) |
|
||||
| 3.2.4 Signal Logger | ✅ | 2026-01-25 | 2026-01-25 | signal_logger.py + DDL ml.llm_signals |
|
||||
| 3.2.5 Documentar flujo | ✅ | 2026-01-25 | 2026-01-25 | integration.py + decision_parser.py |
|
||||
|
||||
---
|
||||
|
||||
### 1.4 FASE 4: VALIDACIÓN
|
||||
|
||||
#### TASK-4.1: Backtesting Validation
|
||||
|
||||
| Subtarea | Estado | Inicio | Fin | Notas |
|
||||
|----------|--------|--------|-----|-------|
|
||||
| 4.1.1-4.1.6 | Pendiente | - | - | - |
|
||||
|
||||
---
|
||||
|
||||
## 2. ARCHIVOS CREADOS
|
||||
|
||||
### Fase 1.1 - Data Pipeline
|
||||
|
||||
| Archivo | Tipo | Líneas | Commit |
|
||||
|---------|------|--------|--------|
|
||||
| apps/ml-engine/src/data/training_loader.py | module | ~300 | pending |
|
||||
| apps/ml-engine/src/data/dataset.py | module | ~250 | pending |
|
||||
| apps/ml-engine/src/data/validators.py | module | ~200 | pending |
|
||||
| apps/ml-engine/src/data/__init__.py | init | ~50 | pending |
|
||||
| apps/data-service/scripts/migrate_historical_data.py | script | ~400 | pending |
|
||||
| docs/.../implementacion/DATA-PIPELINE-SPEC.md | docs | ~200 | pending |
|
||||
|
||||
### Fase 1.2 - Attention Architecture
|
||||
|
||||
| Archivo | Tipo | Líneas | Commit |
|
||||
|---------|------|--------|--------|
|
||||
| apps/ml-engine/src/models/attention/multi_head_attention.py | module | ~300 | pending |
|
||||
| apps/ml-engine/src/models/attention/positional_encoding.py | module | ~300 | pending |
|
||||
| apps/ml-engine/src/models/attention/price_attention.py | module | ~400 | pending |
|
||||
| apps/ml-engine/src/models/attention/attention_extractor.py | module | ~500 | pending |
|
||||
| apps/ml-engine/src/models/attention/__init__.py | init | ~100 | pending |
|
||||
| apps/ml-engine/tests/test_attention_architecture.py | tests | ~600 | pending |
|
||||
|
||||
**Total Fase 1:** 12 archivos, ~3,600 líneas
|
||||
|
||||
### Fase 2 - Estrategias de Modelos
|
||||
|
||||
#### PVA (Price Variation Attention)
|
||||
| Archivo | Líneas |
|
||||
|---------|--------|
|
||||
| strategies/pva/feature_engineering.py | ~700 |
|
||||
| strategies/pva/model.py | ~920 |
|
||||
| strategies/pva/trainer.py | ~790 |
|
||||
| strategies/pva/__init__.py | ~110 |
|
||||
|
||||
#### MRD (Momentum Regime Detection)
|
||||
| Archivo | Líneas |
|
||||
|---------|--------|
|
||||
| strategies/mrd/feature_engineering.py | ~540 |
|
||||
| strategies/mrd/hmm_regime.py | ~450 |
|
||||
| strategies/mrd/model.py | ~600 |
|
||||
| strategies/mrd/trainer.py | ~530 |
|
||||
| strategies/mrd/__init__.py | ~85 |
|
||||
|
||||
#### VBP (Volatility Breakout Predictor)
|
||||
| Archivo | Líneas |
|
||||
|---------|--------|
|
||||
| strategies/vbp/feature_engineering.py | ~500 |
|
||||
| strategies/vbp/cnn_encoder.py | ~400 |
|
||||
| strategies/vbp/model.py | ~500 |
|
||||
| strategies/vbp/trainer.py | ~450 |
|
||||
| strategies/vbp/__init__.py | ~80 |
|
||||
|
||||
#### MSA (Market Structure Analysis)
|
||||
| Archivo | Líneas |
|
||||
|---------|--------|
|
||||
| strategies/msa/structure_detector.py | ~800 |
|
||||
| strategies/msa/feature_engineering.py | ~570 |
|
||||
| strategies/msa/model.py | ~470 |
|
||||
| strategies/msa/trainer.py | ~470 |
|
||||
| strategies/msa/__init__.py | ~90 |
|
||||
|
||||
#### MTS (Multi-Timeframe Synthesis)
|
||||
| Archivo | Líneas |
|
||||
|---------|--------|
|
||||
| strategies/mts/feature_engineering.py | ~500 |
|
||||
| strategies/mts/hierarchical_attention.py | ~450 |
|
||||
| strategies/mts/model.py | ~500 |
|
||||
| strategies/mts/trainer.py | ~480 |
|
||||
| strategies/mts/__init__.py | ~85 |
|
||||
|
||||
**Total Fase 2:** 24 archivos, ~11,000+ líneas
|
||||
|
||||
---
|
||||
|
||||
## 3. ARCHIVOS MODIFICADOS
|
||||
|
||||
*(Se actualizará durante la ejecución)*
|
||||
|
||||
| Archivo | Cambio | Commit |
|
||||
|---------|--------|--------|
|
||||
| - | - | - |
|
||||
|
||||
---
|
||||
|
||||
## 4. VALIDACIONES
|
||||
|
||||
| Validación | Estado | Output |
|
||||
|------------|--------|--------|
|
||||
| Build ML Engine | Pendiente | - |
|
||||
| Tests ML Engine | Pendiente | - |
|
||||
| Lint Python | Pendiente | - |
|
||||
| Backtesting | Pendiente | - |
|
||||
|
||||
---
|
||||
|
||||
## 5. MÉTRICAS DE PROGRESO
|
||||
|
||||
| Fase | Subtareas | Completadas | % |
|
||||
|------|-----------|-------------|---|
|
||||
| FASE 1 | 8 | 8 | **100%** ✅ |
|
||||
| FASE 2 | 30 | 30 | **100%** ✅ |
|
||||
| FASE 3 | 10 | 10 | **100%** ✅ |
|
||||
| FASE 4 | 6 | 0 | 0% |
|
||||
| **TOTAL** | **54** | **48** | **89%** |
|
||||
|
||||
---
|
||||
|
||||
## 6. ISSUES Y BLOCKERS
|
||||
|
||||
*(Se actualizará durante la ejecución)*
|
||||
|
||||
| ID | Descripción | Severidad | Estado | Resolución |
|
||||
|----|-------------|-----------|--------|------------|
|
||||
| - | - | - | - | - |
|
||||
|
||||
---
|
||||
|
||||
## 7. COMMITS
|
||||
|
||||
*(Se actualizará durante la ejecución)*
|
||||
|
||||
| Hash | Mensaje | Fecha |
|
||||
|------|---------|-------|
|
||||
| - | - | - |
|
||||
|
||||
---
|
||||
|
||||
**Próxima acción:** Iniciar FASE 1 - Data Pipeline
|
||||
@ -0,0 +1,288 @@
|
||||
# 06-DOCUMENTACIÓN: Mejora Integral de Modelos ML para Trading
|
||||
|
||||
**Task ID:** TASK-2026-01-25-ML-TRAINING-ENHANCEMENT
|
||||
**Fase:** D - Documentación
|
||||
**Estado:** En Progreso (parcial)
|
||||
**Fecha:** 2026-01-25
|
||||
|
||||
---
|
||||
|
||||
## 1. DOCUMENTACIÓN CREADA
|
||||
|
||||
### 1.1 Orchestration (Esta tarea)
|
||||
|
||||
| Archivo | Propósito | Estado |
|
||||
|---------|-----------|--------|
|
||||
| METADATA.yml | Metadata de la tarea | ✅ Creado |
|
||||
| 01-CONTEXTO.md | Fase C de CAPVED | ✅ Creado |
|
||||
| 02-ANALISIS.md | Fase A de CAPVED | ✅ Creado |
|
||||
| 03-PLANEACION.md | Fase P de CAPVED | ✅ Creado |
|
||||
| 04-VALIDACION.md | Fase V de CAPVED | ✅ Creado |
|
||||
| 05-EJECUCION.md | Fase E de CAPVED | ✅ Creado |
|
||||
| 06-DOCUMENTACION.md | Fase D de CAPVED | ✅ Creado |
|
||||
|
||||
### 1.2 Especificaciones Técnicas (Pendientes)
|
||||
|
||||
| Archivo | Propósito | Estado |
|
||||
|---------|-----------|--------|
|
||||
| DATA-PIPELINE.md | Schema y pipeline de datos | ⏳ Pendiente |
|
||||
| PVA-SPEC.md | Especificación estrategia 1 | ⏳ Pendiente |
|
||||
| MRD-SPEC.md | Especificación estrategia 2 | ⏳ Pendiente |
|
||||
| VBP-SPEC.md | Especificación estrategia 3 | ⏳ Pendiente |
|
||||
| MSA-SPEC.md | Especificación estrategia 4 | ⏳ Pendiente |
|
||||
| MTS-SPEC.md | Especificación estrategia 5 | ⏳ Pendiente |
|
||||
| METAMODEL-SPEC.md | Especificación del ensemble | ⏳ Pendiente |
|
||||
| LLM-INTEGRATION.md | Integración con LLM | ⏳ Pendiente |
|
||||
| BACKTEST-RESULTS.md | Resultados de backtesting | ⏳ Pendiente |
|
||||
|
||||
---
|
||||
|
||||
## 2. DOCUMENTACIÓN ACTUALIZADA
|
||||
|
||||
### 2.1 Actualizaciones Requeridas
|
||||
|
||||
| Archivo | Cambio | Estado |
|
||||
|---------|--------|--------|
|
||||
| `OQI-006/_MAP.md` | Agregar nuevas estrategias | ⏳ Pendiente |
|
||||
| `OQI-006/README.md` | Actualizar arquitectura | ⏳ Pendiente |
|
||||
| `MASTER_INVENTORY.yml` | Agregar nuevos modelos | ⏳ Pendiente |
|
||||
| `PROJECT-STATUS.md` | Reflejar nueva tarea | ⏳ Pendiente |
|
||||
| `PROXIMA-ACCION.md` | Actualizar checkpoint | ⏳ Pendiente |
|
||||
| `_INDEX.yml` de tareas | Registrar esta tarea | ⏳ Pendiente |
|
||||
|
||||
---
|
||||
|
||||
## 3. DOCUMENTACIÓN A PURGAR
|
||||
|
||||
### 3.1 Archivos Obsoletos
|
||||
|
||||
| Archivo | Razón | Acción |
|
||||
|---------|-------|--------|
|
||||
| `NOTA-DISCREPANCIA-PUERTOS-2025-12-08.md` | Nota temporal obsoleta | Eliminar |
|
||||
|
||||
### 3.2 Archivos para Consolidar
|
||||
|
||||
| Archivos | Archivo Destino | Acción |
|
||||
|----------|-----------------|--------|
|
||||
| Múltiples ARQUITECTURA-*.md | ARQUITECTURA-ML-UNIFICADA.md | Consolidar |
|
||||
|
||||
---
|
||||
|
||||
## 4. INVENTARIOS
|
||||
|
||||
### 4.1 ML_INVENTORY.yml (NUEVO)
|
||||
|
||||
```yaml
|
||||
# orchestration/inventarios/ML_INVENTORY.yml
|
||||
version: "1.0.0"
|
||||
updated: "2026-01-25"
|
||||
|
||||
modelos:
|
||||
level_0_attention:
|
||||
- name: "AttentionScoreModel"
|
||||
status: "trained"
|
||||
symbols: ["XAUUSD", "EURUSD", "BTCUSD", "GBPUSD", "USDJPY", "AUDUSD"]
|
||||
timeframes: ["5m", "15m"]
|
||||
count: 12
|
||||
|
||||
level_1_strategies:
|
||||
- name: "PVA - Price Variation Attention"
|
||||
status: "planned"
|
||||
architecture: "Transformer + XGBoost"
|
||||
|
||||
- name: "MRD - Momentum Regime Detection"
|
||||
status: "planned"
|
||||
architecture: "HMM + LSTM + XGBoost"
|
||||
|
||||
- name: "VBP - Volatility Breakout Predictor"
|
||||
status: "planned"
|
||||
architecture: "CNN 1D + Attention + XGBoost"
|
||||
|
||||
- name: "MSA - Market Structure Analysis"
|
||||
status: "planned"
|
||||
architecture: "XGBoost (GNN opcional)"
|
||||
|
||||
- name: "MTS - Multi-Timeframe Synthesis"
|
||||
status: "planned"
|
||||
architecture: "Hierarchical Attention Network"
|
||||
|
||||
level_2_metamodel:
|
||||
- name: "Neural Gating Metamodel"
|
||||
status: "planned"
|
||||
architecture: "MLP Gating + Weighted Ensemble"
|
||||
|
||||
datos:
|
||||
historical:
|
||||
source: "WorkspaceOld/trading MySQL dumps"
|
||||
size: "5.6 GB"
|
||||
status: "pending_migration"
|
||||
|
||||
current:
|
||||
source: "Polygon API"
|
||||
bars: 469217
|
||||
symbols: 6
|
||||
period: "365 days"
|
||||
status: "loaded"
|
||||
|
||||
metricas_objetivo:
|
||||
efectividad: ">=80%"
|
||||
sharpe_ratio: ">=1.5"
|
||||
max_drawdown: "<=15%"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 5. DIAGRAMAS
|
||||
|
||||
### 5.1 Arquitectura General (ASCII)
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────────────────────────┐
|
||||
│ ML TRAINING ENHANCEMENT ARCHITECTURE │
|
||||
├─────────────────────────────────────────────────────────────────────────────────┤
|
||||
│ │
|
||||
│ ┌─────────────┐ │
|
||||
│ │ Market Data │ ─────────────────────────────────────────┐ │
|
||||
│ │ (PostgreSQL)│ │ │
|
||||
│ └─────────────┘ ▼ │
|
||||
│ ┌─────────────────┐ │
|
||||
│ │ Feature Engine │ │
|
||||
│ │ (Per Strategy) │ │
|
||||
│ └────────┬────────┘ │
|
||||
│ │ │
|
||||
│ ┌──────────────────────────────────────────────────┼──────────────┐ │
|
||||
│ │ │ │ │ │ │
|
||||
│ ▼ ▼ ▼ ▼ ▼ │
|
||||
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
|
||||
│ │ PVA │ │ MRD │ │ VBP │ │ MSA │ │ MTS │ │
|
||||
│ │Transformer│ │HMM+LSTM │ │ CNN 1D │ │ XGBoost │ │Hier.Attn │ │
|
||||
│ │+XGBoost │ │+XGBoost │ │+Attention│ │ /GNN │ │ Network │ │
|
||||
│ └────┬─────┘ └────┬─────┘ └────┬─────┘ └────┬─────┘ └────┬─────┘ │
|
||||
│ │ │ │ │ │ │
|
||||
│ └──────────────────┴──────────────────┴────────────┴────────────┘ │
|
||||
│ │ │
|
||||
│ ▼ │
|
||||
│ ┌─────────────────────┐ │
|
||||
│ │ Neural Gating │ │
|
||||
│ │ Metamodel │ │
|
||||
│ │ (Weighted Ensemble)│ │
|
||||
│ └──────────┬──────────┘ │
|
||||
│ │ │
|
||||
│ ▼ │
|
||||
│ ┌─────────────────────┐ │
|
||||
│ │ Signal Formatter │ │
|
||||
│ │ (For LLM) │ │
|
||||
│ └──────────┬──────────┘ │
|
||||
│ │ │
|
||||
│ ▼ │
|
||||
│ ┌─────────────────────┐ │
|
||||
│ │ LLM Agent │ │
|
||||
│ │ (Ollama/Claude) │ │
|
||||
│ └──────────┬──────────┘ │
|
||||
│ │ │
|
||||
│ ▼ │
|
||||
│ ┌─────────────────────┐ │
|
||||
│ │ Trading Decision │ │
|
||||
│ │ (TRADE/NO_TRADE) │ │
|
||||
│ └─────────────────────┘ │
|
||||
│ │
|
||||
└─────────────────────────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 6. ADRs (Decisiones Arquitectónicas)
|
||||
|
||||
### ADR-ML-001: Elección de 5 Estrategias Diversificadas
|
||||
|
||||
**Contexto:** Se necesitan múltiples estrategias de predicción para lograr 80% de efectividad.
|
||||
|
||||
**Decisión:** Implementar 5 estrategias complementarias:
|
||||
1. PVA - Enfoque en variación de precio pura
|
||||
2. MRD - Detección de régimen de mercado
|
||||
3. VBP - Predicción de breakouts de volatilidad
|
||||
4. MSA - Análisis de estructura de mercado
|
||||
5. MTS - Síntesis multi-timeframe
|
||||
|
||||
**Consecuencias:**
|
||||
- (+) Diversificación reduce riesgo de fallo sistémico
|
||||
- (+) Cada estrategia captura diferentes aspectos del mercado
|
||||
- (-) Mayor complejidad de implementación
|
||||
- (-) Mayor costo computacional de entrenamiento
|
||||
|
||||
### ADR-ML-002: Neural Gating vs Simple Average
|
||||
|
||||
**Contexto:** Se necesita combinar predicciones de 5 estrategias.
|
||||
|
||||
**Decisión:** Usar Neural Gating Network en lugar de promedio simple.
|
||||
|
||||
**Consecuencias:**
|
||||
- (+) Ponderación dinámica según contexto de mercado
|
||||
- (+) Aprende qué estrategia funciona mejor en qué régimen
|
||||
- (-) Requiere datos de entrenamiento adicionales
|
||||
- (-) Riesgo de colapso a una estrategia (mitigado con regularización)
|
||||
|
||||
### ADR-ML-003: Atención Agnóstica al Tiempo
|
||||
|
||||
**Contexto:** Se requiere que los modelos funcionen sin depender del horario.
|
||||
|
||||
**Decisión:** No usar features de sesión/hora en Estrategia PVA. Usar solo retornos y derivados.
|
||||
|
||||
**Consecuencias:**
|
||||
- (+) Modelo generaliza mejor a diferentes mercados
|
||||
- (+) Evita overfitting a patrones de sesión específicos
|
||||
- (-) Pierde información de sesión que puede ser valiosa
|
||||
- (-) Otras estrategias (MTS) sí usarán sesión para complementar
|
||||
|
||||
---
|
||||
|
||||
## 7. LECCIONES APRENDIDAS
|
||||
|
||||
*(Se actualizará al completar la tarea)*
|
||||
|
||||
```yaml
|
||||
que_funciono_bien: []
|
||||
que_se_puede_mejorar: []
|
||||
para_futuras_tareas_similares: []
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 8. REFERENCIAS
|
||||
|
||||
### 8.1 Documentos Internos
|
||||
|
||||
- `@CAPVED` - Ciclo de vida de tareas
|
||||
- `orchestration/directivas/simco/SIMCO-TAREA.md`
|
||||
- `docs/02-definicion-modulos/OQI-006-ml-signals/_MAP.md`
|
||||
- `projects/trading-platform/apps/ml-engine/`
|
||||
|
||||
### 8.2 Proyecto Antiguo
|
||||
|
||||
- `C:\Empresas\WorkspaceOld\Projects\trading\`
|
||||
- Arquitectura XGBoost + GRU + Metamodelos
|
||||
- 22 indicadores técnicos
|
||||
|
||||
### 8.3 Referencias Externas
|
||||
|
||||
- Attention Is All You Need (Transformers)
|
||||
- XGBoost Documentation
|
||||
- Hidden Markov Models for Time Series
|
||||
- ICT/SMC Concepts (Market Structure)
|
||||
|
||||
---
|
||||
|
||||
## 9. CHECKLIST DE DOCUMENTACIÓN
|
||||
|
||||
- [x] Archivos CAPVED creados
|
||||
- [ ] Especificaciones técnicas creadas
|
||||
- [ ] Inventarios actualizados
|
||||
- [ ] _INDEX.yml actualizado
|
||||
- [ ] PROJECT-STATUS.md actualizado
|
||||
- [ ] PROXIMA-ACCION.md actualizado
|
||||
- [ ] Diagramas en formato exportable
|
||||
- [ ] ADRs registrados en docs/97-adr/
|
||||
|
||||
---
|
||||
|
||||
**Estado:** Documentación parcial completada. Pendiente actualización post-ejecución.
|
||||
@ -0,0 +1,248 @@
|
||||
# ═══════════════════════════════════════════════════════════════════════════════
|
||||
# METADATA DE TAREA - ML TRAINING ENHANCEMENT
|
||||
# ═══════════════════════════════════════════════════════════════════════════════
|
||||
|
||||
version: "1.1.0"
|
||||
task_id: "TASK-2026-01-25-ML-TRAINING-ENHANCEMENT"
|
||||
|
||||
# ─────────────────────────────────────────────────────────────────────────────────
|
||||
# IDENTIFICACIÓN
|
||||
# ─────────────────────────────────────────────────────────────────────────────────
|
||||
|
||||
identificacion:
|
||||
titulo: "Mejora Integral de Modelos ML para Trading - Arquitectura Avanzada"
|
||||
descripcion: |
|
||||
Análisis exhaustivo y planificación de mejoras para los modelos de Machine Learning
|
||||
de trading-platform, incluyendo:
|
||||
- Migración e integración de conocimiento del proyecto antiguo (WorkspaceOld/trading)
|
||||
- Diseño de 3-5 estrategias diferentes con features/targets especializados
|
||||
- Implementación de mecanismos de atención sobre variación de precio
|
||||
- Modelos especializados por activo
|
||||
- Integración LLM para decisiones basadas en predicciones ensemble
|
||||
- Objetivo: 80% de efectividad mínima en operaciones
|
||||
tipo: "analysis"
|
||||
prioridad: "P0"
|
||||
tags:
|
||||
- "ml"
|
||||
- "deep-learning"
|
||||
- "attention-mechanisms"
|
||||
- "trading"
|
||||
- "metamodels"
|
||||
- "llm-integration"
|
||||
- "strategy-ensemble"
|
||||
|
||||
# ─────────────────────────────────────────────────────────────────────────────────
|
||||
# RESPONSABILIDAD
|
||||
# ─────────────────────────────────────────────────────────────────────────────────
|
||||
|
||||
responsabilidad:
|
||||
agente_responsable: "ARQUITECTO-ML-AI"
|
||||
agente_modelo: "claude-opus-4-5"
|
||||
delegado_de: null
|
||||
delegado_a:
|
||||
- "TASK-2026-01-25-ML-STRATEGY-1-PRICE-VARIATION"
|
||||
- "TASK-2026-01-25-ML-STRATEGY-2-MOMENTUM-REGIME"
|
||||
- "TASK-2026-01-25-ML-STRATEGY-3-VOLATILITY-BREAKOUT"
|
||||
- "TASK-2026-01-25-ML-STRATEGY-4-MARKET-STRUCTURE"
|
||||
- "TASK-2026-01-25-ML-STRATEGY-5-MULTI-TIMEFRAME"
|
||||
- "TASK-2026-01-25-ML-ATTENTION-ARCHITECTURE"
|
||||
- "TASK-2026-01-25-ML-LLM-STRATEGY-INTEGRATION"
|
||||
- "TASK-2026-01-25-ML-DATA-PIPELINE"
|
||||
- "TASK-2026-01-25-ML-BACKTESTING-VALIDATION"
|
||||
|
||||
# ─────────────────────────────────────────────────────────────────────────────────
|
||||
# ALCANCE
|
||||
# ─────────────────────────────────────────────────────────────────────────────────
|
||||
|
||||
alcance:
|
||||
nivel: "proyecto"
|
||||
proyecto: "trading-platform"
|
||||
modulo: "ml-engine"
|
||||
capas_afectadas:
|
||||
- "database"
|
||||
- "backend"
|
||||
- "docs"
|
||||
|
||||
# ─────────────────────────────────────────────────────────────────────────────────
|
||||
# TEMPORALIDAD
|
||||
# ─────────────────────────────────────────────────────────────────────────────────
|
||||
|
||||
temporalidad:
|
||||
fecha_inicio: "2026-01-25 00:00"
|
||||
fecha_fin: null
|
||||
duracion_estimada: "40h"
|
||||
duracion_real: null
|
||||
|
||||
# ─────────────────────────────────────────────────────────────────────────────────
|
||||
# ESTADO
|
||||
# ─────────────────────────────────────────────────────────────────────────────────
|
||||
|
||||
estado:
|
||||
actual: "en_progreso"
|
||||
fase_actual: "E"
|
||||
porcentaje: 70
|
||||
motivo_bloqueo: null
|
||||
|
||||
# ─────────────────────────────────────────────────────────────────────────────────
|
||||
# FASES CAPVED
|
||||
# ─────────────────────────────────────────────────────────────────────────────────
|
||||
|
||||
fases:
|
||||
contexto:
|
||||
estado: "completada"
|
||||
archivo: "01-CONTEXTO.md"
|
||||
completado_en: "2026-01-25"
|
||||
|
||||
analisis:
|
||||
estado: "completada"
|
||||
archivo: "02-ANALISIS.md"
|
||||
completado_en: "2026-01-25"
|
||||
|
||||
plan:
|
||||
estado: "en_progreso"
|
||||
archivo: "03-PLANEACION.md"
|
||||
completado_en: null
|
||||
|
||||
validacion:
|
||||
estado: "pendiente"
|
||||
archivo: "04-VALIDACION.md"
|
||||
completado_en: null
|
||||
|
||||
ejecucion:
|
||||
estado: "pendiente"
|
||||
archivo: "05-EJECUCION.md"
|
||||
completado_en: null
|
||||
|
||||
documentacion:
|
||||
estado: "pendiente"
|
||||
archivo: "06-DOCUMENTACION.md"
|
||||
completado_en: null
|
||||
|
||||
# ─────────────────────────────────────────────────────────────────────────────────
|
||||
# ARTEFACTOS
|
||||
# ─────────────────────────────────────────────────────────────────────────────────
|
||||
|
||||
artefactos:
|
||||
archivos_creados:
|
||||
- ruta: "docs/02-definicion-modulos/OQI-006-ml-signals/ML-TRAINING-ENHANCEMENT-SPEC.md"
|
||||
tipo: "specification"
|
||||
lineas: 0
|
||||
|
||||
archivos_modificados: []
|
||||
archivos_eliminados: []
|
||||
commits: []
|
||||
|
||||
# ─────────────────────────────────────────────────────────────────────────────────
|
||||
# RELACIONES
|
||||
# ─────────────────────────────────────────────────────────────────────────────────
|
||||
|
||||
relaciones:
|
||||
tarea_padre: null
|
||||
subtareas:
|
||||
# Nivel 1 - Estrategias de Modelos
|
||||
- "TASK-2026-01-25-ML-STRATEGY-1-PRICE-VARIATION"
|
||||
- "TASK-2026-01-25-ML-STRATEGY-2-MOMENTUM-REGIME"
|
||||
- "TASK-2026-01-25-ML-STRATEGY-3-VOLATILITY-BREAKOUT"
|
||||
- "TASK-2026-01-25-ML-STRATEGY-4-MARKET-STRUCTURE"
|
||||
- "TASK-2026-01-25-ML-STRATEGY-5-MULTI-TIMEFRAME"
|
||||
# Nivel 1 - Infraestructura
|
||||
- "TASK-2026-01-25-ML-ATTENTION-ARCHITECTURE"
|
||||
- "TASK-2026-01-25-ML-LLM-STRATEGY-INTEGRATION"
|
||||
- "TASK-2026-01-25-ML-DATA-PIPELINE"
|
||||
- "TASK-2026-01-25-ML-BACKTESTING-VALIDATION"
|
||||
tareas_relacionadas:
|
||||
- "TASK-2026-01-25-ML-DATA-MIGRATION"
|
||||
bloquea: []
|
||||
bloqueada_por: []
|
||||
|
||||
# ─────────────────────────────────────────────────────────────────────────────────
|
||||
# VALIDACIONES
|
||||
# ─────────────────────────────────────────────────────────────────────────────────
|
||||
|
||||
validaciones:
|
||||
build:
|
||||
estado: "na"
|
||||
output: null
|
||||
lint:
|
||||
estado: "na"
|
||||
errores: 0
|
||||
warnings: 0
|
||||
tests:
|
||||
estado: "na"
|
||||
passed: 0
|
||||
failed: 0
|
||||
typecheck:
|
||||
estado: "na"
|
||||
errores: 0
|
||||
documentacion_completa: false
|
||||
|
||||
# ─────────────────────────────────────────────────────────────────────────────────
|
||||
# REFERENCIAS
|
||||
# ─────────────────────────────────────────────────────────────────────────────────
|
||||
|
||||
referencias:
|
||||
documentos_consultados:
|
||||
- "@CAPVED"
|
||||
- "C:\\Empresas\\WorkspaceOld\\Projects\\trading"
|
||||
- "projects/trading-platform/apps/ml-engine/"
|
||||
- "docs/02-definicion-modulos/OQI-006-ml-signals/"
|
||||
directivas_aplicadas:
|
||||
- "@ANALYSIS"
|
||||
- "@SIMCO-TAREA"
|
||||
epica: "OQI-006"
|
||||
user_story: null
|
||||
|
||||
# ─────────────────────────────────────────────────────────────────────────────────
|
||||
# TRACKING DE CONTEXTO/TOKENS
|
||||
# ─────────────────────────────────────────────────────────────────────────────────
|
||||
|
||||
context_tracking:
|
||||
estimated_tokens:
|
||||
initial_context: 50000
|
||||
files_loaded: 25000
|
||||
total_conversation: 150000
|
||||
|
||||
context_cleanups: 0
|
||||
checkpoints_created: 1
|
||||
|
||||
subagents:
|
||||
- id: "explore-trading-old"
|
||||
profile: "Explore"
|
||||
estimated_tokens: 30000
|
||||
files_loaded: 50
|
||||
task_description: "Exploración exhaustiva del proyecto antiguo trading"
|
||||
- id: "explore-trading-platform"
|
||||
profile: "Explore"
|
||||
estimated_tokens: 35000
|
||||
files_loaded: 95
|
||||
task_description: "Exploración del proyecto trading-platform actual"
|
||||
- id: "explore-docs"
|
||||
profile: "Explore"
|
||||
estimated_tokens: 15000
|
||||
files_loaded: 40
|
||||
task_description: "Revisión de documentación ML y trading"
|
||||
|
||||
efficiency_metrics:
|
||||
tokens_per_file_modified: 0
|
||||
tasks_completed_per_cleanup: 0
|
||||
context_utilization_peak: "45%"
|
||||
|
||||
# ─────────────────────────────────────────────────────────────────────────────────
|
||||
# NOTAS Y LECCIONES APRENDIDAS
|
||||
# ─────────────────────────────────────────────────────────────────────────────────
|
||||
|
||||
notas: |
|
||||
Esta tarea es una iniciativa estratégica para mejorar significativamente la precisión
|
||||
de los modelos de ML de trading-platform. Se identificaron múltiples oportunidades
|
||||
de mejora basadas en:
|
||||
1. Conocimiento del proyecto antiguo (XGBoost + GRU + Metamodelos)
|
||||
2. Arquitectura actual (15 modelos con atención Level 0)
|
||||
3. Literatura de ML financiero (Attention, Transformers, Regime Detection)
|
||||
|
||||
Objetivo clave: 80% de efectividad en operaciones ejecutadas por LLM.
|
||||
|
||||
lecciones_aprendidas: []
|
||||
|
||||
# ═══════════════════════════════════════════════════════════════════════════════
|
||||
# FIN DE METADATA
|
||||
# ═══════════════════════════════════════════════════════════════════════════════
|
||||
@ -0,0 +1,105 @@
|
||||
# SUMMARY: Mejora Integral de Modelos ML para Trading
|
||||
|
||||
**Task ID:** TASK-2026-01-25-ML-TRAINING-ENHANCEMENT
|
||||
**Tipo:** analysis + feature
|
||||
**Prioridad:** P0
|
||||
**Epic:** OQI-006-ml-signals
|
||||
|
||||
---
|
||||
|
||||
## RESUMEN EJECUTIVO
|
||||
|
||||
Esta tarea define un plan integral para mejorar los modelos de Machine Learning de trading-platform con el objetivo de alcanzar **80% de efectividad mínima** en las operaciones de trading ejecutadas por el LLM.
|
||||
|
||||
### Alcance
|
||||
|
||||
- **5 estrategias de modelos** con arquitecturas diversificadas
|
||||
- **Neural Gating Metamodel** para ensemble ponderado dinámico
|
||||
- **Integración LLM** para decisiones basadas en predicciones
|
||||
- **Modelos especializados por activo** (6 símbolos)
|
||||
- **Mecanismos de atención** sobre variación de precio
|
||||
|
||||
### Estrategias Diseñadas
|
||||
|
||||
| # | Código | Nombre | Arquitectura |
|
||||
|---|--------|--------|--------------|
|
||||
| 1 | PVA | Price Variation Attention | Transformer + XGBoost |
|
||||
| 2 | MRD | Momentum Regime Detection | HMM + LSTM + XGBoost |
|
||||
| 3 | VBP | Volatility Breakout Predictor | CNN 1D + Attention + XGBoost |
|
||||
| 4 | MSA | Market Structure Analysis | XGBoost (GNN opcional) |
|
||||
| 5 | MTS | Multi-Timeframe Synthesis | Hierarchical Attention Network |
|
||||
|
||||
### Fases de Ejecución
|
||||
|
||||
```
|
||||
FASE 1: Infraestructura (Data Pipeline + Attention Architecture)
|
||||
↓
|
||||
FASE 2: 5 Estrategias (Paralelo)
|
||||
↓
|
||||
FASE 3: Integración (Metamodel + LLM)
|
||||
↓
|
||||
FASE 4: Validación (Backtesting)
|
||||
```
|
||||
|
||||
### Métricas Objetivo
|
||||
|
||||
| Métrica | Objetivo |
|
||||
|---------|----------|
|
||||
| Efectividad operaciones | ≥80% |
|
||||
| Direction accuracy | ≥70% |
|
||||
| Sharpe Ratio | ≥1.5 |
|
||||
| Max Drawdown | ≤15% |
|
||||
|
||||
### Estimación
|
||||
|
||||
- **Subtareas totales:** 54
|
||||
- **Story Points:** 90 SP
|
||||
- **GPU Hours:** ~410h
|
||||
- **Storage adicional:** ~26GB
|
||||
|
||||
### Dependencias Principales
|
||||
|
||||
1. Migración de datos históricos (5.6GB de WorkspaceOld)
|
||||
2. GPU 16GB VRAM (disponible)
|
||||
3. PyTorch ≥2.0, XGBoost, hmmlearn
|
||||
|
||||
### Estado Actual
|
||||
|
||||
| Fase | Estado |
|
||||
|------|--------|
|
||||
| C - Contexto | ✅ Completada |
|
||||
| A - Análisis | ✅ Completada |
|
||||
| P - Planeación | ✅ Completada |
|
||||
| V - Validación | ✅ Aprobada |
|
||||
| E - Ejecución | ⏳ Pendiente |
|
||||
| D - Documentación | 🔄 En progreso |
|
||||
|
||||
---
|
||||
|
||||
## PRÓXIMOS PASOS
|
||||
|
||||
1. **Aprobar plan** con usuario
|
||||
2. **Iniciar FASE 1** (Data Pipeline + Attention Architecture)
|
||||
3. **Asignar agentes** para ejecución paralela en FASE 2
|
||||
4. **Monitorear progreso** con métricas definidas
|
||||
|
||||
---
|
||||
|
||||
## ARCHIVOS DE LA TAREA
|
||||
|
||||
```
|
||||
orchestration/tareas/TASK-2026-01-25-ML-TRAINING-ENHANCEMENT/
|
||||
├── METADATA.yml # Metadata completa
|
||||
├── 01-CONTEXTO.md # Fase C
|
||||
├── 02-ANALISIS.md # Fase A (extenso)
|
||||
├── 03-PLANEACION.md # Fase P (extenso)
|
||||
├── 04-VALIDACION.md # Fase V
|
||||
├── 05-EJECUCION.md # Fase E (template)
|
||||
├── 06-DOCUMENTACION.md # Fase D
|
||||
└── SUMMARY.md # Este archivo
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
**Creado:** 2026-01-25
|
||||
**Agente:** ARQUITECTO-ML-AI (Claude Opus 4.5)
|
||||
Loading…
Reference in New Issue
Block a user