콘텐츠로 이동

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.parquet
  • data/ats_main_v2.json (794종 100% 매핑)
  • data/derivatives/historical/drvprod_dd_trd_4y.parquet (281,967행)
  • data/dart_cache/{fs_quarterly_5y, quarterly_metrics}.parquet
  • data/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