refactor: backtest-loop milestone 및 SDD 문서 업데이트

This commit is contained in:
toki 2026-06-20 20:45:51 +09:00
parent 5deef2f5ed
commit a897890dc9
4 changed files with 21 additions and 18 deletions

View file

@ -11,7 +11,7 @@
## 상태
[진행중]
[완료]
## 승격 조건
@ -21,7 +21,7 @@
- 상태: 해제
- SDD: 필요
- SDD 문서: `agent-roadmap/sdd/backtest-loop/backtest-multi-timeframe-coverage/SDD.md`
- SDD 문서: `agent-roadmap/archive/sdd/backtest-loop/backtest-multi-timeframe-coverage/SDD.md`
- SDD 사유: timeframe contract/proto, provider capability, DB 저장 key, aggregation provenance, backtest fill policy와 field smoke가 함께 바뀐다.
- 잠금 해제 조건: 아래 체크리스트
- [x] SDD 잠금이 해제되어 있다.
@ -65,18 +65,21 @@
전략 실행과 결과 handoff가 timeframe 차이를 명시적으로 다룬다.
- [x] [run-selector] backtest scenario matrix가 monthly/daily/minute timeframe을 표현하고 각 timeframe의 입력 기간을 검증한다. 검증: matrix expand test와 dry-run validation이 monthly/daily/minute run id를 생성한다.
- [ ] [fill-policy] daily 전용 fill policy를 multi-timeframe 용어로 재정리하고, timeframe별 체결/next-bar 규칙을 명시한다. 검증: fixture backtest가 monthly/daily/minute 각각 deterministic result를 낸다.
- [ ] [freshness-readiness] collection freshness와 readiness output이 월/일/분 timeframe별 latest/missing/gap/duplicate 상태를 구분한다. 검증: monthly/daily/minute freshness fixture가 stable text/JSONL로 구분된다.
- [x] [fill-policy] daily 전용 fill policy를 multi-timeframe 용어로 재정리하고, timeframe별 체결/next-bar 규칙을 명시한다. 검증: fixture backtest가 monthly/daily/minute 각각 deterministic result를 낸다.
- [x] [freshness-readiness] collection freshness와 readiness output이 월/일/분 timeframe별 latest/missing/gap/duplicate 상태를 구분한다. 검증: monthly/daily/minute freshness fixture가 stable text/JSONL로 구분된다.
## 완료 리뷰
- 상태: 없음
- 요청일: 없음
- 완료 근거: 없음
- 상태: 통과
- 요청일: 2026-06-20
- 완료 근거:
- `fill-policy`: `agent-task/archive/2026/06/m-backtest-multi-timeframe-coverage/01_fill_policy/complete.log`의 Roadmap Completion PASS와 SDD S07 PASS로 확인했다.
- `freshness-readiness`: `agent-task/archive/2026/06/m-backtest-multi-timeframe-coverage/02_freshness_readiness/complete.log`의 Roadmap Completion PASS와 SDD S08 PASS로 확인했다.
- 종료 전 코드레벨 재검토에서 S01-S08 대응 코드/테스트를 확인했고 `bin/contracts-check`, `bin/worker-storage-check`, `bin/test`, `bin/lint`, `bin/build`, `git diff --check`가 통과했다.
- 리뷰 필요:
- [ ] 사용자가 완료 결과를 확인했다
- [ ] archive 이동을 승인했다
- 리뷰 코멘트: 없음
- [x] 사용자가 완료 결과를 확인했다
- [x] archive 이동을 승인했다
- 리뷰 코멘트: 코드레벨 재검토와 전체 검증이 통과해 완료 및 archive 대상으로 확정했다.
## 범위 제외

View file

