Universe Decisions
Append-only 결정 로그.
2026-04-21 Universe spec 에 price filter 포함
Context: 기존 코드는 price filter 를 trade-level 에서 적용 (run_v11.py filter_trades_by_entry_price). 하지만 논리적으로는 ‘거래 가능한 종목군’ = universe 이므로 spec 의 일부여야 한다.
Decision: Universe spec JSON 에 price_filter.max_price 필드 포함. 스냅샷 생성 시 apply.
Reason: 실험 간 공정 비교 시 ‘V3 와 V3-p3 는 다른 universe’ 로 취급해야 함. 같은 snapshot 하나로는 표현 불가.
Alternatives rejected:
- 기존처럼 trade-level filter 유지 — universe 개념이 쪼개짐 Consequences: Snapshot 이 spec 별로 다름. V3-p3_YYYY-MM-DD 와 V3-p5_YYYY-MM-DD 는 별개.
2026-04-18 v13 에서 p3 고정
Context: v13.1~v13.8 8개 variant 실험. 각각 다른 exit 컨셉. Decision: 모든 variant 에서 price filter p3 고정 사용. Reason: v11 에서 price filter 별 mean 비교 결과 p3 가 OOS Sharpe / MDD 양쪽에서 최선:
| filter | Sharpe | OOS Sh | Return | MDD | Trades |
|---|---|---|---|---|---|
| none | 0.80 | 1.23 | +398% | -25.7% | 44 |
| p7 | 1.48 | 1.70 | +362% | -16.4% | 29 |
| p5 | 1.49 | 1.71 | +340% | -16.4% | 27 |
| p3 | 1.47 | 1.81 | +321% | -14.4% | 24 |
다른 price filter 섞으면 v13.N 간 비교 오염.
Alternatives rejected:
- p3/p5/p7 sweep — v13.N 비교 오염
- none — Sharpe 0.80, MDD -25.7% 명백 열위
- p5 — p3 와 근소 차이지만 일관성 우선 Caveat: trade 수 24 로 가장 적음 → 일부 v13.N variant 가 trade < 5 sparse 가능성. 각 variant 의 trade count 확인 필수. Consequences: p3 universe 정의가 v13 default. 다른 price filter 로의 일반화는 별도 검증.
Source: v13-plan.md, v11 report