# Testing Checklist

## 목적

이 체크리스트는 Phase 4 백테스터의 **정확성, 재현성, 보수성**을 검증하기 위한 것입니다.

테스트는 아래 5개 계층으로 나눕니다.

1. 단위 테스트
2. 통합 테스트
3. 리플레이 / 재현성 테스트
4. 통계/리포트 검증
5. 운영 전 수동 검토

---

## P0 — 반드시 통과해야 하는 테스트

### 1. 날짜/시간 정렬

- [ ] 장전 event가 같은 날 reaction session으로 매핑되는지
- [ ] 장후 event가 다음 거래일 reaction session으로 매핑되는지
- [ ] 장중 event가 availability timestamp 규칙에 맞게 처리되는지
- [ ] 휴장일 다음 거래일 계산이 정확한지
- [ ] timezone aware datetime만 사용되는지

### 2. snapshot 무결성

- [ ] snapshot reader가 future rows를 읽지 않는지
- [ ] feature availability timestamp 이후의 값만 사용되는지
- [ ] 결측 critical field가 있으면 skip되는지
- [ ] dataset snapshot id가 결과 metadata에 기록되는지

### 3. deterministic 실행

- [ ] 동일 manifest 재실행 시 blotter row 수가 같은지
- [ ] 동일 manifest 재실행 시 metrics summary가 같은지
- [ ] tie-break가 deterministic한지
- [ ] floating rounding 정책이 고정되어 있는지

### 4. 체결/청산 규칙

- [ ] next-open entry가 정확히 open price 기반으로 계산되는지
- [ ] stop breach 시 보수적 우선순위가 적용되는지
- [ ] target + stop same-bar 충돌 시 기본 우선순위가 테스트되는지
- [ ] time exit가 holding day close에 실행되는지
- [ ] partial exit 후 잔여수량이 정확히 업데이트되는지

### 5. 포트폴리오 제약

- [ ] max positions 초과 진입이 차단되는지
- [ ] sector gate가 적용되는지
- [ ] daily risk budget이 초과되면 나머지 종목이 reject되는지
- [ ] duplicate symbol / issuer 진입이 차단되는지
- [ ] cash/exposure ledger가 음수로 깨지지 않는지

---

## P1 — 강하게 권장되는 테스트

### 6. 비용/슬리피지

- [ ] slippage bps가 fill price에 반영되는지
- [ ] commission model on/off가 결과에 반영되는지
- [ ] 저유동성 penalty가 sizing 또는 fill에 반영되는지

### 7. 리포트/산출물

- [ ] trade blotter 필수 컬럼이 모두 채워지는지
- [ ] equity curve와 blotter realized pnl이 일치하는지
- [ ] attribution report 합계가 전체 결과와 일치하는지
- [ ] metrics summary JSON schema 검증이 통과하는지
- [ ] plots 생성 실패가 run 전체를 깨지 않는지

### 8. split / walk-forward

- [ ] year split이 정상 생성되는지
- [ ] regime split이 정상 생성되는지
- [ ] walk-forward window가 누수 없이 생성되는지
- [ ] test 구간이 train 구간과 겹치지 않는지

---

## P2 — 리플레이 / 회귀 테스트

### 9. 회귀 스냅샷

- [ ] 소형 고정 데이터셋으로 golden run 결과를 저장했는지
- [ ] 코드 변경 후 golden run 결과가 의도치 않게 바뀌지 않는지
- [ ] 의도적 변경일 때는 run notes에 차이를 기록하는지

### 10. 에러 처리

- [ ] missing bar 데이터가 있을 때 no-trade로 안전하게 떨어지는지
- [ ] unknown config key가 에러 처리되는지
- [ ] schema invalid manifest가 실행 전에 차단되는지
- [ ] corrupted artifact write가 적절히 에러를 내는지

---

## 수동 검토 체크리스트

- [ ] 샘플 20개 거래를 사람이 손으로 계산해 엔진 결과와 대조했는지
- [ ] 장후 발표 실적 5개 케이스를 수동 검증했는지
- [ ] same-bar stop/target 충돌 케이스를 수동 검증했는지
- [ ] 섹터 제한 때문에 reject된 거래가 합리적인지 검토했는지
- [ ] drawdown curve가 trade blotter와 정합적인지 확인했는지
- [ ] 기대보다 너무 좋은 성과가 나올 때 leakage audit를 수행했는지

---

## 통과 기준

- P0 전항목 통과
- P1 항목 중 치명적 실패 없음
- 수동 검토 샘플에서 명백한 timestamp/price 오류 없음
- regression snapshot 재현 성공
