Topic: 발굴 파이프라인 Walk-Forward 검증¶
Status: 🔄 진행 중
Created: 2026-05-26 (Tue)
Priority: HIGH
선행: docs/research/2026-05-26_S317_analyzer_inventory.md (3 분석기 인벤토리)
배경¶
S313~S316 작업으로 발굴 파이프라인 5개 신규 도구를 만들었으나 모두 t0=2026-04-06 1시점 강상승장에서만 검증. S314 결과 Q3 룰이 D+30 spread -33.27pp로 정반대 작동 → regime 의존성 확인. 새 루틴 분리 전 walk-forward 검증 필수.
PM 교정 (2026-05-26):
- 에이전트 출력의 "왜(WHY)"가 학습 데이터 추정으로 작성됨 → [검증]/[추정]/[미검증] 라벨 + WebSearch 선행 의무화 (.claude/agents/EVIDENCE_REQUIRED.md)
- KOFIA 고객예탁금은 가장 간편한 방법으로 — OpenAPI 신청 아닌 네이버 금융 페이지 스크래핑
- 매출 5분기 한계는 DART 직접 백필로 극복
WBS¶
Phase 0. 신규 도구 개선 — ✅ 완료¶
- T0 인자화:
theme_rs.py,theme_state_classifier.py,theme_selection.py,theme_leader_select.py,chart_state_score.py(5개) —--date인자 + compute() 모듈 진입점 - StateThresholds dataclass 외부화 (regime별 캘리브레이션 가능)
- selection 충돌 종목 best_state 우선순위 해소
Phase A. 데이터 백필 — ✅ 6/6 완료 (KOFIA 포함)¶
| 작업 | 산출 | 상태 |
|---|---|---|
| A1 ats_main_v2 | 354종 100% themes 보강 (industry/sector fallback) | ✅ |
| A2 KRX 파생 4년 | 974일 × 281,967행 (drvprod_dd_trd) | ✅ |
| A3 CFTC COT 4년 | Legacy 56,517 + TFF 11,347행 | ✅ |
| A4+A5 매크로 panel | 1,461일 × 39열 (yf 28 + FRED 11) | ✅ |
| A7 고객예탁금 9.8년 | 네이버 금융 우회, 2,400행 × 10지표, NaN 0% | ✅ |
| A8 DART 분기재무 7년 | 437,600행 + EA panel 4,709 EA(YoY) ★ | ✅ |
Phase B. 발굴 파이프라인 walk-forward — ✅ 완료¶
- 15 시점 × 4 horizon = 64 측정 + baseline 1
- 결론: Q3 룰 16/16 시점 중 14건 음수 spread → S314 §5 옵션 B "룰 반전" 발동 조건 충족
- regime별 D+30 spread 평균: strong_down -14.73 / down -5.72 / flat -6.44 / up -19.44 / strong_up +0.96 / baseline -9.18
Phase C. 매크로 분석기 4년 walk-forward — ⏳ 계획¶
- C1 raw 시계열 통합 캐시 (A4+A5+A7)
- C2 발화 → KOSPI forward alpha 재측정
- C3 regime 5분할 spread 재집계
- C4 DXY 결손 해소 확인
- C5 한국 고객예탁금 4신호 spread 산출 (★ 신규)
Phase D. 차트 분석기 4년 walk-forward — ⏳ 계획¶
- 일봉 분석기 한정 (30분봉 OF 제외)
- 인벤토리 ★★ 신호(absorption_score_last, vp_up_down_amount_ratio_log, spring_count_20d) regime 안정성 측정
- 6 약세 t0 90%+ 종목 cover 확인 완료
Phase E. 통합 + 새 루틴 결정 — 🔄 진행 중 (S320~S325 완료)¶
- ✅ S319: Phase D + 옵션 3·4·5 완료 — Q3 반전 D+30 73% 양수, 옵션 4 corp 확장 후 alpha 회복
- ✅ S320: v1 단순 4도구 점수 모델 → 실패 (GO/PASS 부호 역전)
- ✅ S321: v2 hierarchical 4레이어 (L1 macro→L4 재료→L2 차트+OF→L3 퀀트) → PASS 정상화
- ✅ S322: v3 3도구 8개월 → S2_strict_3 채택 (acceleration+연속 confirmed)
- ✅ S323: v4 3도구 2.7년 확장 → transition > acceleration 발견, v3 결론 뒤집힘
- ✅ S324: v5 5도구 (RS 추가) → alpha +2.91% → +7.29% (2.5배), Sharpe 0.41 → 0.86
- ✅ S325: v6 6도구 (OF 추가) → MDD -36% → -24% (30% 개선)
- 🔄 E3: /discover 원자화 설계 + M1a 구현 완료 (S326, 2026-05-27)
- 설계서 v1→v2→v3 진화 (Input Package 사전조립 + Pydantic 16 클래스)
- schemas.py + 8개 atomic 에이전트 명세서 + build_d1_input.py reference builder + /discover 커맨드
- D1 builder T0=2026-04-14 검증 통과 (4블록 ★★)
- PM 방향 8개 확정: universe 다중 trigger / EXIT 추적형 / D9 신설 / discover 전용 신규 + report 벤치마크
- ⏳ E4: M1b/M1c + D9 신설 + D8 재설계 + trigger 모듈 (다음 세션, S327)
Output (현재까지)¶
코드 (신규)¶
scripts/backfill/macro_panel_4y.py(A4+A5)scripts/backfill/kofia_deposit_4y.py(A7 네이버 우회)scripts/backfill/normalize_deposit.py(A7 정규화)scripts/backfill/cftc_cot_4y.py(A3)scripts/backfill/build_ats_main_v2.py(A1)scripts/backfill/krx_derivatives_4y.py(A2)scripts/backfill/dart_quarterly_5y_plus.py(A8 DART 직접)scripts/quant/earnings/extract_metrics_from_dart.py(A8 매출 추출, Q4 YTD 수정)scripts/quant/earnings/ea_acceleration_dart.py(A8 EA 재산출)scripts/backtest/discovery_walkforward_run.py(B2+B3)- S326 M1a (2026-05-27):
scripts/discover/schemas.py(Pydantic 16 클래스)scripts/discover/builders/build_d1_input.py(reference, T0=2026-04-14 검증 통과).claude/agents/discover/{macro,chart,relative-strength,theme-leadership,orderflow,earnings-quality}-judge.md.claude/agents/discover/{portfolio-selector,position-monitor}.md.claude/commands/discover.md
데이터 (신규)¶
data/macro/panel_4y_daily.parquet(1,461×39)data/sentiment_kr/customer_deposit_normalized.parquet(2,400×10, 9.8년)data/cot/{legacy_combined,tff_financial}_4y.parquetdata/ats_main_v2.json(794종 100% 매핑)data/derivatives/historical/drvprod_dd_trd_4y.parquet(281,967행)data/dart_cache/{fs_quarterly_5y, quarterly_metrics}.parquetdata/backtest/e1/ea_panel_dart.parquet(EA YoY 4,709건)data/backtest/discovery_walkforward/{per_date_*, summary}.parquet
문서¶
docs/planning/2026-05-26_discovery_pipeline_walkforward_plan.md(전체 계획)docs/research/2026-05-26_discovery_walkforward_phase_a_b.md(Phase A+B 결과).claude/agents/EVIDENCE_REQUIRED.md(시스템 차원 검증 의무)docs/planning/2026-05-26_S326_discover_atomization.md(v3 설계서, 600줄+)docs/work_logs/2026-05-27_S326_discover_atomization_v1_impl.md(S326 work log)
에이전트 강화 (Evidence Required 섹션)¶
.claude/agents/postmarket/limitup-investigator.md.claude/agents/postmarket/discovery-detector.md.claude/agents/morning/material-grader.md.claude/agents/evening/material-grader.md.claude/agents/news/5axis-scorer.md
Decisions/Corrections¶
- 2026-05-26: PM "에이전트가 마음대로 원인 적는 게 아니라 검증 가능한 데이터/근거로" → 5개 핵심 에이전트에 Evidence Required 의무 주입 + 전역 EVIDENCE_REQUIRED.md
- 2026-05-26: PM "고객예탁금 가장 간편한 방법" → KOFIA OpenAPI/playwright 아닌 네이버 금융 페이지 스크래핑 (1분 안에 9.8년 수집)
- 2026-05-26: PM "매출 5분기 이상 수집 방법부터" → DART OpenAPI 직접 백필로 7년 28분기 확보, S312v2의 EA(YoY) 0건 한계 → 4,709건으로 극복
- 2026-05-26: Q3 룰 walk-forward 14/16 음수 → 룰 반전 결정 (S314 §5 옵션 B)
- 2026-05-26 (S320): PM "선행성 + 방향 파악 본질" → lead-lag 측정 모듈 추가 (review_leadlag.py)
- 2026-05-26 (S321): PM "단순히 종목 늘리지 마라 — 좋은 1-2종 정밀 / 기민 이동" → v3 EXIT 룰 검토 → 모두 알파 깎음 검증
- 2026-05-26 (S322 v3→v4): "8개월 강세장 편향" → 2.7년 확장 시 acceleration_confirmed (v3 채택) → transition_to_imb_up_confirmed (v4 채택)로 결론 뒤집힘. 정보 비대칭 우위가 alpha 본질
- 2026-05-26 (S324 v5): PM "테마 RS + 종목 RS + 차트 + 퀀트 + 매크로로 가장 강한 종목" → RS 2축 추가 → alpha 2.5배 증폭
- 2026-05-26 (S325 v6): PM "OF 가용 기간(2026-02-13~) 재검증" → OF 6도구 = alpha 동등, MDD 30% 개선 ★ (위험 관리 본질)
- 2026-05-26: PM "재료 도구는 일단 제외 (ISSUE_LOG 구간 한계)" → 3도구(v3/v4) 기반, 5/6도구는 RS+OF 추가
- 2026-05-27 (S326 v1): PM "입력 데이터 박제 X, 도구 줘라" → 도구 카탈로그 위임
- 2026-05-27 (S326 v2): PM "데이터 체계적 주입" → Input Package 사전조립 + Pydantic 16 클래스 + 하네스가 builder 호출 후 에이전트 전달
- 2026-05-27 (S326 v3 PM 8개 결정): universe 시총200 폐기 → 다중 trigger / EXIT 자동 X (시스템=추적+보고+자기검증, 매수=PM) / D9 신설 / theme_rs 재사용 / discover 전용 신규 구현 + report 에이전트 패턴 벤치마크
의사결정 로그¶
| 일자 | 결정 | 사유 |
|---|---|---|
| 2026-05-26 | KOFIA = 네이버 우회 | OpenAPI 승인 1~3일 vs 즉시. 9.8년 1분 |
| 2026-05-26 | 매출 DART 직접 | FnGuide 5분기 → DART 28분기 (EA YoY 측정 가능) |
| 2026-05-26 | Q3 룰 반전 | walk-forward 14/16 음수, regime 일관 |
| 2026-05-26 | Phase A 6개 전부 완료 | C/D/E 진행 가능 상태 |
다음 세션 진입점 (S327)¶
S326 완료 (2026-05-27): /discover 원자화 M1a 완료 (schemas + 8 에이전트 + reference builder + 커맨드) PM 방향 확정 8개: universe 다중 trigger / EXIT 추적형 / D9 신설 / theme_rs 재사용 / discover 전용 신규 + report 벤치마크
S327 진입 순서:
1. 벤치마크 학습 — postmarket/{market-narrator, leader-opportunity, signal-scorecard} 명세서 정독
2. D9 신설 — .claude/agents/discover/system-self-check.md + schemas D9 추가
3. D8 재설계 — EXIT 트리거 → 추적 리포트 + 일일 환경 보고
4. 다중 trigger 모듈 — scripts/discover/triggers/{theme_strong, volume_top, volume_spike, news_material, report_carryin}.py
5. M1b 나머지 builder 7개 (D2~D8) — build_d1_input.py 패턴
6. M1c indicator 모듈 8개 (sim_v6 + quant/themes 이관)
7. 설계서 v4 — trigger 다중 + D9 + D8 추적형 반영
8. 데이터 백필 — derivatives_with_features 6주 + cnn_fng + kr_10y_chg_z