Aller au contenu

Exécution live

Le runtime live s’organise autour d’un petit ensemble de surfaces observables :

  • insights
  • strategy_accounts
  • strategy_equity_points
  • strategy_live_metrics
  • strategy_events
  • strategy_actions

Le pipeline s’exécute dans le runtime de stratégie, pas dans l’UI. C’est là que la logique par état, la gestion de l’expiration et les chemins de rejet sont appliqués.

aq-engine/src/core/strategy/mod.rs
fn run_insight_pipeline(&mut self) {
// For each insight:
// - skip terminal rows
// - reject or cancel expired insights
// - run state-specific pipes
// - reject the insight if a pipe fails or does not pass
// - clear first_on_fill after filled-state pipes complete
}

Le paper broker protège le modèle de compte runtime en rejetant les ordres non finançables avant qu’ils ne créent un état de buying power invalide.

aq-engine/src/core/broker/paper_broker.rs
async fn submit_order(&self, insight: Insight) -> Result<Order, BrokerError> {
// ...
if let Some(estimated_price) = order.limit_price.or(order.stop_price) {
if let Some(reason) = self.insufficient_funds_reason(order.qty, estimated_price) {
let mut rejected_order = order.clone();
rejected_order.status = TradeUpdateEvent::Rejected;
rejected_order.rejection_reason = Some(reason);
self.emit_trade_event(&rejected_order, TradeUpdateEvent::Rejected);
return Ok(rejected_order);
}
}
}

L’état live doit être limité par :

  • strategy_id
  • live_session_id

Cela permet à AQS d’observer uniquement la session de stratégie en cours sans mélanger les lignes d’anciennes sessions ou d’autres utilisateurs.

  • les mises à jour d’insight doivent être persistées quand les changements d’état se produisent
  • le compte et l’equity doivent être mis à jour lors des fills et clôtures
  • les métriques live doivent refléter l’état runtime courant
  • les reconnexions doivent rejouer les opérations de synchronisation en attente dans une limite raisonnable quand c’est possible
  • aq-engine/src/core/strategy/mod.rs
  • aq-engine/src/core/broker/paper_broker.rs
  • aq-engine/src/core/strategy/aqs_sync.rs