Modo Backtest
Validar si el sub-agente-bolsa tiene poder predictivo analizando predicciones sobre datos históricos vs resultados reales.
¿Qué hace el backtest?
- Eliges un ticker y un periodo (ventana hacia atrás: 3m, 6m, 1y, 2y).
- Eliges un step = cada cuántos días tomas una fecha para analizar (1d, 1w, 1m...).
- El backtest toma N fechas = window ÷ step (ej: 90 ÷ 7 ≈ 13 fechas).
- Para cada fecha, lanza el sub-agente-bolsa como si fuera ese día (solo ve datos anteriores).
- El sub-agente produce una predicción: BUY/SELL con entry, stop, target.
- Después, coge los datos reales posteriores a esa fecha (siguientes step_days).
- Compara: ¿tocó target? ¿tocó stop? ¿se quedó a medias? ¿NO ACTION?
- 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:
- Al pedir datos a Alpaca, pasar
end=as_of(no "now"). - Al pedir noticias a Alpaca, filtrar con
published_at <= as_of. - NO invocar Engram con scope "últimos 7 días" (incluiría futuro).
- Propagar
as_ofal AgentContext de los 7 stages.
El backtest-runner usa rangos de fechas disjuntos:
- Sub-agente: recibe barras desde ~1 año antes hasta
as_of. - Validación: recibe barras desde
as_ofhastaas_of + step_days. - 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...