Modo Backtest

Validar si el sub-agente-bolsa tiene poder predictivo analizando predicciones sobre datos históricos vs resultados reales.

¿Qué hace el backtest?

  1. Eliges un ticker y un periodo (ventana hacia atrás: 3m, 6m, 1y, 2y).
  2. Eliges un step = cada cuántos días tomas una fecha para analizar (1d, 1w, 1m...).
  3. El backtest toma N fechas = window ÷ step (ej: 90 ÷ 7 ≈ 13 fechas).
  4. Para cada fecha, lanza el sub-agente-bolsa como si fuera ese día (solo ve datos anteriores).
  5. El sub-agente produce una predicción: BUY/SELL con entry, stop, target.
  6. Después, coge los datos reales posteriores a esa fecha (siguientes step_days).
  7. Compara: ¿tocó target? ¿tocó stop? ¿se quedó a medias? ¿NO ACTION?
  8. Agrega: win rate, P&L total, distribución, coste, tiempo de ejecución.

Importante: el periodo es determinista (no aleatorio). Dos runs con los mismos params dan los mismos resultados. El sub-agente NO envía órdenes — es simulación.

🔒 ¿Cómo sé que el sub-agente NO ve datos del futuro? (verificación anti-trampa)

El SKILL de sub-agente-bolsa tiene instrucciones explícitas:

  1. Al pedir datos a Alpaca, pasar end=as_of (no "now").
  2. Al pedir noticias a Alpaca, filtrar con published_at <= as_of.
  3. NO invocar Engram con scope "últimos 7 días" (incluiría futuro).
  4. Propagar as_of al AgentContext de los 7 stages.

El backtest-runner usa rangos de fechas disjuntos:

  1. Sub-agente: recibe barras desde ~1 año antes hasta as_of.
  2. Validación: recibe barras desde as_of hasta as_of + step_days.
  3. Los dos rangos no se solapan → el sub-agente no vio el resultado.

El reporte del run incluye un "Data Integrity Check" que verifica automáticamente que los rangos son disjuntos. Si ves ✗ rojo, hay un problema.

Nuevo Backtest

Runs Recientes

Cargando...