콘텐츠로 이동

S317 v2 — 전 모듈 전 지표 단독 점검

작성: 2026-05-26 (Tue) 02:35 range: 2026-02-13 ~ 2026-04-24 (30분봉 가용 + D+20 forward 측정) universe: 거래대금 상위 100종 (30분봉 + 일봉 가용) 샘플: 9시점 × 100종 = 891 (skip 0) fold: 시간 3분할 균등 (각 297)

v1 대비 추가: - 차트 60개 룰 (v1 14개 → 60개) — Layer A 14필드 / VSA 11 / Wyckoff 19 / VolumeProfile 19 / OF daily 13 / OF 30m 13 / 3-Laws 9 + Bulkowski/AMT trigger + retracement - 매크로 30개 신호 (v1 7개 → 31개) — derivatives 37컬럼 중 기존 z 8개 + 신규 raw 컬럼 z화 22개

baseline: - 차트 종목 UP비율: D+5 0.535 / D+10 0.577 / D+20 0.617 - 매크로 KOSPI 발화일 UP비율: D+5 0.709 / D+10 0.719 / D+20 0.811 (강세 후반에 매크로 발화 집중)

지표: 신호 발화 → forward D+5/10/20 부호 일치율 + 첫 ±3%/±5% swing까지 거래일 + fold 3분할 안정성


1. 차트 모듈 (n=891, baseline D+20 0.617)

1-1. Layer A (12지표)

n_b n_s b_d5 b_d10 b_d20 s_d5 s_d10 s_d20 sw3_b sw3_s
range_pos_52w 상위20%/하위20% 891 0 0.535 0.577 0.617 2
high_proximity 상위20%/하위20% 616 0 0.522 0.555 0.580 2
price_zscore_20d >1/<-1 303 102 0.493 0.543 0.555 0.275 0.250 0.293 2 2
drawdown_60d shallow/deep (>-5%/<-20%) 102 788 0.412 0.485 0.554 0.450 0.412 0.376 1 2
rvol_20d high/low (>1.5/<0.5) 119 148 0.521 0.605 0.609 0.622 0.541 0.403 2 2
vol_zscore 131 143 0.443 0.534 0.522 0.607 0.536 0.367 1 2
cmf_20d >0.1/<-0.1 147 367 0.544 0.514 0.500 0.471 0.397 0.345 2 2
obv_slope_z 0 0
close_pos 상단/하단 (>0.7/<0.3) 139 377 0.526 0.460 0.469 0.430 0.295 0.247 2 2
err_zscore 126 103 0.468 0.500 0.348 0.451 0.422 0.357 2 2
rotation_factor_20 (>5/<-5) 101 15 0.505 0.525 0.542 0.333 0.467 0.455 2 2
ad_line_slope_z 0 3 0.000 0.333 0.667 4

핵심: - close_pos 하단(<0.3) bear D+20 0.247 ★ (75% 실제 하락) - price_zscore_20d <-1 bear D+20 0.293 ★ (71% 하락) - cmf_20d <-0.1 bear D+20 0.345 (66% 하락) - err_zscore >+1 bull D+20 0.348 ← 역방향! (Effort Up no Result = 지친 상승) - obv_slope_z, ad_line_slope_z = 발화 0~3건 (임계 잘못 또는 데이터 결손)

1-2. VSA (8신호 + Spring/Upthrust)

n_b n_s b_d5 b_d10 b_d20 s_d5 s_d10 s_d20
last_signal_kind bullish/bearish 57 108 0.561 0.614 0.696 0.486 0.374 0.370
strong (strength≥3) 1 63 n/a n/a n/a 0.548 0.323 0.279
last_signal_id SC/Spring/SV vs BC/UT/EUR 3 87 0.667 0.667 1.000 (n=3) 0.477 0.337 0.283
net_bias_20d ERR
spring_count_20d > 0 / upthrust_count > 0 197 512 0.571 0.628 0.707 0.491 0.428 0.403
spring recent(age≤3) / upthrust recent 746 574 0.536 0.573 0.604 0.455 0.419 0.392
bullish_strength_sum > bearish 143 112 0.497 0.542 0.577 0.396 0.366 0.277

