Saltar a contenido

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:

  1. Stops muy estrechos (ATR mult: 1.6):
  2. El mercado toca el stop antes de alcanzar TP
  3. Necesita más "espacio para respirar"

  4. Take Profits muy lejanos (2x stop):

  5. El precio raramente alcanza TP antes de revertir
  6. Muchas operaciones ganadoras se convierten en perdedoras

  7. Entradas subóptimas:

  8. Entry ATR fraction de 0.25 puede hacer que entres tarde en el breakout
  9. Para cuando la señal se confirma, gran parte del movimiento ya ocurrió

  10. Trend filter demasiado restrictivo:

  11. Filtra breakouts válidos en mercados laterales
  12. 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:

  1. Parámetros de breakout muy conservadores:
  2. Lookback bars: 12 (4 horas en M15) es muy largo
  3. Requiere un rango prolongado antes de considerar breakout
  4. En mercados dinámicos, los rangos cambian más rápido

  5. Filtro de volumen muy alto:

  6. 13.8% de skips por "low_relative_volume"
  7. Min vol rel de 0.3-0.6 es exigente
  8. EURUSDT con 0.6142 está descartando muchas oportunidades válidas

  9. Condiciones de mercado actuales:

  10. EURUSDT/PAXGUSDT probablemente en rango lateral estrecho
  11. Baja volatilidad = pocos breakouts claros
  12. 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_breakout está 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#

  1. Backtest histórico con nuevos parámetros (últimos 90 días)
  2. Shadow test en paralelo durante 48-72 horas
  3. Si resultados favorables → Promoción a producción
  4. 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#

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#

  1. 🔴 URGENTE - Esta Semana:
  2. ✅ Implementar Propuesta 1 (Optimización parámetros)
  3. Objetivo: Mejorar win rate de 27% a 35%
  4. Razón: PnL negativo es insostenible, necesita corrección inmediata

  5. 🟡 IMPORTANTE - Próximas 2 Semanas:

  6. Implementar Propuesta 2 (MA Crossover)
  7. Implementar Propuesta 4 (Habilitar ventas)
  8. Razón: Diversificación reduce riesgo y aumenta oportunidades

  9. 🟢 DESEADO - Próximo Mes:

  10. Propuesta 3 (Shadow tests continuos)
  11. Propuesta 5 (Detector régimen)
  12. Razón: Mejora continua y adaptabilidad

  13. 🔵 INVESTIGACIÓN - Largo Plazo:

  14. Propuesta 6 (ML optimization)
  15. 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