콘텐츠로 이동

백테스트 및 실시간 실행

브로커와 데이터 피드 선택하기

섹션 제목: “브로커와 데이터 피드 선택하기”

AQE는 UnifiedBroker를 통해 주문 실행 브로커와 시장 데이터 공급자를 제공합니다.

일반적인 조합은 다음과 같습니다.

  • 로컬 과거 데이터 백테스트에는 PaperBroker + YahooFinanceDataFeed를 사용합니다.
  • MT5 캔들 데이터와 모의 백테스트 체결을 함께 사용하려면 PaperBroker + Mt5DataFeed를 사용합니다.
  • MetaTrader 5에서 실시간으로 주문을 실행하려면 Mt5Broker + Mt5DataFeed를 사용합니다.
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);

브로커별 설정은 브로커 및 데이터 피드를 참조하세요.

백테스트 실행기는 현재 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

실행 결과 파일은 디스크의 다음 위치에 저장됩니다.

  • backtests/<run_id>/backtest.db

AQE는 거래 로그, 진입부터 청산까지의 왕복 거래 내역, 계좌 이력, 인사이트, 봉 데이터를 SQLite 결과 파일에 기록합니다. AlgoQuant Studio의 Backtest Results나 SQLite 조회 도구에서 결과를 확인할 수 있습니다.

실시간 모드는 동일한 전략 및 런타임 구조를 사용하지만 실시간 데이터와 거래 업데이트를 구독합니다.

AQE는 다음 방식으로 실시간 실행할 수 있습니다.

  • 인증 정보를 전달하고 실시간 동기화를 활성화하여 AQS와 함께 실행
  • run_live(None)을 실행하여 AQS 없이 실행
aq-engine/src/node/codegen.rs
if let Err(e) = state.run_live(auth).await {
eprintln!("Live execution failed: {:?}", e);
std::process::exit(1);
}

인증 정보가 제공되면 AQE는 다음과 같은 AQS 전용 테이블에 실시간 상태를 기록합니다.

  • insights
  • strategy_accounts
  • strategy_equity_points
  • strategy_live_metrics
  • strategy_events

인증 정보를 생략해도 AQE는 AQS와 동기화하지 않고 로컬에서 실시간으로 실행할 수 있습니다.

AQE를 runtime 및 tui 기능으로 컴파일하고 프로세스가 대화형 터미널에 연결되어 있으면, 백테스트와 실시간 실행 시 Ratatui 인터페이스가 자동으로 열립니다. TUI는 지표, 활성 인사이트, 전략 변수, 감시 중인 변수 경로, AQS 동기화 상태, 런타임 이벤트를 표시합니다.

일반 콘솔 로그 스트림을 사용하려면 --no-tui를 지정하세요.

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

패널 구성, 조작 방법, 실시간 실행 종료 동작은 터미널 UI를 읽어보세요.