핵심: - spring_count_20d > 0 bull D+20 0.707 (+9.0pp, n=197) ★★ - bullish_strength_sum 우위 bear D+20 0.277 (72% 하락) - VSA strong (strength≥3) bull n=1 — 운영 불가 - net_bias 컬럼 누락 — vsa_signals 산출 dict의 key 명 확인 필요

1-3. Wyckoff (4국면 + 11이벤트)

n_b n_s b_d5 b_d10 b_d20 s_d5 s_d10 s_d20
phase ACC/MARKUP vs DIST/MARKDOWN 384 445 0.543 0.588 0.643 0.474 0.444 0.424
phase_confidence>0.6 + 방향 95 232 0.484 0.521 0.512 0.440 0.424 0.393
net_event_bias >0.3/<-0.3 15 145 0.600 0.667 0.571 0.382 0.319 0.286
last_event SC/Spring/SOS vs BC/UT/SOW 90 640 0.556 0.556 0.613 0.465 0.409 0.378
spring_count>0 / upthrust_count>0 0 454 0.435 0.375 0.362
sos+lps vs sow+lpsy count 0 0
events_acc>dist+1 (60d) 10 79 0.600 0.700 0.556 0.372 0.321 0.318

핵심: - net_event_bias bear D+20 0.286 (72% 하락, n=145) - spring_count_60d = 모든 발화 0 (저수지에 spring 발현 못함 — 강세장 70일 동안 매집 신호 부재 정상)

1-4. Volume Profile (POC/VA + Overhang + Rotation)

n_b n_s b_d20 s_d20 핵심
va_position below_val/above_vah 44 482 0.513 0.411
poc_dist_atr >+2/<-2 594 71 0.615 0.344 bear ★
va_width 좁음<1/넓음>3 0 782 0.383 bear
volume_asymmetry_20d >0.3/<-0.3 246 28 0.542 0.160 ★★ bear 84% 하락
up_down_amount_ratio_log >0.3/<-0.3 194 19 0.564 0.062 ★★ bear 94% 하락
in_lvn / in_value_area 12 365 0.818 (n=12) 0.336 bull 강함 (표본 적음)
poc_migration_5d_atr >+0.5/<-0.5 76 32 0.606 0.310 bear
overhang_above_current_pct <0.1/>0.4 291 217 0.533 0.347
overhang_below_current_pct >0.4/<0.1 769 41 0.616 0.528 bull = baseline
rotation_factor_20 >5/<-5 299 114 0.592 0.294 bear

핵심: - up_down_amount_ratio_log <-0.3 bear D+20 0.062 (94% 하락, n=19) ★★ — 최강 회피 - volume_asymmetry_20d <-0.3 bear D+20 0.160 (84% 하락, n=28) ★★ - rotation_factor_20 <-5 bear D+20 0.294 (71% 하락, n=114) - in_lvn bull D+20 0.818 (82%, n=12) — 표본 적지만 LVN 통과 후 추세 가속

1-5. OF Daily (13지표)

n_b n_s b_d20 s_d20 핵심
cvd_zscore >+1/<-1 347 81 0.528 0.250 bear 75% 하락
cvd_slope_z 0 0 임계 잘못 (전부 0?)
cvd_price_divergence -1/+1 16 2 0.625 0.000(n=2) bull n=16 D+20 0.625
bvc_buy_ratio_5bar >0.55/<0.45 168 74 0.497 0.282 bear
bvc_buy_ratio_20bar >0.55/<0.45 29 1 0.556
absorption_score_last >+1.5 20 0 0.846 bull 강함 (n=20) ★
absorption_count_20bar >3 / ==0 0 676 0.366 bear
exhaustion_flag_up/down 6 0 0.667 n 작음
lower_wick > upper_wick (받침) 102 226 0.493 0.379
buy_pres - sell_pres >0.3/<-0.3 115 206 0.482 0.355 bear

