Análisis Completo y Propuestas de Mejora - SignalDashPro#
Fecha: 9 de Marzo, 2026
Servidor: CT110 (Proxmox) - signaldashpro
Estado: Operativo - 27 días de uptime
📊 RESUMEN EJECUTIVO#
Estado General del Sistema#
✅ Infraestructura: Estable y operativa
✅ Autopilot: Activo, ejecutando cada ~60 segundos
✅ Ejecución: 100% de señales procesadas exitosamente
❌ Rendimiento: Win rate 27.4%, PnL negativo -$2.73 (30 días)
❌ Frecuencia: Solo 0.08% de decisiones generan señales (extremadamente bajo)
📈 MÉTRICAS ACTUALES (Últimos 30 días)#
Rendimiento de Trading#
| Métrica | Valor Actual | Objetivo | Estado |
|---|---|---|---|
| Total trades | 62 | 80-120/mes | 🟡 Bajo |
| Win Rate | 27.4% | >35-40% | ❌ Crítico |
| PnL Total | -$2.73 | >$0 | ❌ Negativo |
| PnL Promedio | -$0.04/trade | >$0.10/trade | ❌ |
| Mejor Trade | +$1.58 | - | ✅ Controlado |
| Peor Trade | -$0.62 | <-$1.00 | ✅ Controlado |
| Ratio Riesgo/Beneficio | 1:2 (TP=2xSL) | 1:1.5-2 | ✅ Bueno |
Actividad Operativa (Últimas 24h)#
| Métrica | Valor | % del Total |
|---|---|---|
| Total Decisiones | 2,640 | 100% |
Decisiones skip |
2,344 | 88.8% |
Decisiones block |
294 | 11.1% |
Decisiones allow |
2 | 0.08% ❌ |
Frecuencia de decisiones: 1 cada 33 segundos ✅
Razones de Skip (Top 5)#
| Razón | Frecuencia | % |
|---|---|---|
no_signal |
2,006 | 85.6% |
low_relative_volume |
324 | 13.8% |
cooldown_active |
9 | 0.4% |
already_in_position |
5 | 0.2% |
🔧 CONFIGURACIÓN ACTUAL#
Estrategia Principal#
Estrategia: range_breakout
Profile: balanced
Timeframe: M15 (15 minutos)
Símbolos: EURUSDT, PAXGUSDT
Auto-run: true ✅
Allow SELL: false ⚠️ (Solo salidas por TradeManager)
Indicadores Técnicos#
Fast MA: 9
Slow MA: 21
ATR Period: 14
ATR Multiplier: 1.6
Volume SMA Period: 20
Parámetros Range Breakout#
Lookback Bars: 12 ⚠️ (posiblemente muy largo)
Entry ATR Fraction: 0.25 ⚠️ (requiere mucho movimiento)
ATR Buffer Mult: 0.1
Trend Filter: true ⚠️ (filtra más oportunidades)
Filtros de Entrada#
Max Spread: 0.4% (0.004) ✅
Min Volume Relativo:
- Global: 0.3
- EURUSDT: 0.6142 ⚠️ (muy alto)
- PAXGUSDT: 0.4581
Cooldown: 15 minutos ✅
Gestión de Riesgo#
Order Size: 2% del notional ✅
Stop Mode: ATR-based ✅
Stop Distance: 1.6 * ATR ⚠️ (puede ser estrecho)
Take Profit: 2.0 * Stop ⚠️ (puede ser lejano)
Risk %: No configurado
Risk Policy: No asignada
🔴 PROBLEMAS IDENTIFICADOS#
PROBLEMA 1: Win Rate Críticamente Bajo (27.4%)#
Severidad: 🔴 CRÍTICA
Análisis:
- Con ratio TP:SL de 2:1, necesitas mínimo 33-35% win rate para break-even
- Actualmente: 27.4% → Pérdida sistemática
- En 62 trades: 17 ganadores, 44 perdedores
- Esto indica que la estrategia no está capturando las oportunidades correctas
Causas Raíz:
- Stops muy estrechos (ATR mult: 1.6):
- El mercado toca el stop antes de alcanzar TP
-
Necesita más "espacio para respirar"
-
Take Profits muy lejanos (2x stop):
- El precio raramente alcanza TP antes de revertir
-
Muchas operaciones ganadoras se convierten en perdedoras
-
Entradas subóptimas:
- Entry ATR fraction de 0.25 puede hacer que entres tarde en el breakout
-
Para cuando la señal se confirma, gran parte del movimiento ya ocurrió
-
Trend filter demasiado restrictivo:
- Filtra breakouts válidos en mercados laterales
- Range breakout debería funcionar precisamente cuando NO hay tendencia clara
Impacto Financiero:
62 trades × -$0.04 promedio = -$2.48
Proyección anual: -$30 aproximadamente
PROBLEMA 2: Generación de Señales Extremadamente Baja (0.08%)#
Severidad: 🟡 ALTA
Análisis:
- De 2,640 decisiones en 24h, solo 2 señales permitidas
- El autopilot revisa el mercado cada 33 segundos pero casi nunca actúa
- 85.6% de skips son por "no_signal" → la estrategia no detecta breakouts
Causas Raíz:
- Parámetros de breakout muy conservadores:
- Lookback bars: 12 (4 horas en M15) es muy largo
- Requiere un rango prolongado antes de considerar breakout
-
En mercados dinámicos, los rangos cambian más rápido
-
Filtro de volumen muy alto:
- 13.8% de skips por "low_relative_volume"
- Min vol rel de 0.3-0.6 es exigente
-
EURUSDT con 0.6142 está descartando muchas oportunidades válidas
-
Condiciones de mercado actuales:
- EURUSDT/PAXGUSDT probablemente en rango lateral estrecho
- Baja volatilidad = pocos breakouts claros
- La estrategia es muy especializada para un tipo de mercado
Impacto Operativo:
Oportunidades perdidas: ~25-50 señales potenciales por día
Tiempo de inactividad: >99% del tiempo sin operar
Capital sub-utilizado
PROBLEMA 3: Dependencia de Una Sola Estrategia#
Severidad: 🟡 MEDIA
Análisis:
- Solo
range_breakoutestá activa - Esta estrategia solo funciona en condiciones específicas:
- Mercados en rango con volatilidad moderada
- Rupturas claras de soporte/resistencia
- Volumen suficiente para confirmar breakout
Limitaciones:
✅ Funciona bien en: Mercados laterales con breakouts claros
❌ Falla en: Mercados tendenciales suaves
❌ Falla en: Mercados muy tranquilos (baja volatilidad)
❌ Falla en: Mercados muy volátiles (muchos falsos breakouts)
Impacto:
- Períodos prolongados sin trading (como ahora)
- No aprovecha diferentes condiciones de mercado
- Rendimiento inconsistente mes a mes
PROBLEMA 4: Configuración de Ventas Limitada#
Severidad: 🟢 BAJA
Análisis:
AUTOPILOT_ALLOW_SELL: false
- El autopilot NO puede generar señales SELL
- Solo puede operar entradas LONG en Spot
- Las salidas dependen exclusivamente del TradeManager
Limitaciones:
- En mercados bajistas, no puede aprovechar movimientos descendentes
- Reduce las oportunidades a la mitad (solo movimientos alcistas)
- En Spot esto es normal, pero limita estrategias
Nota: En Spot no es posible hacer short selling, solo cerrar posiciones largas.
💡 PROPUESTAS DE MEJORA#
🎯 PROPUESTA 1: Optimización de Parámetros Range Breakout#
Prioridad: 🔴 ALTA - Implementación Inmediata
Complejidad: 🟢 BAJA - Solo cambios de configuración
Impacto Esperado: 🟡 MEDIO-ALTO
Objetivo#
Aumentar win rate de 27.4% a 35-40% y frecuencia de señales de 0.08% a 0.5-1%
Cambios Propuestos#
A. Parámetros de Breakout (Más Receptivo)#
# ACTUAL → PROPUESTO
AUTOPILOT_BREAKOUT_LOOKBACK_BARS: 12 → 8
AUTOPILOT_BREAKOUT_ENTRY_ATR_FRACTION: 0.25 → 0.18
AUTOPILOT_BREAKOUT_TREND_FILTER: true → false (temporal)
Justificación:
- Lookback 8 bars = 2 horas en M15 (más ágil, detecta rangos más rápido)
- Entry fraction 0.18 = Entra más temprano en el breakout (captura más movimiento)
- Sin trend filter = Permite breakouts en mercados laterales (donde deberían funcionar)
B. Filtros de Volumen (Menos Restrictivo)#
# ACTUAL → PROPUESTO
AUTOPILOT_MIN_VOL_REL: 0.3 → 0.2
CFG_AUTO::EURUSDT::AUTOPILOT_MIN_VOL_REL: 0.6142 → 0.4
CFG_AUTO::PAXGUSDT::AUTOPILOT_MIN_VOL_REL: 0.4581 → 0.3
Justificación:
- Reduce el 13.8% de skips por "low_relative_volume"
- Mantiene un filtro mínimo de calidad pero no excesivo
- EURUSDT de 0.6 a 0.4 libera ~30% más oportunidades
C. Gestión de Riesgo (Stops más Amplios, TP más Alcanzable)#
# ACTUAL → PROPUESTO
AUTOPILOT_ATR_MULT: 1.6 → 1.8
AUTOPILOT_TAKE_PROFIT_MULT: 2.0 → 1.5
Justificación:
- ATR mult 1.8 = Stops 12.5% más amplios → menos "stop hunting"
- TP mult 1.5 = Objetivo más cercano → mayor probabilidad de alcanzarlo
- Nuevo ratio riesgo/beneficio: 1:1.5 (aún favorable)
Métricas Esperadas (Post-Optimización)#
| Métrica | Actual | Esperado | Cambio |
|---|---|---|---|
| Win Rate | 27.4% | 35-40% | +30-45% |
| Señales/día | 2 | 10-15 | +400-650% |
| PnL mensual | -$2.73 | $0 a +$5 | Break-even o positivo |
| Allows % | 0.08% | 0.5-1% | +525-1150% |
Plan de Prueba#
- Backtest histórico con nuevos parámetros (últimos 90 días)
- Shadow test en paralelo durante 48-72 horas
- Si resultados favorables → Promoción a producción
- Monitoreo estricto primera semana
🎯 PROPUESTA 2: Agregar Estrategia Complementaria - MA Crossover#
Prioridad: 🟡 MEDIA - Implementación Corto Plazo
Complejidad: 🟡 MEDIA - Requiere desarrollo
Impacto Esperado: 🟢 ALTO
Objetivo#
Operar en más condiciones de mercado combinando:
- Range Breakout: Para mercados laterales con rupturas
- MA Crossover: Para mercados tendenciales suaves
Justificación#
MERCADO ACTUAL → ESTRATEGIA ÓPTIMA
─────────────────────────────────────────────────
Lateral con breakouts → Range Breakout ✅
Tendencial suave → MA Crossover ✅
Tendencial fuerte → MA Crossover ✅
Muy volátil → Ninguna (pausar)
Muy tranquilo → Ninguna (pausar)
Implementación#
Opción A: Modo Multi-Estrategia Simple#
AUTOPILOT_MODE: multi
AUTOPILOT_STRATEGIES: range_breakout,ma_crossover
AUTOPILOT_STRATEGY_SELECTION_MODE: sequential # Evalúa ambas
Opción B: Selector Inteligente por Volatilidad#
# Pseudocódigo
atr_current = calculate_atr(14)
atr_avg = calculate_atr_sma(20)
volatility_ratio = atr_current / atr_avg
if volatility_ratio > 1.3: # Alta volatilidad
strategy = "range_breakout"
elif volatility_ratio > 0.7: # Volatilidad normal
if trend_detected():
strategy = "ma_crossover"
else:
strategy = "range_breakout"
else: # Baja volatilidad
strategy = "skip" # Esperar mejores condiciones
Parámetros MA Crossover Propuestos#
AUTOPILOT_MA_CROSSOVER_ENABLED: true
AUTOPILOT_MA_CROSSOVER_FAST_MA: 9
AUTOPILOT_MA_CROSSOVER_SLOW_MA: 21
AUTOPILOT_MA_CROSSOVER_CONFIRMATION_BARS: 2 # Esperar 2 velas de confirmación
AUTOPILOT_MA_CROSSOVER_MIN_SEPARATION_PCT: 0.05 # MAs separadas mínimo 0.05%
AUTOPILOT_MA_CROSSOVER_ATR_MULT: 1.8
AUTOPILOT_MA_CROSSOVER_TP_MULT: 1.5
Reglas de Entrada MA Crossover#
LONG:
- MA(9) cruza hacia arriba MA(21)
- Confirmación: 2 velas después del cruce
- Separación: MA(9) > MA(21) + 0.05%
- Volumen: > min_vol_rel
SHORT/SELL (si habilitado):
- MA(9) cruza hacia abajo MA(21)
- Confirmación: 2 velas después del cruce
- Separación: MA(9) < MA(21) - 0.05%
Impacto Esperado#
- +40-60% más oportunidades de trading
- Diversificación de estrategias reduce riesgo
- Mayor consistencia mes a mes
🎯 PROPUESTA 3: Sistema de Backtesting Continuo con Shadow Tests#
Prioridad: 🟡 MEDIA - Implementación Mediano Plazo
Complejidad: 🟡 MEDIA
Impacto Esperado: 🟢 ALTO (Mejora Continua)
Objetivo#
Validar cambios de configuración en ambiente controlado antes de producción
Arquitectura#
┌─────────────────────────────────────────────┐
│ PRODUCCIÓN (Config A) │
│ - Range Breakout actual │
│ - Ejecuta órdenes reales │
└─────────────────────────────────────────────┘
↓ Datos reales
┌─────────────────────────────────────────────┐
│ SHADOW TEST B (Config Optimizada) │
│ - Range Breakout con nuevos parámetros │
│ - Simula órdenes (paper trading) │
│ - Compara resultados vs Producción │
└─────────────────────────────────────────────┘
↓ Datos reales
┌─────────────────────────────────────────────┐
│ SHADOW TEST C (MA Crossover) │
│ - Nueva estrategia │
│ - Simula órdenes (paper trading) │
│ - Compara resultados vs Producción │
└─────────────────────────────────────────────┘
Métricas de Comparación#
Criterios de Éxito (para promover Shadow a Producción):
- Win Rate: > Producción + 5%
- PnL Total: > Producción + $2
- Sharpe Ratio: > 1.0
- Max Drawdown: < Producción -10%
- Duración mínima: 7 días
- Mínimo trades: 20
Auto-Promoción#
if shadow_test.meets_criteria() and days >= 7:
promote_to_production(shadow_test)
create_case_review("Auto-promotion", shadow_test)
notify_admin("Shadow Test promoted")
Rollback Automático#
if production.pnl_7d < production.pnl_30d_avg * 0.7:
rollback_to_previous_config()
create_case_review("Auto-rollback", reason="Performance degradation")
notify_admin("Rollback executed", priority="high")
🎯 PROPUESTA 4: Habilitar Ventas para Cierre de Posiciones#
Prioridad: 🟢 BAJA - Evaluación
Complejidad: 🟢 BAJA
Impacto Esperado: 🟡 BAJO-MEDIO
Análisis Actual#
AUTOPILOT_ALLOW_SELL: false
Problema:
- El autopilot no puede generar señales SELL
- Solo el TradeManager cierra posiciones por SL/TP
- No se aprovechan señales bajistas
Opción 1: Ventas Solo para Cierre (RECOMENDADO)#
AUTOPILOT_ALLOW_SELL: true
AUTOPILOT_SELL_MODE: close_only # Solo cerrar posiciones LONG
Beneficios:
- Cierre proactivo de posiciones cuando la estrategia detecta reversión
- No depender solo del SL/TP fijo
- Puede cerrar antes de pérdidas mayores o tomar ganancias antes de TP
Riesgos:
- Mínimos (solo cierra posiciones existentes)
Opción 2: Trading Bidireccional en Futures (NO RECOMENDADO AHORA)#
# Migrar a Binance Futures Testnet
BINANCE_TRADING_TYPE: futures
AUTOPILOT_ALLOW_SHORT: true
Beneficios:
- Aprovecha movimientos bajistas
- Duplica oportunidades de trading
Riesgos:
- Apalancamiento aumenta riesgo
- Requiere gestión de riesgo más sofisticada
- Mejor esperar a validar estrategias en Spot primero
Recomendación#
✅ Implementar Opción 1 después de validar Propuesta 1
❌ Posponer Opción 2 hasta tener win rate >40% consistente
🎯 PROPUESTA 5: Detector de Régimen de Mercado#
Prioridad: 🟢 BAJA - Largo Plazo
Complejidad: 🔴 ALTA
Impacto Esperado: 🟢 ALTO (Adaptabilidad)
Objetivo#
Ajustar automáticamente estrategia y parámetros según condiciones de mercado
Regímenes de Mercado#
1. TRENDING (Tendencial)#
Detección:
- ADX(14) > 25
- MA(9) y MA(21) divergiendo
- Precio consistentemente por encima/debajo de MAs
Estrategia Óptima:
- MA Crossover con trailing stop
- TP mult: 2.0 (tendencias pueden ir lejos)
- Stop molt: 2.0 (dar espacio)
2. RANGING (Lateral)#
Detección:
- ADX(14) < 20
- Bollinger Band Width bajo
- Precio oscilando entre S/R claros
Estrategia Óptima:
- Range Breakout
- RSI mean reversion
- TP mult: 1.5 (objetivos cercanos)
3. HIGH VOLATILITY (Volátil)#
Detección:
- ATR(14) > ATR_SMA(20) * 1.5
- Velas grandes con mechas largas
- Spreads amplios
Estrategia Óptima:
- Mean reversion
- Reducir tamaño posición 50%
- Stops muy amplios (2.5x ATR)
4. LOW VOLATILITY (Calma)#
Detección:
- ATR(14) < ATR_SMA(20) * 0.6
- Volumen bajo
- Velas pequeñas
Estrategia Óptima:
- PAUSAR trading
- Esperar aumento de volatilidad
- Preservar capital
Implementación (Pseudocódigo)#
def detect_market_regime(symbol, timeframe):
adx = calculate_adx(14)
atr = calculate_atr(14)
atr_avg = calculate_atr_sma(20)
bb_width = calculate_bb_width(20, 2)
atr_ratio = atr / atr_avg
# Prioridad: Volatilidad primero
if atr_ratio > 1.5:
return "high_volatility"
elif atr_ratio < 0.6:
return "low_volatility"
# Luego: Tendencia vs Rango
elif adx > 25:
return "trending"
elif adx < 20 and bb_width < percentile(bb_width_history, 30):
return "ranging"
else:
return "neutral"
def get_strategy_for_regime(regime):
strategies = {
"trending": {
"name": "ma_crossover",
"atr_mult": 2.0,
"tp_mult": 2.0,
"position_size_mult": 1.0
},
"ranging": {
"name": "range_breakout",
"atr_mult": 1.8,
"tp_mult": 1.5,
"position_size_mult": 1.0
},
"high_volatility": {
"name": "mean_reversion",
"atr_mult": 2.5,
"tp_mult": 1.2,
"position_size_mult": 0.5 # Reducir riesgo
},
"low_volatility": {
"name": "pause",
"position_size_mult": 0.0 # No operar
}
}
return strategies[regime]
Beneficios#
- Adaptabilidad automática a condiciones cambiantes
- Reduce pérdidas en condiciones adversas
- Maximiza ganancias en condiciones favorables
- Protección de capital en mercados peligrosos
🎯 PROPUESTA 6: Optimización con Machine Learning#
Prioridad: 🟢 BAJA - Largo Plazo
Complejidad: 🔴 MUY ALTA
Impacto Esperado: 🟢 MUY ALTO (Potencial)
Técnica 1: Walk-Forward Optimization#
def walk_forward_optimize():
"""
Entrena parámetros en ventana histórica,
valida en ventana futura,
repite deslizando ventanas
"""
train_window = 30 # días
test_window = 7 # días
step = 7 # días
for start_date in date_range(90_days_ago, today, step):
# Entrenar
train_data = get_data(start_date, start_date + train_window)
best_params = optimize_parameters(train_data)
# Validar
test_data = get_data(start_date + train_window,
start_date + train_window + test_window)
results = backtest(test_data, best_params)
# Registrar
log_optimization_results(start_date, best_params, results)
# Promedio de mejores parámetros que funcionaron
recommended_params = average_winning_params()
return recommended_params
Parámetros a Optimizar:
- Lookback bars: [6, 8, 10, 12, 15]
- Entry ATR fraction: [0.15, 0.18, 0.20, 0.25, 0.30]
- ATR mult: [1.4, 1.6, 1.8, 2.0, 2.2]
- TP mult: [1.2, 1.5, 1.8, 2.0, 2.5]
- Min vol rel: [0.2, 0.3, 0.4, 0.5, 0.6]
Técnica 2: Genetic Algorithm#
def genetic_algorithm_optimize():
"""
Evoluciona población de configuraciones
hacia parámetros óptimos
"""
population_size = 50
generations = 100
mutation_rate = 0.1
# Población inicial aleatoria
population = initialize_random_population(population_size)
for gen in range(generations):
# Evaluar fitness (backtest cada individuo)
fitness_scores = [backtest_fitness(indiv) for indiv in population]
# Selección (mejores sobreviven)
parents = select_parents(population, fitness_scores, top_n=20)
# Crossover (combinación)
offspring = crossover(parents)
# Mutación (exploración)
offspring = mutate(offspring, mutation_rate)
# Nueva generación
population = parents + offspring
# Mejor individuo de última generación
best_config = max(population, key=lambda x: backtest_fitness(x))
return best_config
def backtest_fitness(config):
"""
Función de fitness multi-objetivo
"""
results = backtest(historical_data, config)
# Combinar múltiples objetivos
sharpe = results['sharpe_ratio']
win_rate = results['win_rate']
max_dd = results['max_drawdown']
trades = results['total_trades']
# Penalizar configuraciones con pocos trades
if trades < 20:
return 0
# Fitness = Sharpe * WinRate - MaxDD
fitness = sharpe * win_rate - abs(max_dd) * 0.5
return fitness
Técnica 3: Reinforcement Learning#
class TradingBot_RL:
"""
Agente de RL que aprende política óptima
"""
def __init__(self):
self.q_table = {} # O red neuronal para DQN
self.epsilon = 0.1 # Exploración
self.alpha = 0.01 # Learning rate
self.gamma = 0.99 # Discount factor
def get_state(self, market_data):
"""
Representa estado del mercado
"""
return {
'price_position': (price - ma20) / atr,
'trend': adx,
'volatility': atr / atr_avg,
'volume': volume / volume_avg,
'rsi': rsi,
'bb_position': (price - bb_lower) / (bb_upper - bb_lower)
}
def choose_action(self, state):
"""
Política: BUY, SELL, HOLD
"""
if random() < self.epsilon:
return random_action() # Exploración
else:
return argmax(self.q_table[state]) # Explotación
def learn(self, state, action, reward, next_state):
"""
Actualiza Q-table basado en recompensa
"""
current_q = self.q_table.get((state, action), 0)
max_next_q = max(self.q_table.get((next_state, a), 0)
for a in [BUY, SELL, HOLD])
new_q = current_q + self.alpha * (
reward + self.gamma * max_next_q - current_q
)
self.q_table[(state, action)] = new_q
def calculate_reward(self, trade_result):
"""
Función de recompensa
"""
pnl = trade_result['pnl']
commission = trade_result['commission']
dd_penalty = trade_result['drawdown'] * 2 # Penalizar DD
reward = pnl - commission - dd_penalty
return reward
Métricas de Éxito ML#
- Sharpe Ratio: >1.5
- Win Rate: >45%
- Calmar Ratio: >2.0
- Sortino Ratio: >2.0
Consideraciones#
- Overfitting: Principal riesgo, usar validación cruzada rigurosa
- Régimen changes: Mercado puede cambiar, re-entrenar mensualmente
- Complejidad: Requiere infraestructura ML (GPU, frameworks)
- Transparencia: Modelos deben ser interpretables
📋 PLAN DE ACCIÓN DETALLADO#
🔴 FASE 1 - INMEDIATO (Esta Semana)#
Día 1-2: Preparación y Análisis#
- [x] ✅ Auditoría completa del sistema (completada)
- [ ] 📊 Backtest histórico (90 días) con configuración actual como baseline
- [ ] 🧪 Configurar entorno de shadow tests
- [ ] 📝 Crear documento de tracking de métricas
Día 3-4: Implementación Propuesta 1#
- [ ] ⚙️ Aplicar cambios de parámetros: ```yaml AUTOPILOT_BREAKOUT_LOOKBACK_BARS: 8 AUTOPILOT_BREAKOUT_ENTRY_ATR_FRACTION: 0.18 AUTOPILOT_BREAKOUT_TREND_FILTER: false AUTOPILOT_MIN_VOL_REL: 0.2 CFG_AUTO::EURUSDT::AUTOPILOT_MIN_VOL_REL: 0.4 CFG_AUTO::PAXGUSDT::AUTOPILOT_MIN_VOL_REL: 0.3 AUTOPILOT_ATR_MULT: 1.8 AUTOPILOT_TAKE_PROFIT_MULT: 1.5
```
- [ ] 🧪 Ejecutar shadow test durante 48-72 horas
- [ ] 📊 Comparar métricas shadow vs producción
Día 5-7: Validación y Decisión#
- [ ] 📈 Revisar resultados shadow test:
- Win rate target: >35%
- Señales/día target: >10
-
PnL target: >=0
-
[ ] ✅ Si métricas positivas → Promover a producción
- [ ] ⚠️ Si métricas negativas → Ajustar parámetros y repetir
Métricas de Seguimiento (Dashboard diario):
Operativas:
- Decisiones totales/día
- % Allow vs Skip vs Block
- Señales generadas/día
- Top 3 razones de skip
Trading:
- Trades ejecutados/día
- Win rate (rolling 7d, 30d)
- PnL diario y acumulado
- Avg trade duration
- Mejor/peor trade del día
Riesgo:
- Drawdown actual vs máximo
- Exposición actual
- Alertas de kill-switch
- Compliance con límites
🟡 FASE 2 - CORTO PLAZO (Semanas 2-3)#
Semana 2: Desarrollo MA Crossover#
- [ ] 💻 Implementar lógica MA Crossover en autopilot
- [ ] 🧪 Backtest MA Crossover sobre mismos 90 días
- [ ] ⚙️ Configurar parámetros iniciales (usando Propuesta 2)
- [ ] 🚀 Lanzar shadow test MA Crossover
Semana 3: Integración y Validación#
- [ ] 🔄 Implementar selector de estrategia (volatility-based)
- [ ] 🧪 Shadow test con multi-estrategia
- [ ] 📊 Comparar:
- Range Breakout solo
- MA Crossover solo
-
Multi-estrategia
-
[ ] ✅ Promover mejor configuración
Semana 3-4: Mejoras de Ventas#
- [ ] ⚙️ Habilitar
AUTOPILOT_ALLOW_SELL: true - [ ] 🔧 Modo:
close_only(solo cerrar posiciones) - [ ] 🧪 Validar cierre proactivo de posiciones
- [ ] 📊 Comparar PnL con vs sin ventas habilitadas
Deliverables Fase 2:
- [ ] 2 estrategias validadas en producción
- [ ] Win rate >35%
- [ ] PnL mensual >$0
- [ ] Frecuencia señales >0.5%
🟢 FASE 3 - MEDIANO PLAZO (Mes 2)#
Semanas 5-6: Detector de Régimen#
- [ ] 💻 Implementar cálculo de ADX, ATR ratio, BB width
- [ ] 🧮 Desarrollar función
detect_market_regime() - [ ] 🧪 Backtest con régimen detection
- [ ] 📊 Validar mejora vs estrategia fija
Semanas 7-8: Sistema de Auto-Optimización#
- [ ] 💻 Implementar walk-forward optimization
- [ ] ⚙️ Configurar auto-ajuste mensual de parámetros
- [ ] 🔔 Alertas de degradación de performance
- [ ] 🔄 Rollback automático si performance cae >20%
Deliverables Fase 3:
- [ ] Sistema adaptativo a condiciones de mercado
- [ ] Win rate >40%
- [ ] Sharpe ratio >1.0
- [ ] Auto-optimización mensual activa
🟢 FASE 4 - LARGO PLAZO (Mes 3+)#
Investigación y Desarrollo#
- [ ] 🤖 Experimentar con RL para policy learning
- [ ] 🧬 Implementar genetic algorithm para optimización
- [ ] 📊 Pipeline de data science para feature engineering
- [ ] 🔬 Investigar indicadores avanzados (Ichimoku, Elliott Wave)
Escalabilidad#
- [ ] 📈 Agregar más símbolos (BTCUSDT, ETHUSDT)
- [ ] 🕐 Agregar timeframes adicionales (M5, H1)
- [ ] 💱 Evaluar migración a Futures (con cautela)
- [ ] 🌍 Trading 24/7 multi-sesión
Objetivo Final:
- [ ] Win rate >45%
- [ ] Sharpe ratio >1.5
- [ ] PnL mensual >$50
- [ ] Sistema completamente autónomo
📊 MÉTRICAS DE ÉXITO Y KPIs#
KPIs Principales (Revisar Semanalmente)#
| KPI | Actual | Target Mes 1 | Target Mes 3 | Critical Threshold |
|---|---|---|---|---|
| Win Rate | 27.4% | 35% | 45% | <25% (rollback) |
| PnL Mensual | -$2.73 | $0-5 | $20-50 | <-$10 (pause) |
| Sharpe Ratio | N/A | 0.8 | 1.5 | <0.3 (review) |
| Max Drawdown | N/A | <5% | <3% | >10% (kill-switch) |
| Señales/Día | 2 | 10-15 | 20-30 | <5 (investigate) |
| % Allows | 0.08% | 0.5-1% | 1-2% | <0.1% (too conservative) |
| Avg Trade Duration | N/A | 2-4h | 1-3h | >8h (stuck positions) |
| Trades/Mes | 62 | 100-150 | 200-300 | <50 (underutilized) |
KPIs Secundarios (Revisar Mensualmente)#
| KPI | Target |
|---|---|
| Calmar Ratio | >2.0 |
| Sortino Ratio | >2.0 |
| Profit Factor | >1.5 |
| Avg Win / Avg Loss | >1.5 |
| Max Consecutive Losses | <5 |
| Recovery Factor | >3.0 |
| Uptime % | >99% |
| Order Fill Rate | >95% |
Alertas Automáticas#
CRITICAL (Acción Inmediata):
- Win rate <25% por 3 días consecutivos
- Drawdown >10% en sesión
- PnL diario <-$5
- Sistema down >30 min
WARNING (Revisión en 24h):
- Win rate <30% por 7 días
- Señales/día <5 por 3 días
- Spread >0.5% persistente
- Latencia >2 segundos
INFO (Monitorear):
- Nueva configuración promovida
- Shadow test completado
- Backtest ejecutado
- Optimización mensual ejecutada
💰 PROYECCIÓN FINANCIERA#
Escenario Conservador (Post-Optimización Propuesta 1)#
Win Rate: 35%
Trades/Mes: 100
Avg Win: $0.20
Avg Loss: -$0.13
Comisiones: $0.01/trade
PnL Esperado/Mes:
Ganadores: 35 × $0.20 = $7.00
Perdedores: 65 × -$0.13 = -$8.45
Comisiones: 100 × -$0.01 = -$1.00
─────────────────────────
TOTAL: -$2.45/mes
Conclusión: Aún negativo, necesita Propuesta 2 (multi-estrategia)
Escenario Moderado (Con MA Crossover - Propuesta 2)#
Win Rate: 38%
Trades/Mes: 150
Avg Win: $0.22
Avg Loss: -$0.13
Comisiones: $0.01/trade
PnL Esperado/Mes:
Ganadores: 57 × $0.22 = $12.54
Perdedores: 93 × -$0.13 = -$12.09
Comisiones: 150 × -$0.01 = -$1.50
─────────────────────────
TOTAL: -$1.05/mes
Conclusión: Cerca de break-even
Escenario Optimista (Con Detector Régimen - Propuesta 5)#
Win Rate: 42%
Trades/Mes: 180
Avg Win: $0.25
Avg Loss: -$0.12
Comisiones: $0.01/trade
PnL Esperado/Mes:
Ganadores: 76 × $0.25 = $19.00
Perdedores: 104 × -$0.12 = -$12.48
Comisiones: 180 × -$0.01 = -$1.80
─────────────────────────
TOTAL: $4.72/mes
Conclusión: Positivo sostenible
Escenario Target (Post-ML Optimization - Propuesta 6)#
Win Rate: 45%
Trades/Mes: 220
Avg Win: $0.28
Avg Loss: -$0.11
Comisiones: $0.01/trade
PnL Esperado/Mes:
Ganadores: 99 × $0.28 = $27.72
Perdedores: 121 × -$0.11 = -$13.31
Comisiones: 220 × -$0.01 = -$2.20
─────────────────────────
TOTAL: $12.21/mes
ROI Anual: $146.52
Sharpe: ~1.5
⚠️ RIESGOS Y MITIGACIONES#
Riesgo 1: Overfitting de Parámetros#
Probabilidad: 🟡 MEDIA
Impacto: 🔴 ALTO
Descripción: Optimizar parámetros sobre datos históricos puede crear configuración que funciona perfecto en pasado pero falla en futuro.
Mitigación:
- Walk-forward validation obligatoria
- Shadow tests mínimo 7 días antes de promoción
- Out-of-sample testing (reservar 20% datos para validación)
- Rollback automático si performance degrada >20%
- Monitoreo estricto primeras 2 semanas post-cambio
Riesgo 2: Cambio de Régimen de Mercado#
Probabilidad: 🟢 ALTA
Impacto: 🟡 MEDIO
Descripción: Mercado puede entrar en régimen nuevo (ej: crash, rally extremo) donde estrategias optimizadas fallan.
Mitigación:
- Detector de régimen (Propuesta 5)
- Pause automático en volatilidad extrema
- Kill-switch con límites diarios estrictos
- Diversificación de estrategias (no depender de una sola)
- Re-optimización mensual automática
Riesgo 3: Deslizamiento (Slippage) y Comisiones#
Probabilidad: 🟢 ALTA
Impacto: 🟡 MEDIO
Descripción: Proyecciones asumen fills perfectos. En realidad:
- Slippage: 0.02-0.05% por orden
- Comisiones: 0.1% Binance Spot
- Total: ~0.2% por round-trip
Mitigación:
- Incluir slippage en backtests (conservador: 0.05%)
- Filtro de spread máximo estricto (0.4%)
- Evitar trading en momentos de baja liquidez
- Usar órdenes limit cuando sea posible
- Priorizar calidad sobre cantidad de trades
Riesgo 4: Fallos Técnicos#
Probabilidad: 🟡 BAJA
Impacto: 🔴 ALTO
Descripción:
- Pérdida de conexión a Binance
- Caída de base de datos
- Contenedor backend crash
- Bugs en código nuevo
Mitigación:
- Auto-recovery systemd (ya implementado ✅)
- Healthchecks cada 5 min
- Logging exhaustivo
- Alertas inmediatas en fallo
- Testing riguroso pre-deployment
- Rollback plan documentado
Riesgo 5: Agotamiento de Saldo Demo#
Probabilidad: 🟡 MEDIA (si losses persisten)
Impacto: 🟡 MEDIO
Descripción: Si PnL sigue negativo, el saldo demo eventualmente se agota.
Mitigación:
- Monitoreo de balance diario
- Pause automático si balance <50% inicial
- Recarga manual de demo cuando necesario
- Implementar Propuestas 1-2 urgentemente para mejorar PnL
- No es blocker crítico (es demo, recargable)
📝 NOTAS FINALES Y RECOMENDACIONES#
Priorización Recomendada#
- 🔴 URGENTE - Esta Semana:
- ✅ Implementar Propuesta 1 (Optimización parámetros)
- Objetivo: Mejorar win rate de 27% a 35%
-
Razón: PnL negativo es insostenible, necesita corrección inmediata
-
🟡 IMPORTANTE - Próximas 2 Semanas:
- Implementar Propuesta 2 (MA Crossover)
- Implementar Propuesta 4 (Habilitar ventas)
-
Razón: Diversificación reduce riesgo y aumenta oportunidades
-
🟢 DESEADO - Próximo Mes:
- Propuesta 3 (Shadow tests continuos)
- Propuesta 5 (Detector régimen)
-
Razón: Mejora continua y adaptabilidad
-
🔵 INVESTIGACIÓN - Largo Plazo:
- Propuesta 6 (ML optimization)
- Razón: Alto potencial pero requiere infraestructura
Filosofía de Implementación#
"Caminar antes de correr"
1. Fix lo básico primero (Propuesta 1) ✅
2. Agregar diversificación (Propuesta 2) ✅
3. Automatizar mejora continua (Propuesta 3) ✅
4. Optimizar avanzado (Propuestas 5-6) ✅
"Validar antes de escalar"
- Cada cambio debe pasar shadow test
- Mínimo 7 días de validación
- Métricas objetivas para promoción
- Rollback rápido si falla
"Preservar capital"
- Kill-switches estrictos
- Límites de drawdown
- Pause en condiciones adversas
- Demo primero, real después
Próximos Pasos Inmediatos#
Decision Point para el Usuario:
OPCIÓN A - Implementación Agresiva (Recomendado):
1. Hoy: Aplicar Propuesta 1 en shadow test
2. Mañana: Monitorear resultados
3. En 3 días: Si positivo, promover a producción
4. Semana próxima: Comenzar Propuesta 2 (MA Crossover)
Ventaja: Corrección rápida del problema
Riesgo: Menor validación
OPCIÓN B - Implementación Conservadora:
1. Esta semana: Shadow test Propuesta 1 (7 días completos)
2. Próxima semana: Revisar resultados, ajustar si necesario
3. Semana 3: Promover si métricas ok
4. Semana 4: Comenzar Propuesta 2
Ventaja: Mayor confianza en cambios
Riesgo: PnL negativo persiste más tiempo
OPCIÓN C - Híbrida (Balanceada):
1. Hoy: Aplicar Propuesta 1 en shadow test
2. Día 3: Revisión preliminar de resultados
3. Día 5: Si trending positivo, promover con monitoreo estricto
4. Día 7: Ajustes finos basados en producción real
5. Semana 2: Iniciar Propuesta 2 en shadow
Ventaja: Balance entre velocidad y prudencia
Contacto y Seguimiento#
Reporte Diario (automático):
- Email: Resumen KPIs diarios
- Dashboard: Métricas en vivo
- Alertas: Solo en thresholds críticos
Revisión Semanal (manual):
- Comparar vs targets
- Ajustar parámetros si necesario
- Decidir promociones de shadow tests
Reunión Mensual (estratégica):
- Evaluar progreso general
- Planificar próximas propuestas
- Revisar riesgos emergentes
✅ CHECKLIST DE DECISIÓN#
Antes de implementar cualquier cambio, validar:
- [ ] Backtest histórico ejecutado y documentado
- [ ] Shadow test configurado correctamente
- [ ] Métricas de éxito definidas claramente
- [ ] Plan de rollback documentado
- [ ] Alertas configuradas
- [ ] Stakeholders notificados
- [ ] Documentación actualizada
- [ ] Logs y monitoring activos
Documento preparado por: Análisis automatizado SignalDashPro
Fecha: 9 de Marzo, 2026
Versión: 1.0
Próxima Revisión: Según implementación de Fase 1
ANEXO: Comandos Útiles para Implementación#
Aplicar Propuesta 1 vía API (Requiere auth admin)#
# Obtener token
TOKEN=$(curl -s -X POST http://127.0.0.1:8096/auth/login \
-H 'Content-Type: application/json' \
-d '{"username":"admin","password":"admin123"}' \
| jq -r '.access_token')
# Actualizar configuración
curl -X POST http://127.0.0.1:8096/settings/autopilot \
-H "Authorization: Bearer $TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"AUTOPILOT_BREAKOUT_LOOKBACK_BARS": 8,
"AUTOPILOT_BREAKOUT_ENTRY_ATR_FRACTION": 0.18,
"AUTOPILOT_BREAKOUT_TREND_FILTER": false,
"AUTOPILOT_MIN_VOL_REL": 0.2,
"AUTOPILOT_ATR_MULT": 1.8,
"AUTOPILOT_TAKE_PROFIT_MULT": 1.5
}'
# Actualizar configuración por símbolo
curl -X POST http://127.0.0.1:8096/settings/autopilot \
-H "Authorization: Bearer $TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"CFG_AUTO::EURUSDT::AUTOPILOT_MIN_VOL_REL": 0.4,
"CFG_AUTO::PAXGUSDT::AUTOPILOT_MIN_VOL_REL": 0.3
}'
Monitorear Métricas Post-Cambio#
# Dashboard en vivo
watch -n 10 'curl -s http://127.0.0.1:8096/autopilot/status | jq'
# Últimas decisiones
curl -s http://127.0.0.1:8096/autopilot/decisions/recent | jq
# Win rate actualizado
curl -s http://127.0.0.1:8096/analytics/performance/summary | jq
Rollback de Emergencia#
# Revertir a configuración anterior
curl -X POST http://127.0.0.1:8096/settings/rollback \
-H "Authorization: Bearer $TOKEN" \
-d '{"to_timestamp": "2026-03-09T00:00:00Z"}'
# O pausar autopilot temporalmente
curl -X POST http://127.0.0.1:8096/settings/autopilot \
-H "Authorization: Bearer $TOKEN" \
-d '{"AUTOPILOT_ENABLED": false}'
FIN DEL DOCUMENTO