Aller au contenu

Backtests et runs live

AQE expose les courtiers d’exécution et fournisseurs de données de marché via UnifiedBroker.

Combinaisons courantes :

  • PaperBroker + YahooFinanceDataFeed pour les backtests historiques locaux.
  • PaperBroker + Mt5DataFeed quand vous voulez des bougies MT5 avec une exécution backtest simulée.
  • Mt5Broker + Mt5DataFeed pour l’exécution live MetaTrader 5.
aq-engine/src/core/broker/mod.rs
let execution = PaperBroker::new(AccountType::Paper, 100_000.0, 1);
let data = YahooFinanceDataFeed::new();
let broker = UnifiedBroker::new_backtest(execution, data);

Pour la configuration propre à chaque broker, consultez Courtiers et flux de données.

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

Les exécutions générées enregistrent les artefacts sur disque sous :

  • backtests/<run_id>/backtest.db

AQE écrit l’artefact SQLite avec les logs de trade, round trips, historique de compte, insights et barres. Vous pouvez inspecter ces résultats dans AlgoQuant Studio via Backtest Results ou avec n’importe quel lecteur SQLite.

Le mode live utilise la même structure stratégie/runtime, mais s’abonne aux données live et aux mises à jour de trade.

Vous pouvez exécuter AQE en live :

  • avec AQS, en passant l’authentification et en activant la synchronisation live
  • sans AQS, en exécutant run_live(None)
aq-engine/src/node/codegen.rs
if let Err(e) = state.run_live(auth).await {
eprintln!("Live execution failed: {:?}", e);
std::process::exit(1);
}

Quand l’authentification est fournie, AQE écrit l’état live dans des tables scoped AQS comme :

  • insights
  • strategy_accounts
  • strategy_equity_points
  • strategy_live_metrics
  • strategy_events

Quand l’authentification est omise, AQE peut toujours fonctionner en live localement sans synchroniser dans AQS.

Quand AQE est compilé avec les features runtime et tui et que le processus est attaché à un terminal interactif, les backtests et runs live ouvrent automatiquement une interface Ratatui. Le TUI reflète les métriques, insights actifs, variables de stratégie, chemins de variables suivis, état de synchronisation AQS et événements runtime.

Utilisez --no-tui quand vous voulez garder le flux de logs console classique :

Terminal window
cargo run --features runtime,tui --release -- --no-tui

Lisez Interface terminale pour le layout des panneaux, les contrôles et le comportement d’arrêt en live.