Discovery Pipeline Walk-Forward — Phase A 백필 + Phase B 결과¶
작성: 2026-05-26 (Tue) 12:00
선행: docs/planning/2026-05-26_discovery_pipeline_walkforward_plan.md
결론 한 줄: Q3 룰("60d 강 + 5d 둔화 = 빠질 / 5d 가속 = 갈")이 모든 5 regime에서 일관되게 역작동. 평균 D+30 spread -6%pp ~ -19%pp. 룰 자체 폐기 또는 반전 필요 (S314 §5 옵션 B 발동).
1. Phase A 백필 결과¶
| 작업 | 산출 | 상태 |
|---|---|---|
| A4+A5 매크로 panel | data/macro/panel_4y_daily.parquet (1,461일 × 39열, 0.26MB) — yf 28티커 + FRED 11시리즈 통합 |
✅ 완료 |
| A7 고객예탁금 | 네이버 금융 sise_deposit.naver 우회 — 가장 간편한 경로 성공. raw 120페이지 = 2,400행, normalized 2,400행 × 10지표 (deposit_balance/credit_balance/fund_eq/mix/bond + 각 chg). 2016-08-05 ~ 2026-05-21 (9.8년) |
✅ 완료 |
| A3 CFTC COT | data/cot/legacy_combined_4y.parquet (56,517행 × 130열) + tff_financial_4y.parquet (11,347행 × 88열) |
✅ 완료 |
| A1 ats_main_v2 | data/ats_main_v2.json (354종 → 100% 보강, industry: 라벨 + primary_theme) |
✅ 완료 |
| A2 KRX 파생 | data/derivatives/historical/drvprod_dd_trd_4y.parquet — 974 거래일 × 281,967행 (7.3MB), errors 0 |
✅ 완료 |
1-1. 매크로 panel 결손율 (top)¶
- fred_SLOOS_CI: 91.2% (분기성, 정상)
- fred_HY_OAS: 24.7% (2023-05-23부터, 인벤토리 3년 한계 일치)
- 나머지 모두 < 1%
1-2. ats_main_v2 보강 분포¶
- 결손 354종 모두 industry 보유 → 100% 보강 성공
- industry 라벨 top: 제약 47 / 생물공학 21 / 건강관리장비 17 / IT서비스 15 / 화학 15
- universe 81 결손 19종(삼성바이오·셀트리온·HMM·LG 등) 전부 매핑됨
2. Phase B Walk-Forward 결과 (15 시점 + baseline)¶
15 시점 × 4 horizon = 60 측정 (+ baseline 4 = 64 rows). 결과 summary parquet:
data/backtest/discovery_walkforward/summary.parquet
2-1. regime별 D+30 spread (in_leader - out_leader) 평균¶
| regime | n_시점 | D+30 spread 평균 | 판정 |
|---|---|---|---|
| strong_down | 1 | -14.73pp | Q3 역작동 |
| down | 2 | -5.72pp | Q3 역작동 |
| flat | 2 | -6.44pp | Q3 역작동 |
| up | 3 | -19.44pp | Q3 역작동 ★ |
| strong_up | 2 | +0.96pp | 중립 |
| baseline (2026-04-06) | 1 | -9.18pp | S314 -33.27pp보다 약하나 일치 방향 |
모든 regime에서 spread ≤ 0 — Q3 가설 "빠질 후보가 더 약하고 갈 후보가 더 강함"의 정반대.
2-2. 시점별 상세 (D+30 spread)¶
| regime | t0 | in n | out n | in α | out α | spread |
|---|---|---|---|---|---|---|
| strong_down | 2022-07-11 | 5 | 0 | -5.75 | NaN | n/a |
| strong_down | 2022-07-05 | 5 | 0 | +3.62 | NaN | n/a |
| strong_down | 2022-06-21 | 4 | 2 | -7.81 | +6.92 | -14.73 |
| down | 2022-08-02 | 4 | 0 | +22.21 | NaN | n/a |
| down | 2024-12-30 | 5 | 4 | +30.30 | +34.96 | -4.66 |
| down | 2022-04-21 | 5 | 3 | -8.14 | -1.37 | -6.77 |
| flat | 2025-02-06 | 5 | 2 | -13.80 | +1.48 | -15.28 |
| flat | 2023-12-12 | 5 | 0 | +3.45 | NaN | n/a |
| flat | 2024-06-05 | 4 | 5 | +5.36 | +2.95 | +2.40 |
| up | 2023-04-06 | 5 | 4 | +5.77 | +0.76 | +5.01 (유일 +) |
| up | 2024-02-22 | 5 | 4 | +12.08 | +20.79 | -8.70 |
| up | 2024-04-16 | 4 | 1 | +4.88 | +59.50 | -54.61 ★ 극단 |
| strong_up | 2025-12-17 | 4 | 4 | +28.56 | +11.47 | +17.09 (유일 강 +) |
| strong_up | 2025-07-03 | 2 | 4 | -8.51 | +6.66 | -15.16 |
| strong_up | 2026-04-22 | 3 | 3 | NaN | NaN | n/a (forward 결손) |
| baseline | 2026-04-06 | 3 | 4 | -11.45 | -2.27 | -9.18 |
2-3. 핵심 발견¶
-
Q3 룰 역작동이 1시점 노이즈 아닌 구조적 — 16 시점 중 spread > 0인 케이스는 2건만 (up 2023-04-06 +5pp, strong_up 2025-12-17 +17pp). 13/16이 음수.
-
out 후보(COOLING, 강세 둔화) leader가 in 후보(RE_ACCEL, 가속)보다 forward 강세 우위 — "고점이 더 간다"는 강한 모멘텀 지속 신호. 평균회귀 가정이 한국 시장에서 어긋남.
-
극단 사례 (up 2024-04-16): out leader 1종(LS ELECTRIC 010120)의 D+30 +59.5%pp 폭등이 spread -54.6pp 만듦. 단일 종목 영향 큼 — leader 추출이 spread 진폭을 키우는 특성(S314에서 이미 확인).
-
strong_down regime의 leader 추출 표본 부족 — COOLING 테마 자체가 적어 out_leader 0~2종. 데이터 한계로 신호 안정성 측정 부족.
-
baseline (2026-04-06) -9.18pp ≠ S314 보고 -33.27pp. 차이 원인: ats_main_v2 적용으로 universe 확장 (24종 NaN 종목 매핑 추가) + leader 추출 시 universe 81 제약 없이 ohlcv 전체 사용. 방향 동일, 절댓값 완화.
3. 해석 + 다음 단계 결정¶
3-1. Q3 룰 폐기/반전 결정¶
S314 §5 옵션 B "룰 반전" 발동 조건 충족 (모든 regime 음수 spread). 새 룰 후보:
반전 Q3: rs_60d 상위 + rs_5d 강세 유지 (HOT) = 갈 후보 / rs_60d 중간 + rs_5d 가속 (RE_ACCEL) = 빠질 후보
본 walk-forward 결과로 반전 룰의 spread를 역산하면 +6~19pp 수준 예상 → 운영 가치 있음.
3-2. leader 추출 도구적 가치는 유지¶
S314 §4-3 결론과 일치: "leader 추출이 spread 진폭을 키운다" — 본 walk-forward에서도 단일 종목(LS ELECTRIC)으로 spread -54pp 만들 만큼 압축 효과 확인. 부품으로는 유효.
3-3. 새 루틴 골격 영향¶
기존 작업 계획 §3 Phase E 후보 7단계 중 Q3 selection 단계는 반전 필요:
[기존] theme 스캔 → COOLING/RE_ACCEL 분류 → 갈 후보 진입
[수정] theme 스캔 → HOT 분류 → HOT leader 진입 (강세 지속 베팅)
+ RE_ACCEL/COOLING은 회피 또는 short watchlist
4. 미해결 작업¶
| 항목 | 상태 | 결정 필요 |
|---|---|---|
| A7 고객예탁금 | ✅ 완료 (네이버 금융 우회, 9.8년 × 10지표) | Phase C 매크로 walk-forward 즉시 통합 가능 |
| A2 KRX 4년 | ✅ 완료 (974일 × 281,967행) | Phase C 매크로 walk-forward 입력 즉시 활용 가능 |
| Phase C 매크로 walk-forward | 미시작. panel_4y_daily.parquet 확보됨 | 즉시 진행 가능 |
| Phase D 차트 walk-forward | 미시작. 일봉 분석기 + 247종 OHLCV 확보됨 | 즉시 진행 가능 (S317 v2 67일 → 4년 확장) |
| Phase E 새 루틴 설계 | Phase C/D 결과 + Q3 반전 룰 검증 후 | 데이터 추가 측정 후 |
5. 산출물¶
5-1. 코드 (신규)¶
scripts/backfill/macro_panel_4y.py(A4+A5)scripts/backfill/kofia_deposit_4y.py(A7, 네이버 금융 우회)scripts/backfill/normalize_deposit.py(raw → 정규화 10지표)scripts/backfill/cftc_cot_4y.py(A3)scripts/backfill/build_ats_main_v2.py(A1)scripts/backfill/krx_derivatives_4y.py(A2)scripts/backtest/discovery_walkforward_run.py(B2+B3)
5-2. 데이터¶
data/macro/panel_4y_daily.parquet(39 신호 × 1,461일)data/cot/legacy_combined_4y.parquet(56,517행)data/cot/tff_financial_4y.parquet(11,347행)data/ats_main_v2.json(794종, 354종 보강)data/derivatives/historical/drvprod_dd_trd_4y.parquet(974일 × 281,967행 × 5+컬럼, 4년)data/backtest/discovery_walkforward/per_date_*.json(16 시점)data/backtest/discovery_walkforward/summary.parquet(64행)data/sentiment_kr/customer_deposit_4y.parquet(raw, 2,400행)data/sentiment_kr/customer_deposit_normalized.parquet(정규화 10지표 × 2,400일, 9.8년, NaN 0%)
5-3. 문서¶
- 본 파일
6. PM 답변 필요 항목 (작업 계획 §10 + 추가)¶
| # | 결정 | 옵션 |
|---|---|---|
| 1 | Q3 룰 반전 적용 | (a) 즉시 반전 룰로 변경 후 재측정 / (b) 추가 시점 더 측정 후 결정 / (c) Q3 룰 폐기, 다른 신호로 |
| 2 | ~~A7 KOFIA 접근~~ | 해결됨 — 네이버 금융 우회로 9.8년 수집 완료 |
| 3 | Phase C/D 즉시 진행 여부 | (a) 즉시 (Q3 결과와 독립) / (b) Q3 결정 후 |
| 4 | 새 루틴 분리 시점 | (a) Phase C/D 완료 후 / (b) 본 Phase B만으로도 룰 반전 적용해 즉시 분리 |