핵심: - OF daily cvd_zscore <-1 bear D+20 0.250 ★ (75% 하락, n=81) - absorption_score_last >+1.5 bull D+20 0.846 (n=20) — 흡수 흔적 후 상승 - absorption_count_20bar ==0 bear D+20 0.366 (소화 없으면 약화)

1-6. OF 30분봉 (13지표)

n_b n_s b_d20 s_d20 핵심
cvd_zscore >+1/<-1 105 151 0.474 0.250 bear
cvd_slope_z 0 0
cvd_price_divergence 2 2 0.000 0.500 n 작음
bvc_buy_ratio_5bar >0.55/<0.45 69 35 0.636 0.152 bear 85% 하락
bvc_buy_ratio_20bar 1 4
absorption_score_last 0 0
exhaustion_flag 4 5 0.200
lower_wick > upper_wick 108 190 0.644 0.352 bull
buy_pres - sell_pres >0.3/<-0.3 46 342 0.615 0.329

핵심: - OF 30분봉 bvc_buy_ratio_5bar <0.45 bear D+20 0.152 (85% 하락, n=35) ★★ - OF 30분봉 lower_wick > upper_wick bull D+20 0.644 (+2.7pp, n=108) - OF 30분봉 buy_pres - sell_pres > 0.3 bull D+20 0.615 (n=46)

1-7. 3-Laws

n_b n_s b_d20 s_d20
supply_demand_ratio >0.2/<-0.2 421 1 0.586
up_volume_ratio >0.55/<0.45 631 23 0.620 0.316
effort_result_zscore >+1/<-1 130 103 0.339 0.372
adl_price_divergence -1/+1 4 55 0.333 0.519 ← 의외
adl_slope_norm > price_slope 0 0
cause_count_bars > 20 0 0
absorption_intensity >+1 103 0 0.628

핵심: - up_volume_ratio <0.45 bear D+20 0.316 (68% 하락, n=23) - effort_result_zscore >+1 bull D+20 0.339 (역방향! Effort/Result divergence) - absorption_intensity >+1 bull D+20 0.628 (+1.1pp, n=103) - adl_price_divergence (+1=추격 의심) bear D+20 0.519 — bear 신호 효과 약함

1-8. Trigger (Bulkowski / AMT / Retracement)

n_b n_s b_d20 s_d20
Bulkowski decision BUY/SELL 682 142 0.628 0.397
Bulkowski strong (conf≥0.6) 1 1 n/a n/a
AMT decision BUY/SELL 97 437 0.566 0.415
AMT strong (conf≥0.6) 40 264 0.500 0.471
retracement impulse_dir UP/DOWN 681 170 0.633 0.417
retr_label RESOLVING_EARLY vs LATE/RETURNING 231 13 0.665 0.200

핵심: - retracement RESOLVING_EARLY bull D+20 0.665 (+4.8pp, n=231) — 초반 되돌림 후 가속 - retracement RETURNING/BREAKING bear D+20 0.200 (n=13) — 임펄스 무산 - Bulkowski strong은 표본 ≤1 → 운영 불가 - AMT decision bull D+20 0.566 (baseline 미달 -5.1pp) — bull 약함


2. 매크로/파생 (전 z 31개, baseline KOSPI UP D+20 0.811)

발화일이 strong 매크로 이벤트라 baseline 자체가 0.811로 높음 → bull은 0.81 넘어야 우위, bear는 baseline의 1-0.811=0.189 근처여야 회피력.

2-1. 기존 z (8개)

신호 n_HIGH n_LOW b_d20 s_d20 핵심
basis_z 19 21 0.842 (+3.1pp) 0.381 (62% 하락) 양방향 ★★
fut_oi_chg_z 11 25 0.909 0.120 (88% 하락) ★★ 양방향 최강
kr_10y_chg_z 14 23 0.786 0.174 (83% 하락) ★★ bear ★
max_pain_dist_z 11 0 0.909 bull n=11
vkospi_fut_z, vkospi_proxy_z, pcr_oi_z, deriv_sent_z 발화 0~2

