Saltar a contenido

Shadow Tests (MVP)#

Shadow Tests permite evaluar variantes del sistema sin ejecutar operaciones reales.

Que incluye#

  • Multiples configuraciones de shadow test.
  • Ejecucion manual por configuracion.
  • Reporte baseline vs shadow por run.
  • Historial de runs.

UI#

  • Ruta: /shadow-tests
  • Acceso desde menu: Analisis -> Shadow Tests.

API#

  • GET /shadow-tests/configs
  • POST /shadow-tests/configs
  • PATCH /shadow-tests/configs/{id}
  • DELETE /shadow-tests/configs/{id}
  • POST /shadow-tests/configs/{id}/run
  • GET /shadow-tests/runs?config_id=&limit=

Campos de configuracion#

  • name: nombre de la variante.
  • enabled: activa/inactiva.
  • symbols: lista de simbolos.
  • timeframes: lista de timeframes (M5, M15, H1, etc).
  • decision_scope: blocked_only, allow_only, all.
  • include_reasons / exclude_reasons: filtros por reason.
  • min_favorable_move_pct: umbral para clasificar potencial favorable.
  • min_adverse_move_pct: umbral para clasificar potencial adverso.
  • horizon_multiplier: multiplicador de horizonte por timeframe.
  • min_decisions: muestra minima requerida.
  • infer_side_from_details: permite reconstruir un lado hipotetico cuando la decision guardo diagnosticos pero no BUY/SELL.
  • notes: notas operativas.

Como interpreta resultados (MVP)#

  • Si la decision ya genero trade real (queue_entry_id enlazado), usa pnl_usdt real.
  • Si no hay trade real, proyecta resultado con velas dentro del horizonte y clasifica:
  • expected_win
  • expected_loss
  • expected_flat
  • Si infer_side_from_details=true, el shadow puede usar diagnosticos estructurados del strategy payload para inferir una direccion hipotetica. Hoy esto se usa sobre todo para no_signal de paxg_mean_reversion, donde la estrategia ya deja trazas de condiciones buy/sell.
  • Desde 2026-03-13, paxg_mean_reversion tambien persiste hypothetical_side y hypothetical_side_reason cuando el setup estaba inclinado pero aun no alcanzaba señal accionable. Eso reduce la dependencia de inferencia posterior y mejora la trazabilidad.

Diagnostico operativo#

  • API: GET /ops/strategy/no-signal-diagnostics
  • Uso recomendado:
  • symbol=PAXGUSDT
  • timeframe=M15
  • strategy_name=paxg_mean_reversion

Este resumen separa:

  • with_explicit_hypothetical_side
  • inferable_now
  • blind

Con eso puedes saber si el problema esta en los gates o en que la estrategia no esta dejando suficiente contexto para auditar los no_signal.

Persistencia#

  • Archivo local: storage/reports/shadow_tests.json

Scheduler automatico#

Variables env:

  • SHADOW_TESTS_AUTO_RUN (true/false)
  • SHADOW_TESTS_INTERVAL_MINUTES
  • SHADOW_TESTS_DAYS
  • SHADOW_TESTS_MAX_DECISIONS
  • SHADOW_TESTS_MAX_CONFIGS_PER_CYCLE

Cuando esta activo, el backend ejecuta ciclos periodicos sobre todas las configs enabled. Tambien puedes disparar ciclo manual con:

  • POST /shadow-tests/run-enabled

Limites del MVP#

  • No hay scheduler por config (solo run manual).
  • No reemplaza backtests formales; es evaluacion operativa paralela.
  • PnL shadow proyectado depende de cobertura de velas y calidad del contexto de decision.
  • La inferencia de lado no sustituye un backtest formal; sirve para priorizar que gates o variantes merecen promotion o analisis mas profundo.