Skip to content

Backtest Sequence

%%{init: {"sequence": {"mirrorActors": false, "actorMargin": 56, "messageMargin": 28}}}%%
sequenceDiagram
  actor User
  participant BacktestEngine as BacktestEngine
  participant DataSource as DataSource
  participant EventLoop as EventLoop
  participant Strategy as Strategy
  participant ExecutionPipeline as ExecutionPipeline
  participant Portfolio as Portfolio
  participant Metrics as Metrics

  User->>BacktestEngine: run(config)
  activate BacktestEngine
  BacktestEngine->>DataSource: load historical data
  DataSource-->>BacktestEngine: bars / ticks / books
  BacktestEngine->>EventLoop: enqueue and start
  activate EventLoop
  loop event playback
    EventLoop->>Strategy: on_bar / on_tick
    activate Strategy
    Strategy->>ExecutionPipeline: submit order / signal intent
    deactivate Strategy
    activate ExecutionPipeline
    ExecutionPipeline->>Portfolio: validate and apply fills
    ExecutionPipeline->>Metrics: publish execution effects
    deactivate ExecutionPipeline
  end
  EventLoop-->>BacktestEngine: exhausted
  deactivate EventLoop
  BacktestEngine-->>User: BacktestResults
  deactivate BacktestEngine