2-2. 신규 z (raw 컬럼 22개)

신호 n_b n_s b_d20 s_d20 핵심
_NEW_basis_z (변화량 z) 26 16 0.808 0.312 bear ↑
_NEW_kr_10y_fut_chg_z 14 19 0.786 0.211 bear ★
_NEW_kr_10y_fut_volume_chg_z 13 13 0.846 0.154 bear ★
_NEW_kospi200_close_chg_z 18 17 0.611 0.176 bear ★ (모멘텀 후 반대)
_NEW_kospi200_fut_chg_z 21 19 0.667 0.158 bear ★
_NEW_kospi200_fut_close_chg_z 20 18 0.650 0.167 bear ★
_NEW_kospi_close_chg_z 15 16 0.533 0.188 bear ★
_NEW_kospi200_fut_volume_chg_z 11 14 0.727 0.214 bear ★
_NEW_kospi200_fut_oi_chg_z 3 7 (n작) (n작)
_NEW_vkospi_fut_close_chg_z 21 10 0.810 0.200 양방향
_NEW_vkospi_fut_oi_chg_z 13 15 1.000 0.067 ★★ 양방향
_NEW_vkospi_fut_volume_chg_z 15 16 0.800 0.312
_NEW_usd_fut_chg_z 13 11 0.846 0.182
_NEW_usd_fut_close_chg_z 0 10 0.100 bear
_NEW_usd_fut_oi_chg_z 10 9 0.900 0.111 bear ★
_NEW_usd_fut_volume_chg_z 11 9 0.727 0.222
_NEW_call_oi_total_chg_z 6 9 (n작) 0.111 bear
_NEW_put_oi_total_chg_z 5 9 (n작) 0.111 bear
_NEW_pcr_vol_z 28 3 0.893 (n작) bull ★
_NEW_max_pain_dist_z 9 0 0.889
_NEW_max_pain_z 0 9 0.111 bear
_NEW_n_strikes_z 71 0 0.704 운영 가치 낮음
_NEW_opt_expiry_z 86 0 0.895 만기 effect (이벤트성)

핵심: - _NEW_vkospi_fut_oi_chg_z: bull D+20 1.000 (n=13), bear D+20 0.067 (93% 하락, n=15) ★★ — 양방향 최강 - _NEW_usd_fut_oi_chg_z: bear D+20 0.111 (89% 하락, n=9) - _NEW_call_oi_total_chg_z LOW: bear D+20 0.111 - _NEW_kospi200_fut_chg_z LOW: bear D+20 0.158 (84% 하락, n=19) - 변화량 z (Δ) 신호가 raw 시계열 z보다 강함 — Druckenmiller "change of pace" 일치


3. 모듈 종합 순위 (v2 전체, baseline 대비)

3-1. bull 신호 정확도 Top 10 (표본 ≥10, D+20 hit rate)

순위 bull D+20 baseline 표본
1 _NEW_vkospi_fut_oi_chg_z HIGH 1.000 +18.9pp vs macro 0.811 13
2 _NEW_usd_fut_oi_chg_z HIGH 0.900 +8.9pp 10
3 _NEW_opt_expiry_z HIGH 0.895 +8.4pp 86 (이벤트성)
4 _NEW_pcr_vol_z HIGH 0.893 +8.2pp 28
5 basis_z HIGH 0.842 +3.1pp 19
6 _NEW_kr_10y_fut_volume_chg_z HIGH 0.846 +3.5pp 13
7 _NEW_usd_fut_chg_z HIGH 0.846 +3.5pp 13
8 fut_oi_chg_z HIGH 0.909 +9.8pp 11
9 OF daily absorption_score_last >+1.5 0.846 +22.9pp vs chart 0.617 ★ 20
10 in_lvn (VP) 0.818 +20.1pp 12

