Add walk-forward validation with optimizer, OOS evaluation and visualizer

This commit is contained in:
DaM
2026-01-28 23:40:12 +01:00
parent e15074c0a7
commit af7b862f60
11 changed files with 910 additions and 10 deletions

View File

@@ -273,6 +273,113 @@ Win Rate: 45%
Profit Factor: 1.1
```
## 🔁 Walk-Forward Validation (Out-of-Sample)
### 📌 ¿Qué es Walk-Forward Validation?
El *walk-forward validation* es una técnica avanzada de validación que simula cómo se comportaría una estrategia en condiciones reales:
- Los parámetros se **optimizan solo en datos pasados (TRAIN)**
- La estrategia se **ejecuta en datos futuros no vistos (TEST)**
- El proceso se repite de forma deslizante a lo largo del tiempo
Esto evita:
- Look-ahead bias
- Overfitting clásico
- Optimismo artificial en backtests
Es el estándar en *quant research* profesional.
---
### 🧠 Metodología aplicada en este proyecto
Para cada ventana temporal:
1. **TRAIN**
- Periodo fijo de entrenamiento
- Optimización por grid search
- Selección de parámetros según métrica objetivo (Sharpe Ratio)
2. **TEST (Out-of-Sample)**
- Backtest con los mejores parámetros del TRAIN
- Sin reoptimización
- Métricas registradas de forma independiente
3. **Desplazamiento**
- La ventana avanza en el tiempo
- Se repite el proceso hasta agotar los datos
---
### ⏱️ Configuración utilizada
- **Activo:** BTC/USDT
- **Timeframe:** 1h
- **Ventana TRAIN:** 365 días
- **Ventana TEST:** 90 días
- **Step:** 90 días
- **Capital inicial:** $10,000
- **Comisión:** 0.1%
- **Slippage:** 0.05%
**Estrategia base:**
- Moving Average Crossover
- Filtro de tendencia con ADX
---
### 📊 Resultados por ventana (TEST Out-of-Sample)
| Window | Return % | Sharpe | Max DD % | Trades | Parámetros |
|------|----------|--------|----------|--------|------------|
| 1 | +38.00 | 0.75 | -11.93 | 3 | MA(15/50) + ADX 25 |
| 2 | +3.62 | 0.10 | -23.67 | 2 | MA(15/50) + ADX 30 |
| 3 | +8.54 | 0.22 | -10.28 | 2 | MA(15/50) + ADX 30 |
| 4 | 0.00 | 0.00 | 0.00 | 0 | Sin trades |
| 5 | +9.71 | 0.26 | -10.57 | 2 | MA(15/50) + ADX 30 |
| 6 | 0.00 | 0.00 | 0.00 | 0 | Sin trades |
| 7 | -2.25 | -0.06 | -12.42 | 2 | MA(15/50) + ADX 30 |
| 8 | -2.27 | -0.13 | -5.46 | 2 | MA(15/30) + ADX 30 |
---
### 📈 Métricas agregadas (Out-of-Sample)
- **Ventanas evaluadas:** 8
- **Retorno medio:** +6.92%
- **Sharpe medio:** 0.14
- **Max Drawdown medio:** -9.29%
---
### 🧩 Interpretación de resultados
- La estrategia **no es sobreoptimizada**
- Existen ventanas sin operaciones → el sistema sabe **no operar**
- Las pérdidas están **controladas**
- No hay colapsos en mercados adversos
- El rendimiento depende claramente del régimen de mercado
Este comportamiento es consistente con una estrategia:
- Tendencial
- Conservadora
- Apta para mejoras vía *position sizing* y *portfolio diversification*
---
### ✅ Decisiones tomadas tras Walk-Forward
1. **NO modificar la lógica de entrada**
2. **NO optimizar más los parámetros base**
3. Mantener el filtro ADX como componente estructural
4. Avanzar hacia mejoras de:
- Position sizing
- Stops dinámicos
- Portfolio multi-asset
El walk-forward valida que la señal base es **estable y explotable**, aunque no espectacular por sí sola.
## 🔄 Próximos Pasos
Después del backtesting: