alt/agent-roadmap/archive/phase/backtest-loop/milestones/backtest-engine-baseline.md
toki a5710b20ff feat(backtest): run canceled status support and phase progress update
Backtest run handler에 context.Canceled 상태 전이를 추가한다.
executor가 context.Canceled를 반환하면 run 상태를 canceled로 설정한다.
에러 메시지 포맷팅도 동적 상태로 변경했다.

agent-roadmap을 업데이트한다.
Backtest Engine Baseline을 완료 처리하고 archive로 이동한다.
Backtest Analysis Surface를 진행 중 상태로 전환한다.
Task 검증 조건을 추가하고 완료 기준을 정리한다.

테스트 추가:
- context.Canceled 전이 테스트를 추가한다.
2026-05-30 12:53:34 +09:00

3.6 KiB

Milestone: Backtest Engine Baseline

위치

  • Roadmap: agent-roadmap/ROADMAP.md
  • Phase: agent-roadmap/phase/backtest-loop/PHASE.md

목표

정규화된 일봉 데이터를 사용해 전략 실행, portfolio state, result summary가 재현 가능한 backtest loop를 만든다. 이 milestone은 백테스트 기반을 ALT 확장의 중심축으로 고정한다.

상태

[완료]

구현 잠금

  • 상태: 해제
  • 결정 필요: 없음

범위

  • daily bar 기반 strategy execution skeleton
  • deterministic backtest run lifecycle
  • starting cash, ending equity, trades/positions summary
  • result persistence and query
  • fixture data 기반 검증

기능

Epic: [backtest-engine] Deterministic backtest engine

일봉 기반 전략 실행, portfolio state, result 저장과 fixture 검증 흐름을 묶는다.

  • [run-lifecycle] backtest run의 pending/running/succeeded/failed/canceled lifecycle이 있다. 검증: worker가 backtest 실행을 소유하고 API는 실행 요청/조회 경계만 담당한다.
  • [strategy-port] strategy를 engine에 주입할 port 또는 interface가 있다.
  • [portfolio-state] cash, position, equity를 계산하는 최소 portfolio state가 있다.
  • [result-store] backtest result가 저장되고 조회된다. 검증: 결과가 contracts/client에서 조회 가능한 형태로 연결될 수 있다.
  • [fixture-test] fixture daily bars로 deterministic test가 통과한다. 검증: 동일한 fixture와 strategy 입력으로 동일한 result가 나오고 bin/testbin/lint가 통과한다.

완료 리뷰

  • 상태: 승인됨
  • 요청일: 2026-05-30
  • 완료 근거: 모든 기능 Task와 검증 조건이 충족되었다. worker backtest handler가 pending/running/succeeded/failed/canceled 전이를 소유하고, contracts/client에는 backtest 요청/조회 payload와 parser boundary가 있다. bin/testbin/lint가 통과했다.
  • 리뷰 필요:
    • 사용자가 완료 결과를 확인했다
    • archive 이동을 승인했다
  • 리뷰 코멘트: 2026-05-30 사용자 요청으로 완료 처리하고 archive로 이동한다.

범위 제외

  • 실시간 전략 실행
  • paper/live order routing
  • 고급 리스크 모델
  • 고급 성과 분석 지표 전체

작업 컨텍스트

  • 관련 경로: packages/domain/backtest/, services/worker/, packages/contracts/proto/alt/v1/backtest.proto
  • 표준선(선택): Go는 Hexagonal Architecture, light CQRS, domain event 표현을 기본 설계 프레임으로 삼는다.
  • 선행 작업: Korea Daily Data Foundation
  • 후속 작업: Backtest Analysis Surface
  • 진행 근거(2026-05-30): [strategy-port], [portfolio-state]packages/domain/backtest/types.go, packages/domain/backtest/types_test.go, go test ./packages/domain/...로 확인했다.
  • 진행 근거(2026-05-30): [run-lifecycle]services/worker/internal/jobs/backtest_jobs.go, services/worker/internal/jobs/backtest_jobs_test.go, services/api/internal/contracts/parser_map.go, packages/contracts/proto/alt/v1/backtest.proto, go test ./services/worker/internal/jobs/...로 확인했다.
  • 진행 근거(2026-05-30): [result-store]services/worker/internal/storage/ports.go, services/worker/internal/storage/postgres/store.go, services/worker/internal/storage/postgres/mapping_test.go, packages/contracts/proto/alt/v1/backtest.proto, apps/client/lib/src/contracts/alt_contracts.dart로 확인했다.
  • 진행 근거(2026-05-30): [fixture-test]services/worker/internal/backtest/fixture_test.go, services/worker/internal/backtest/engine_test.go, bin/test, bin/lint로 확인했다.
  • 확인 필요: 없음