@ -2,7 +2,7 @@
## 위치
- Milestone: `agent-roadmap/phase/backtest-loop/milestones/backtest-multi-timeframe-coverage.md`
- Milestone: `agent-roadmap/archive/phase/backtest-loop/milestones/backtest-multi-timeframe-coverage.md`
- Phase: `agent-roadmap/phase/backtest-loop/PHASE.md`
## 상태
@ -29,7 +29,7 @@
| 영역       | 기준                                               | 메모                                                                          |
| -------------------| --------------------------------------------------------------------------------------------------| ---------------------------------------------------------------------------------------------------------------------------------------------------------|
| Roadmap      | `agent-roadmap/phase/backtest-loop/milestones/backtest-multi-timeframe-coverage.md`       | Milestone 목표, 기능 Task, 범위 제외, 완료 후보 반영 기준                                                |
| Roadmap      | `agent-roadmap/archive/phase/backtest-loop/milestones/backtest-multi-timeframe-coverage.md`   | Milestone 목표, 기능 Task, 범위 제외, 완료 후보 반영 기준                                                |
| Code       | `packages/contracts/proto/alt/v1/common.proto`                          | `Timeframe` enum 원천. 현재 `DAILY`, `MINUTE_1`, `MINUTE_5`가 있으며 월봉 추가가 필요하다.                               |
| Code       | `packages/domain/market/types.go`                                | domain `market.Timeframe` 원천. 현재 `1d`, `1m`, `5m`가 있다.                                              |
| Code       | `packages/contracts/proto/alt/v1/market.proto`, `packages/contracts/proto/alt/v1/backtest.proto` | `Bar`, `ListBarsRequest`, `BacktestRunSpec`의 timeframe 전달 계약                                            |

View file

@ -25,10 +25,10 @@
- [완료] Backtest Scenario Automation
- 경로: `agent-roadmap/archive/phase/backtest-loop/milestones/backtest-scenario-automation.md`
- 요약: 선택 universe와 기간 조합을 반복 가능한 backtest scenario로 실행하고, 원격 runner에서 migration/runtime/secret 주입/결과 handoff를 안정화한다.
- [진행중] Backtest Multi-Timeframe Coverage
- 경로: `agent-roadmap/phase/backtest-loop/milestones/backtest-multi-timeframe-coverage.md`
- [완료] Backtest Multi-Timeframe Coverage
- 경로: `agent-roadmap/archive/phase/backtest-loop/milestones/backtest-multi-timeframe-coverage.md`
- 요약: 월봉, 일봉, 분봉을 백테스트 기본 분석 timeframe으로 정리하고 data import/store/backtest/freshness 검증을 맞춘다.
- [계획] Scheduled Market Data Refresh
- [진행중] Scheduled Market Data Refresh
- 경로: `agent-roadmap/phase/backtest-loop/milestones/scheduled-market-data-refresh.md`
- 요약: 원격 서버에서 선택 universe의 market data import를 주기 실행하고 freshness/backfill/readiness를 headless로 확인한다.

View file

@ -11,7 +11,7 @@
## 상태
[계획]
[진행중]
## 승격 조건
@ -84,6 +84,6 @@
- 표준선(선택): 운영 기능은 먼저 화면 없이 CLI, YAML scenario, JSONL/text output, fixture, remote smoke로 검증한다.
- 표준선(선택): scheduled import는 provider 호출과 DB upsert를 idempotent하게 유지하고, 동일 tick 재실행이 중복 row를 만들지 않아야 한다.
- 표준선(선택): scheduler config에는 secret 값을 넣지 않고, 원격 runtime env/SOPS 주입 경계를 따른다.
- 선행 작업: Backtest Data Collection Infrastructure, Backtest Scenario Automation
- 후속 작업: Backtest Multi-Timeframe Coverage, Data Quality Monitoring 후보
- 선행 작업: Backtest Data Collection Infrastructure, Backtest Scenario Automation, Backtest Multi-Timeframe Coverage
- 후속 작업: Data Quality Monitoring 후보
- 결정: scheduler는 `services/worker` 내장 loop가 1차 실행 주체다. OS/systemd는 worker process supervision만 맡고 external cron은 사용하지 않는다. worker scheduler는 설정된 한도 안에서 병렬 수집을 지원해야 한다.