docs: update backtesting research, optimizer, ADX and visual analysis
This commit is contained in:
110
README.md
110
README.md
@@ -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)
|
||||
Reference in New Issue
Block a user