Aller au contenu

Flux du cycle de vie de stratégie

AQE possède un StrategyState et exécute la stratégie dans un ordre prévisible :

  1. on_start(ctx) pour le démarrage unique.
  2. universe(ctx) pour une sélection de symboles statique ou inline.
  3. les universe models enregistrés pour une sélection modulaire.
  4. le chargement des métadonnées d’actifs pour l’univers final fusionné.
  5. init(ctx, asset) une fois par actif tradable.
  6. les mises à jour par barre, indicateurs, modèles alpha, callbacks de stratégie et insight pipes.
  7. on_teardown(ctx) pour le nettoyage final.

Les blocs de logique lifecycle encadrent les méthodes de stratégie générées ou inline. Les universe models ajoutent des symboles à l’univers final.

Le flux de backtest suit l’implémentation dans 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

Les projets AQS générés suivent le même ordre runtime. La différence est qu’AQS génère des parties du corps de stratégie depuis le graphe avant qu’AQE exécute la stratégie.