3-2. bear 신호 정확도 Top 10 (낮을수록 = 실제 하락 비율 높음)

순위 bear D+20 표본
1 vp_up_down_amount_ratio_log <-0.3 0.062 (94% 하락) 19 ★★
2 _NEW_vkospi_fut_oi_chg_z LOW 0.067 (93%) 15 ★★
3 _NEW_usd_fut_oi_chg_z LOW 0.111 (89%) 9
4 _NEW_call_oi_total_chg_z LOW 0.111 (89%) 9
5 _NEW_put_oi_total_chg_z LOW 0.111 (89%) 9
6 fut_oi_chg_z LOW 0.120 (88%) 25 ★★
7 vp_volume_asymmetry_20d <-0.3 0.160 (84%) 28 ★★
8 ofm_bvc_buy_ratio_5bar <0.45 0.152 (85%) 35 ★★
9 kr_10y_chg_z LOW 0.174 (83%) 23
10 _NEW_kospi200_fut_chg_z LOW 0.158 (84%) 19

(이하 retr_label RETURNING 0.200, _NEW_max_pain_z 0.111, _NEW_kospi200_close_chg_z 0.176 등 다수)

3-3. 선행성 (median first ±3% / ±5% swing days)

종목 단위 (±3%/±5%): - 거의 모든 모듈 2~3일 / 3~4일 — 검증 기간 변동성 큰 강세장이라 빠름 - 선행성 차이 없음 (v1 결론 동일)

매크로 (±3%, KOSPI): - basis_z bull 3일 / bear 2~3일 - fut_oi_chg_z bull 5일 / bear 5일 - _NEW kospi/fut chg z 신호들 = bull 3~4일 / bear 3~4일 - _NEW kr_10y_fut_close_chg_z: bull 10일 / bear 14일 → 느린 선행 (값 작음)

3-4. fold 안정성 (D+10 hit rate fold 0/1/2)

bull: 거의 모든 차트 룰에서 f0 < f1 < f2 단조 증가 (예: la_range_pos f0:0.42→f1:0.62→f2:0.69). bear는 반대 (f0 0.55 → f2 0.31). 시장 추세 동행 효과 = 차트 모듈의 정확도가 시장 환경에 강하게 의존.

매크로: - basis_z bull: f0 0.83 / f1 0.88 / f2 0.60 — fold 0~1 안정, f2 약화 - basis_z bear: f0 0.50 / f1 0.50 / f2 0.00 — fold 2(후반)에서 KOSPI 안 떨어짐 → 추세 ↑ 환경에 매크로 bear 무력화 - _NEW_basis_z (Δ z): f0 0.90 / f1 0.86 / f2 0.67 — 비슷한 패턴, 전반 안정 - _NEW_vkospi_fut_oi_chg_z bull: f0 0.80 / f1 0.80 / f2 1.00 — 3 fold 모두 강함 ★ - _NEW_vkospi_fut_oi_chg_z bear: f0 0.20 / f1 0.40 / f2 0.00 — fold 모두 80~100% 하락 ★ - _NEW_opt_expiry_z bull: f0 0.79 / f1 0.93 / f2 0.79 — 만기 effect 일관 ★ - _NEW_pcr_vol_z bull: f0 0.67 / f1 1.00 / f2 0.56 — 보통

가장 fold 안정한 신호: _NEW_vkospi_fut_oi_chg_z, _NEW_opt_expiry_z, vp_volume_asymmetry_20d bear, vp_up_down_amount_ratio_log bear.


4. 발화 못 한 신호 (점검 불가)

