docs: update backtesting research, optimizer, ADX and visual analysis

This commit is contained in:
DaM
2026-01-28 16:24:34 +01:00
parent 1add69eb56
commit e15074c0a7
10 changed files with 396 additions and 408 deletions

110
README.md
View File

@@ -53,20 +53,66 @@ Bot de trading algorítmico desarrollado desde cero con Python, PostgreSQL y Mac
- ✅ Simulación de comisiones y slippage
- ✅ Gestión de capital y position sizing
**Datos descargados actualmente:**
### 🔬 Research y Optimización (ACTUAL)
**Estado actual: research cuantitativo serio (in-sample).**
#### 📊 Datos históricos actuales
- 5 criptomonedas (BTC, ETH, BNB, SOL, XRP)
- 3 timeframes (1h, 4h, 1d)
- 120 días de histórico
- ~54,000 registros totales
- ≈ 3 años de histórico
- ~26.000 velas por símbolo en 1h
- Datos limpios, validados y persistidos
#### 📈 Indicadores calculados y almacenados
- returns
- log_returns
- **ADX (Average Directional Index)**
→ calculado una sola vez en el pipeline de datos y guardado en PostgreSQL
#### 🔧 Optimización de parámetros
- Grid search exhaustivo sobre:
- fast_period
- slow_period
- tipo de media (SMA / EMA)
- uso de ADX
- umbral de ADX
- Métrica principal de selección: **Sharpe Ratio**
- Optimización **in-sample** (aún sin walk-forward)
**Mejor configuración encontrada (BTC/USDT 1h):**
- Fast MA: 15
- Slow MA: 50
- MA Type: SMA
- ADX activo
- ADX threshold: 30
- Sharpe ≈ 0.24
- Return ≈ +188%
- Max Drawdown ≈ -24%
- Total trades: 17
#### 📊 Visualización de resultados
- Equity curve
- Drawdown
- Distribución de retornos por trade
- Trades sobre el precio
- Dashboard consolidado
Conclusión preliminar:
> Menos trades + filtro de tendencia = mayor robustez.
### 🔄 En Progreso
-Optimización de parámetros (en desarrollo)
-Visualizaciones de resultados (en desarrollo)
-Walk-forward validation (en desarrollo)
-Position sizing dinámico (en desarrollo)
- ⏳ Stops dinámicos (en desarrollo)
- ⏳ Portfolio multi-activo (en desarrollo)
- ⏳ Machine Learning (Semanas 5-8 planificadas)
### 📅 Planificado
- 📋 Machine Learning (Semanas 5-8 planificadas)
- 📋 Live trading con paper trading
- 📋 Gestión de riesgo avanzada
- 📋 Optimización de estrategias
@@ -379,40 +425,44 @@ print_backtest_report(results)
```
trading-bot/
├── config/ # Configuración
├── config/ # Configuración
│ ├── settings.yaml # Configuración general
│ └── secrets.env # Credenciales (NO subir a git)
├── src/ # Código fuente
│ ├── backtest/ # Motor de backtesting
│ ├── backtest/ # Motor de backtesting
│ │ ├── __init__.py
│ │ ├── engine.py # BacktestEngine
│ │ ├── strategy.py # Clase base Strategy
│ │ ├── trade.py # Trade, Position
│ │ ── metrics.py # Métricas de performance
│ │ ├── engine.py # BacktestEngine
│ │ ├── metrics.py # Métricas de performance
│ │ ├── optimizer.py # Optimizador de parámetros
│ │ ── strategy.py # Clase base Strategy
│ │ ├── trade.py # Trade, Position
│ │ └── visualizer.py # Visualizador de estrategias
│ │
│ ├── strategies/ # Estrategias de trading
│ ├── strategies/ # Estrategias de trading
│ │ ├── __init__.py
│ │ ├── moving_average.py # MA Crossover
│ │ ├── rsi_strategy.py # RSI Strategy
│ │ ├── buy_and_hold.py # Buy & Hold
│ │ ├── base.py # (futuro)
│ │ ├── ml_model.py # (futuro)
│ │ └── signals.py # (futuro)
│ │ ├── moving_average.py # MA Crossover
│ │ ├── rsi_strategy.py # RSI Strategy
│ │ ├── buy_and_hold.py # Buy & Hold
│ │ ├── base.py # (futuro)
│ │ ├── ml_model.py # (futuro)
│ │ └── signals.py # (futuro)
│ │
│ ├── data/ # Módulo de datos
│ │ ├── __init__.py
│ │ ├── fetcher.py # Descarga desde exchanges
│ │ ├── processor.py # Limpieza y procesamiento
│ │ └── storage.py # PostgreSQL + Redis
│ │ ├── fetcher.py # Descarga desde exchanges
│ │ ├── processor.py # Limpieza y procesamiento
│ │ └── storage.py # PostgreSQL + Redis
│ │
│ └── utils/ # Utilidades
│ ├── __init__.py
│ ├── logger.py # Sistema de logging
│ └── alerts.py # (futuro)
│ ├── logger.py # Sistema de logging
│ └── alerts.py # (futuro)
├── tests/ # Tests unitarios
── test_data.py
── test_data.py
│ ├── test_optimizer.py
│ └── test_visualizer.py
├── data/ # Datos locales
│ ├── historical/ # Backups (futuro)
@@ -427,6 +477,7 @@ trading-bot/
├── backtest.py # Backtesting runner
├── requirements.txt # Dependencias
├── .gitignore
├── BACKTESTING.md
└── README.md
```
@@ -486,6 +537,7 @@ CREATE TABLE ohlcv (
volume FLOAT NOT NULL,
returns FLOAT, -- Retornos simples
log_returns FLOAT, -- Retornos logarítmicos
adx FLOAT,
CONSTRAINT unique_ohlcv UNIQUE (symbol, timeframe, timestamp)
);
@@ -629,7 +681,7 @@ pytest tests/test_data.py::TestDataProcessor::test_clean_data_removes_duplicates
### 🔄 Fase 3: Optimización y Visualización (EN PROGRESO)
- Optimización de parámetros (grid search)
- Visualizaciones de resultados
- Gráficos de equity curve
- Filtros de mercado (ADX)
- Walk-forward analysis
### 📅 Fase 4: Estrategias Avanzadas (Semanas 5-8)
@@ -757,9 +809,11 @@ Para dudas sobre el código o siguientes fases de desarrollo, consulta conmigo.
---
**Versión actual:** 0.3.0 (Semanas 1-4 completadas)
**Versión actual:** 0.4.0 (Semanas 1-4 completadas)
**Última actualización:** Enero 2026
**Python:** 3.12.3
**PostgreSQL:** 16+
**Datos:** 5 símbolos, 3 timeframes, 120 días (~54k registros)
**Estrategias:** 3 implementadas (MA Cross, RSI, Buy&Hold)
**Datos:** 5 símbolos, 3 timeframes, ~3 años
**Estrategias:** 3 implementadas (MA Cross, RSI, Buy&Hold)
**Research:** Optimización + ADX + Visualización
**Estado:** Research cuantitativo (NO trading real)