Ir al contenido

Flujo del ciclo de vida de la estrategia

AQE mantiene un StrategyState y ejecuta la estrategia en un orden predecible:

  1. on_start(ctx) para el arranque, que se realiza una sola vez.
  2. universe(ctx) para la selección de símbolos estática o definida directamente en la estrategia.
  3. Modelos de universo registrados para la selección modular de símbolos.
  4. Carga de metadatos de activos para el universo combinado final.
  5. init(ctx, asset) una vez por cada activo negociable.
  6. Actualizaciones de historial por vela, indicadores, modelos alfa, callbacks de estrategia y pipes de insights.
  7. on_teardown(ctx) para la limpieza al finalizar.

Los bloques de lógica del ciclo de vida se ejecutan antes o después de los métodos del ciclo de vida de la estrategia, tanto si son generados como si se han escrito directamente. Los modelos de universo aportan símbolos al universo final.

El flujo de ejecución del backtest sigue la implementación de StrategyState::run_backtest:

aq-engine/src/core/strategy/mod.rs
// 1. strategy.on_start(ctx)
// 2. load_universe() -> strategy.universe() -> broker.get_ticker_info()
// 3. alpha.start() per alpha
// 4. load_init() -> OnInit lifecycle logic -> strategy.init per asset
// 5. alpha.init(asset) per alpha per asset
// 6. broker.load_backtest_data()
// 7. loop: broker step -> on_bar() -> optional insight generation -> run_insight_pipeline()
// 8. strategy.on_teardown(ctx)
// 9. return BacktestResults

Los proyectos generados por AQS siguen el mismo orden de ejecución. La diferencia es que AQS genera partes del cuerpo de la estrategia a partir del grafo de nodos antes de que AQE ejecute la estrategia.