신호 이유
la_obv_slope_z 임계 z>1/<-1 발화 0 (전 sample 정규화 안 됨 가능)
la_ad_line_slope_z n_s=3 — 거의 발화 안 함
vsa_net_bias_20d 컬럼 명 불일치 (audit_v2 ERR)
wy_spring/upthrust_count>0 (당일) 전부 0 — 강세장 매집 없음
wy_sos+lps vs sow+lpsy 모두 0 — events 발현 없음
vp_va_width 좁음<1 전부 발화 0 (VA가 다 넓음)
ofd_cvd_slope_z, ofm_cvd_slope_z 임계 발화 0
ofd_absorption_count>3, law_cause_count_bars>20 0
ofm_absorption_score_last 0
ofm_cvd_price_divergence 2/2 (표본 한계)
vkospi_fut_z, vkospi_proxy_z, pcr_oi_z, deriv_sent_z (기존 z) 발화 0~2건
Bulkowski strong (conf≥0.6) n=1/1 (Bulkowski 임계 너무 높음)

5. PM 운영 권고 (v2 통합)

진입 신호 (bull, D+20 hit rate ≥ 0.75 + 표본 ≥ 10)

  • ★★ _NEW_vkospi_fut_oi_chg_z HIGH (D+20 1.000, n=13, fold 3개 다 강함)
  • ★★ _NEW_usd_fut_oi_chg_z HIGH (D+20 0.900, n=10)
  • ★★ _NEW_pcr_vol_z HIGH (D+20 0.893, n=28)
  • ★★ basis_z HIGH (D+20 0.842, n=19, fold 0~1 안정)
  • _NEW_opt_expiry_z HIGH — 옵션 만기 이벤트성 (n=86이지만 만기에만 발화)
  • ★ 종목 차트: OF daily absorption_score_last >+1.5 (D+20 0.846, n=20, +22.9pp ★), in_lvn (0.818 n=12)

회피/공매도 신호 (bear, D+20 ≤ 0.20)

  • ★★ vp_up_down_amount_ratio_log <-0.3 (94% 하락, n=19) — 종목 최강
  • ★★ _NEW_vkospi_fut_oi_chg_z LOW (93%, n=15) — 매크로 최강
  • ★★ ofm_bvc_buy_ratio_5bar <0.45 (85%, n=35)
  • ★★ vp_volume_asymmetry_20d <-0.3 (84%, n=28)
  • ★★ fut_oi_chg_z LOW (88%, n=25)
  • kr_10y_chg_z LOW (83%, n=23), _NEW_kospi200_fut_chg_z LOW (84%, n=19), OF daily cvd_z <-1 (75%, n=81)

약한/역방향 신호

  • OF SELL 단독 — v1 결론 유지
  • err_zscore >+1 bull (D+20 0.348) — Effort no Result 검증 (역방향)
  • effort_result_zscore >+1 bull (0.339) — 동일
  • ✗ AMT strong bull (n=40 D+20 0.500) — 약함
  • ✗ Bulkowski strong — 표본 부족

데이터 결손 + 임계 조정 필요

  • obv_slope_z, ad_line_slope_z, cvd_slope_z (둘 다), absorption_count_20bar, va_width
  • 기존 z 4종 (vkospi_fut/proxy, pcr_oi, deriv_sent) — 다시 산식 검토 필요

6. 한계 (v1 동일)

  1. 검증 기간 67일 강세장 단독 — 약세/조정 walk-forward 미실시
  2. fold당 표본 작음 — 통계 유의성 DSR/PBO 검증 미실행
  3. 모듈 단독 vs 조합 미측정 — bull+bear 합의 효과 (S307big BUY_STRONG +27% 사례) 별도
  4. 만기 effect 분리: _NEW_opt_expiry_z 86 발화는 매월 만기 시점의 자동 발화 → 진짜 정보 가치보다 calendar effect 가능성

7. 산출물

  • 코드: scripts/backtest/s317_module_audit_v2.py (raw 891 sample × 130 cols)
  • 코드: scripts/backtest/s317_macro_audit_v2.py (raw 826 발화 × 31 신호)
  • 코드: scripts/backtest/s317_aggregate_v2.py (집계)
  • 데이터: data/backtest/s317_audit_v2/samples.parquet
  • 데이터: data/backtest/s317_audit_v2/macro_events.parquet
  • 데이터: data/backtest/s317_audit_v2/audit_report.json (전 60+30 룰 결과 + fold)