S317 — 모듈 단독 점검: 방향 일치율 + 선행/후행 (k-fold)¶
작성: 2026-05-26 (Tue) 02:00 대상: 차트 8개 + OF 일봉/30분봉 + 3-Laws + 매크로 7개 universe: 거래대금 상위 100종 (30분봉 + 일봉 가용) 기간: 2026-02-13 ~ 2026-04-24 (30분봉 가용 + D+20 forward 측정 가능) 샘플: 5일 간격 9시점 × 100종 = 891 (skip 0) k-fold: 시간 5분할 (fold 0~3 = 99씩, fold 4 = 마지막 5시점 495)
측정 지표: 1. 방향 일치율 (sign hit rate): 모듈이 bullish/bearish 발화 시, 해당 종목의 forward D+5/10/20 종가 부호가 신호 방향과 일치한 비율 2. 선행성 (median first swing days): 신호 발화 → 첫 ±3% swing까지 거래일 수 (작을수록 즉시 효과) 3. fold별 D+10 hit rate: 시간 안정성 (4개 fold 사이 편차 큼 = 시기 의존)
baseline: - 종목 sample 전체 UP비율: D+5 0.535 / D+10 0.577 / D+20 0.617 - KOSPI 발화일 UP비율: D+5 0.600 / D+10 0.725 / D+20 0.725 (강세장)
1. 차트 모듈 (종목 단위 forward, n=891)¶
| 모듈 | n_b | n_s | bull_d5 | bull_d10 | bull_d20 | bear_d5 | bear_d10 | bear_d20 | sw_b | sw_s |
|---|---|---|---|---|---|---|---|---|---|---|
| VSA last_signal_kind | 57 | 108 | 0.561 | 0.614 | 0.696 | 0.486 | 0.374 | 0.370 | 2 | 2 |
| VSA strong (strength≥3) | 1 | 63 | n/a | n/a | n/a | 0.548 | 0.323 | 0.279 | 1 | 2 |
| VSA 20d net bias | 322 | 261 | 0.517 | 0.583 | 0.593 | 0.477 | 0.427 | 0.347 | 2 | 2 |
| Wyckoff phase | 384 | 445 | 0.543 | 0.588 | 0.643 | 0.474 | 0.444 | 0.424 | 2 | 2 |
| Wyckoff event_bias >0.3/<-0.3 | 15 | 145 | 0.600 | 0.667 | 0.571 | 0.382 | 0.319 | 0.286 | 2 | 2 |
| Wyckoff event SC/Spring/SOS vs BC/UT/SOW | 0 | 640 | — | — | — | 0.465 | 0.409 | 0.378 | — | 2 |
| VolumeProfile va_position -1/+1 | 44 | 482 | 0.524 | 0.442 | 0.513 | 0.496 | 0.442 | 0.410 | 3 | 2 |
| VolumeProfile asym_20d >0.3/<-0.3 | 246 | 28 | 0.514 | 0.539 | 0.542 | 0.393 | 0.370 | 0.160 | 2 | 2 |
| OF daily cvd_z+div | 4 | 82 | 0.250 | 0.250 | 0.500 | 0.256 | 0.247 | 0.247 | 1 | 3 |
| OF daily cvd_z >1/<-1 | 347 | 81 | 0.477 | 0.526 | 0.528 | 0.247 | 0.237 | 0.250 | 2 | 3 |
| OF daily buy-sell pres | 115 | 206 | 0.504 | 0.478 | 0.482 | 0.448 | 0.379 | 0.355 | 2 | 2 |
| OF 30min cvd_z >1/<-1 | 105 | 151 | 0.485 | 0.462 | 0.474 | 0.520 | 0.351 | 0.250 | 2 | 2 |
| OF 30min buy-sell pres | 46 | 342 | 0.587 | 0.467 | 0.615 | 0.491 | 0.375 | 0.329 | 1 | 2 |
| 3-Laws SD ratio >1.2/<0.8 | 0 | 891 | — | — | — | 0.465 | 0.423 | 0.383 | — | 2 |
핵심 (baseline D+20 UP 0.617 대비):
- VSA last_signal_kind: bull hit D+20 0.696 (+7.9pp vs baseline) ★, bear hit D+20 0.370 (= 1 - 0.630, 즉 bearish 발화 후 실제로 하락한 비율 37%). bull 신호가 bear 신호보다 강함.
- Wyckoff event_bias: bull n=15 표본 적지만 D+5/10 0.6/0.667 → swing 2일 (빠른 효과). bear는 D+20 0.286으로 baseline UP대비 underperform (= 회피 가치)
- OF daily cvd_z+div (받침): n=4 너무 적음
- OF daily cvd_z >+1 단독: bull D+20 0.528 (≈ baseline), bear D+20 0.250 — 강한 SELL 신호 (n=81)
- OF 30min cvd_z: bull D+10 0.462 (baseline 0.577 미달), bear D+10 0.351 — bull은 약하나 bear는 적당 (n=151)
- OF 30min buy-sell pres: bull D+20 0.615 (= baseline), bear D+20 0.329 ★ — bear가 좋음
- VolumeProfile asym_20d <-0.3: n=28 작지만 bear D+20 0.160 → 84% 실제 하락 ★★ (강한 회피)
- 3-Laws SD<0.8: 거의 모든 sample이 <0.8 (n=891 = 거의 전부) → 의미 없음 (임계 잘못)
- 공통: 선행성 = 첫 ±3% swing 2~3일 (모듈 거의 동일, 차이 없음)
차트 모듈 fold별 D+10 안정성 (편차)¶
| 모듈 | bull fold 편차 | bear fold 편차 | 안정성 |
|---|---|---|---|
| VSA last_signal_kind | f0 0.667 / f3 0.167 / f4 0.743 | f0 0.647 / f4 0.234 | 불안정 (fold 0~3 vs fold 4 역전) |
| Wyckoff phase | f3 0.163 / f4 0.759 | f3 0.717 / f4 0.301 | 불안정 |
| OF daily cvd_z >1 | f0 0.226 / f4 0.681 | f1 0.0 / f2 0.667 | 매우 불안정 |
| OF 30min buy-sell pres | f0 0.2 / f4 0.786 | f0 0.593 / f4 0.265 | 불안정 |
해석: fold 4(마지막 5시점, 2026-04-02~04-23, KOSPI 상승 구간)에 표본이 몰리면서 fold 4 bull hit가 부풀고 bear hit가 떨어진다. 모든 차트 모듈이 시장 방향에 강하게 흔들림 → 모듈 자체의 absolute predictive power는 약하고, 시장 환경에 종속된다는 증거.
2. 매크로 모듈 (KOSPI 단위 forward, n=126 발화)¶
KOSPI baseline UP비율: D+5 0.600 / D+10 0.725 / D+20 0.725
| 신호 | n_HIGH (bull) | n_LOW (bear) | bull_d5 | bull_d10 | bull_d20 | bear_d5 | bear_d10 | bear_d20 | sw_b | sw_s |
|---|---|---|---|---|---|---|---|---|---|---|
| basis_z | 19 | 21 | 0.684 | 0.789 | 0.842 | 0.476 | 0.333 | 0.381 | 3 | 2 |
| fut_oi_chg_z | 11 | 25 | 0.727 | 0.545 | 0.909 | 0.360 | 0.240 | 0.120 | 5 | 5 |
| kr_10y_chg_z | 14 | 23 | 0.786 | 0.786 | 0.786 | 0.304 | 0.174 | 0.174 | 3 | 4 |
| max_pain_dist_z | 11 | 0 | 0.727 | 0.636 | 0.909 | — | — | — | 3 | — |
| vkospi_fut_z | 0 | 2 | — | — | — | 0.000 | 0.000 | 0.500 | — | 3 |
| pcr_oi_z | 0 | 0 | — | — | — | — | — | — | — | — |
| vkospi_proxy_z | 0 | 0 | — | — | — | — | — | — | — | — |
핵심 (baseline D+20 UP 0.725 대비):
- basis_z: bull D+20 0.842 (+11.7pp ★), bear D+20 0.381 (= 61.9% 하락, +9.4pp 하방 우위) — 양방향 모두 검증 ★★
- fut_oi_chg_z: bull D+20 0.909 (n=11), bear D+20 0.120 ★★ (88% 실제 하락, 최강 SELL 신호) — 양방향 강함
- kr_10y_chg_z: bull D+20 0.786 (= baseline 수준), bear D+20 0.174 ★★ (83% 실제 하락) — bear 강함, bull은 baseline
- max_pain: bull n=11 D+20 0.909 (n 적음 주의), bear n=0
- vkospi_fut_z, pcr_oi_z, vkospi_proxy_z: 발화 자체 ≤2건 — 운영 불가
선행성 (first swing days): - basis_z bull 3일 / bear 2일 — 가장 빠름 - fut_oi_chg_z bull 5일 / bear 5일 — 느림 - kr_10y_chg_z bull 3일 / bear 4일
매크로 fold별 D+10 안정성¶
- basis_z bull: f0~f3 모두 0.75~1.0, f4만 0.5 → fold 0~3 안정 ★, fold 4만 약화 (검증 기간 마지막)
- basis_z bear: f0/f1 0.5, f2 0.75, f3/f4 0.0 → 불안정 (특히 후반 fold에서 KOSPI 안 떨어짐)
- fut_oi_chg_z bull: f0/f3 1.0, f1 0.333, f2 0.0 → 들쭉날쭉
- fut_oi_chg_z bear: f0 0.167, f1 0.1, f2 1.0(n=1), f3 0.6 → 일관 약함 (대부분 fold에서 baseline 미달)
→ 매크로 신호는 종목 차트보다 일관성↑ (특히 basis_z bull) 하지만 fold 4(검증 기간 후반) 약화는 양쪽 공통.
3. 모듈 종합 순위¶
3-1. bull 신호 정확도 (D+20 hit rate, 표본 ≥10)¶
| 순위 | 모듈 | bull D+20 | baseline 대비 | 표본 |
|---|---|---|---|---|
| 1 | fut_oi_chg_z (HIGH) | 0.909 | +18.4pp | 11 |
| 1 | max_pain_dist_z (HIGH) | 0.909 | +18.4pp | 11 |
| 3 | basis_z (HIGH) | 0.842 | +11.7pp | 19 |
| 4 | kr_10y_chg_z (HIGH) | 0.786 | +6.1pp | 14 |
| 5 | VSA last_signal_kind (bullish) | 0.696 | +7.9pp | 57 |
| 6 | Wyckoff phase ≥1 | 0.643 | +2.6pp | 384 |
| 7 | OF 30min buy-sell pres >0.3 | 0.615 | -0.2pp | 46 |
| 8 | Wyckoff event_bias >0.3 | 0.571 | -4.6pp | 15 |
| 9 | OF daily cvd_z >+1 | 0.528 | -8.9pp | 347 |
| 10 | VolumeProfile asym >0.3 | 0.542 | -7.5pp | 246 |
3-2. bear 신호 정확도 (D+20 hit rate = 실제 하락 비율, 표본 ≥10)¶
| 순위 | 모듈 | bear D+20 | baseline 대비 | 표본 |
|---|---|---|---|---|
| 1 | fut_oi_chg_z (LOW) | 0.120 | -50.5pp (= 88% 하락) | 25 |
| 2 | VolumeProfile asym <-0.3 | 0.160 | -45.7pp (= 84% 하락) | 28 |
| 3 | kr_10y_chg_z (LOW) | 0.174 | -55.1pp (= 83% 하락) | 23 |
| 4 | OF daily cvd_z+div | 0.247 | -37.0pp | 82 |
| 5 | OF daily cvd_z <-1 | 0.250 | -36.7pp | 81 |
| 5 | OF 30min cvd_z <-1 | 0.250 | -36.7pp | 151 |
| 7 | VSA strong bearish | 0.279 | -33.8pp | 63 |
| 8 | Wyckoff event_bias <-0.3 | 0.286 | -33.1pp | 145 |
| 9 | OF 30min buy-sell <-0.3 | 0.329 | -28.8pp | 342 |
| 10 | OF daily buy-sell <-0.3 | 0.355 | -26.2pp | 206 |
| 11 | VSA last_signal_kind | 0.370 | -24.7pp | 108 |
| 12 | Wyckoff SC/Spring vs BC/UT | 0.378 | -23.9pp | 640 |
| 13 | 3-Laws SD <0.8 | 0.383 | -23.4pp | 891 (전부) |
bear 쪽이 bull보다 신호력 강함 — baseline이 양수(D+20 baseline UP 0.617)이기 때문에 신호 없을 때 평균 ~62% 상승. 따라서 bear 발화 후 하락 비율 50% 이상이면 "역방향" 통과. bear 신호는 회피 룰로 모두 활용 가치 있음.
3-3. 선행성 (median first ±3% swing days, bull/bear 평균)¶
| 모듈 | 일수 |
|---|---|
| 종목 차트 (전 모듈) | 2~3일 |
| basis_z, kr_10y | 2~3일 |
| fut_oi_chg_z | 5일 |
| max_pain | 3일 |
| vkospi | 3일 |
→ 모듈 간 선행성 차이 거의 없음. 점검 기간이 짧고(67거래일) 변동성이 커서 swing 도달이 모두 빠름. 선행성을 모듈 선택 기준으로 쓰기 어려움.
4. 검증 기간 한계 (편향 점검)¶
- 기간 짧음 (67거래일): fold 4에 5시점(전체 9시점 중 56%)이 몰림 → fold 4가 결과를 좌우
- 시장 환경: 2026-02-13 KOSPI 5,580 → 04-24 5,950 (≈ +6.6% 상승 구간) + 03-09 swing low + 03-18 high
- fold 0~3 (02-25 ~ 03-26): KOSPI 변동성 큰 구간 (3월 swing 3건 모두 포함)
- fold 4 (04-02 ~ 04-23): 추세 상승 후반
- 결과: bull 신호가 fold 4에서 부풀고, bear 신호가 fold 4에서 약화 — 시장 방향 일치 효과
- 암시: 이 점검은 강세장 6주 + swing 3건만 본 것. 하락장/횡보장에서 같은 모듈이 같은 성과를 낼지는 별도 검증 필요.
5. PM 운영 권고¶
진입 신호 (bull, 표본 + hit rate 종합)¶
- ★★ 매크로 basis_z HIGH (D+20 0.842, n=19, fold 0~3 안정) — 최우선
- ★ Wyckoff phase ≥1 + VSA last_signal_kind bullish 조합 (개별 D+20 0.64~0.70, 표본 380+/57)
- 회피: OF daily cvd_z 단독 bull (D+20 0.528, baseline 미달)
회피 신호 (bear)¶
- ★★ fut_oi_chg_z LOW (D+20 0.120, 88% 하락, n=25)
- ★★ VolumeProfile vol_asym <-0.3 (D+20 0.160, 84% 하락, n=28)
- ★★ kr_10y_chg_z LOW (D+20 0.174, n=23)
- ★ OF daily cvd_z <-1 (D+20 0.250, n=81)
- 차트 bear 신호는 baseline(0.617) 대비 모두 회피 가치 있음 — 0.37~0.42 (33~38% UP) = 모두 underperform
사용 보류¶
- pcr_oi_z, vkospi_proxy_z — 발화 0건 (데이터/임계 문제)
- vkospi_fut_z — 발화 2건
- 3-Laws SD ratio — 임계 잘못 (891 전부 < 0.8)
- VSA strong bull — 표본 1건
선행성 결론¶
- 종목 단위 모듈 모두 2~3일 내 ±3% swing 도달 (강세장+변동성 큰 구간이라 빠름)
- 모듈별 선행성 우위 판단 보류 — 더 긴 기간(약세장 포함)에서 재측정 필요
6. 한계 + 다음 단계¶
- 표본 규모: 차트 891 sample, 매크로 126 발화 — fold당 표본이 모듈별로 ≤30. 통계 유의성 검증(DSR/PBO) 미실행.
- fold 4 편중: 시간 5분할이 시점 9개에서 균등 분할 안 됨. 다음에는 fold size 균등 분할(시점 9 = 3 fold × 3 시점) 또는 시점 더 늘림.
- 하락장 미포함: 검증 기간 전체가 강상승장(YTD +35%). 2024/2025 약상승/조정 구간 walk-forward 필요.
- 첫 swing 정의: ±3% 기준은 변동성 큰 종목에선 1~2일에 자주 닿음. ±5%/±7% 분리 측정 권장.
- 모듈 조합: 단독 점검만. bull+bear 합의 시 정확도 향상 가능성(S307big의 5-trigger BUY_STRONG 사례) 미측정.
7. 산출물¶
- 코드:
scripts/backtest/s317_module_audit.py(raw 수집) - 코드:
scripts/backtest/s317_macro_audit.py(매크로 raw 수집) - 코드:
scripts/backtest/s317_module_aggregate.py(집계) - 데이터:
data/backtest/s317_audit/samples.parquet(891 × 28 cols) - 데이터:
data/backtest/s317_audit/macro_events.parquet(126 발화) - 데이터:
data/backtest/s317_audit/audit_report.json(집계 결과)