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 양쪽에서 최선:

filterSharpeOOS ShReturnMDDTrades
none0.801.23+398%-25.7%44
p71.481.70+362%-16.4%29
p51.491.71+340%-16.4%27
p31.471.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