S317 — 3 분석기 인벤토리: 입력 데이터 · 산식 · 정확도 · 선행성¶
작성: 2026-05-26 (Tue) 09:00
대상: ① 차트 분석기 (discovery + triggers) ② 퀀트 분석기 (earnings E1) ③ Order Flow 분석기
근거 소스:
- 코드: scripts/discovery/*.py, scripts/discovery/triggers/*.py, scripts/quant/earnings/*.py
- 점검 결과: docs/research/2026-05-26_S317_module_audit_v2.md (차트/OF, n=891, 67일)
- 점검 결과: docs/research/2026-05-26_S317_us_macro_audit.md (US 매크로, 4년)
- 백테스트: docs/research/2026-05-25_S312v2_e1_qoq_backtest.md (E1 1시점 81종)
1. 차트 분석기 (discovery/)¶
1-1. 모듈 구성¶
| 모듈 파일 | 역할 | 출력 필드 수 |
|---|---|---|
layer_a.py |
Layer A: 가격/거래량/플로우/VSA raw 14필드 | 14 |
volume_profile.py |
POC/VA/HVN/LVN/Asymmetry/Overhang | 20 |
vsa_signals.py |
VSA 8신호 + Spring/Upthrust 검출 | 12 |
wyckoff.py:compute_wyckoff |
Wyckoff 4국면 + 11이벤트 검출 | 19 |
wyckoff.py:compute_three_laws |
수요공급 + 원인결과 + 노력결과 (A/D Line) | 9 |
state_classifier.py |
위 5개 통합 → state/cycle/resolution_direction | 종합 |
triggers/vsa_trigger.py |
VSA → BUY/SELL decision | confidence |
triggers/wyckoff_trigger.py |
Wyckoff → decision | confidence |
triggers/amt_trigger.py |
AMT (acc/mom/trend) → decision | confidence |
triggers/bulkowski_trigger.py |
차트패턴(Rectangle/Flag/Pennant) | confidence |
triggers/of_trigger.py |
OF (30분봉) → decision | confidence |
triggers/aggregator.py |
5 trigger vote → verdict | BUY_STRONG/AVOID 등 |
1-2. 입력 데이터¶
| 입력 | 타임프레임 | 출처 | 필요 봉 수 |
|---|---|---|---|
| 일봉 OHLCV | 1d | FDR (data/backtest/s303/ohlcv/*.parquet) |
최소 60봉 (state_classifier), 140봉 (s307big run_one) |
| 30분봉 OHLCV | 30분 | 키움 ka10080 (data/minute_charts/30min/*.parquet) |
60봉~900봉 |
| 외인/기관 flow (옵션) | 1d | Naver/Kiwoom | 20봉+ |
1-3. 모듈별 산식 + 정확도 + 선행성¶
A. VSA 8신호 (vsa_signals.py)¶
산식 출처: Tom Williams VSA / PyQuantLab
| 신호 | 조건 (R3 §3-1) |
|---|---|
| ND (No Demand) | vol < MA×0.5 + up bar + spread narrow |
| NS (No Supply) | vol < MA×0.5 + down bar + spread narrow |
| SV (Stopping Volume) | vol > MA×2.0 + down bar + close_pos > 0.7 |
| CV (Climactic Volume) | vol > MA×2.0 + up bar + close_pos > 0.7 |
| BC (Buying Climax) | vol > MA×2.0 + up bar + close_pos < 0.3 |
| SC (Selling Climax) | vol > MA×2.0 + down bar + close_pos > 0.7 |
| EUR (Effort Up no Result) | vol > MA×1.2 + 작은 양봉 |
| EDR (Effort Down no Result) | vol > MA×1.2 + 작은 음봉 |
| Spring | prior_N봉 저점 일시 이탈 + 종가 회복 |
| Upthrust | prior_N봉 고점 일시 돌파 + 종가 미달 |
임계값: BTC 캘리브레이션 — 한국 재보정 필요 (DEFAULT_THRESHOLDS 코드 명시)
정확도 (S317 v2, n=891, baseline UP D+20 0.617):
| 신호 | n_b | n_s | b_d20 | s_d20 |
|---|---|---|---|---|
| last_signal_kind bullish/bearish | 57 | 108 | 0.696 ★ | 0.370 |
| strength≥3 | 1 | 63 | n/a | 0.279 (72% 하락) ★ |
| last_signal_id SC/Spring/SV vs BC/UT/EUR | 3 | 87 | n=3 무력 | 0.283 ★ |
| spring_count_20d > 0 | 197 | — | 0.707 ★★ | — |
| upthrust_count_20d > 0 | — | 512 | — | 0.403 |
| spring_last_age ≤ 3 | 746 | — | 0.604 | — |
| bull_strength_sum > bear | 143 | 112 | 0.577 | 0.277 |
선행성 (median first ±3% swing days): bull 2~3일 / bear 2~3일
B. Volume Profile (volume_profile.py)¶
산식: Steidlmayer Market Profile + Auction Theory
- POC: 가격빈별 거래량 합 최대 (n_bins=50)
- VA (Value Area): POC 양쪽으로 누적 거래량 70% 영역
- VAH/VAL: VA 상/하단
- LVN/HVN: bin 거래량 < 0.5×median / > 1.5×median
- ATR 정규화: poc_dist_atr = (current_price - POC) / ATR(14)
- 비대칭: (up_vol_amount - down_vol_amount) / total — 20일
정확도 (S317 v2):
| 신호 | n_b | n_s | b_d20 | s_d20 |
|---|---|---|---|---|
| volume_asymmetry_20d <-0.3 | 246 | 28 | 0.542 | 0.160 ★★ (84% 하락) |
| up_down_amount_ratio_log <-0.3 | 194 | 19 | 0.564 | 0.062 ★★ (94% 하락) — 종목 최강 |
| poc_dist_atr >+2/<-2 | 594 | 71 | 0.615 | 0.344 ★ |
| in_lvn | 12 | — | 0.818 (n 작음) | — |
| rotation_factor_20 >5/<-5 | 299 | 114 | 0.592 | 0.294 ★ |
| va_position 위/아래 | 44 | 482 | 0.513 | 0.411 |
| overhang_below_current >0.4 | 769 | — | 0.616 | — |
선행성: bull 2~3일 / bear 2~3일
미작동 신호: va_width <1 (전부 발화 0 — 강세장 VA 좁은 종목 없음)
C. Order Flow Daily (order_flow.py, 입력=일봉)¶
산식:
- BVC (Bulk Volume Classification, Easley/LdP/O'Hara 2012):
- log_ret / rolling_60d_std → t분포(df=0.25) CDF → buy_ratio (0~1)
- Delta = (2×buy_ratio − 1) × volume
- CVD = cumsum(Delta)
- cvd_zscore = z-score of CVD 마지막 값 (rolling 20)
- divergence = price slope vs CVD slope (window 10) → -1/0/+1
- absorption_score = vol_z × (1 − |price_range_norm|) (window 20)
- exhaustion = delta 부호 유지 + volume 단조감소 (5봉)
- buy/sell_pressure = close_pos + 꼬리 + 양/음봉 거래량 가중
원전 정확도 (참고): Easley 2012 — BVC 65분봉 79.7% 정확
정확도 (S317 v2, n=891):
| 신호 | n_b | n_s | b_d20 | s_d20 |
|---|---|---|---|---|
| cvd_zscore >+1/<-1 | 347 | 81 | 0.528 | 0.250 ★ (75% 하락) |
| cvd_price_divergence (-1받침/+1추격) | 16 | 2 | 0.625 | n=2 무력 |
| bvc_buy_ratio_5bar >0.55/<0.45 | 168 | 74 | 0.497 | 0.282 |
| absorption_score_last >+1.5 | 20 | — | 0.846 (+22.9pp) ★★ | — |
| absorption_count_20bar ==0 | — | 676 | — | 0.366 |
| exhaustion_flag_up | 6 | — | 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 |
선행성: bull/bear 2~3일
미작동 신호: cvd_slope_z (전부 임계 미달), absorption_count>3 / cause_count_bars>20 (강세장 압축 패턴 없음)
D. Wyckoff (wyckoff.py)¶
산식 (R3 §3-4 TradingView Wyckoff Phase Classifier): - 4국면: ACC / MARKUP / DIST / MARKDOWN — 60봉 위치 + 이벤트 카운트 + 추세 종합 - 11이벤트: SC/AR/ST/Spring/SOS/LPS (ACC) + BC/UT/UTAD/SOW/LPSY (DIST) - climax_vol_mult = 2.0 (대형) / 1.5 (중소형) - net_event_bias = (acc − dist) / (acc + dist + 1)
임계값: 미국·BTC 캘리브레이션 — 한국 재보정 필요
정확도 (S317 v2):
| 신호 | n_b | n_s | b_d20 | s_d20 |
|---|---|---|---|---|
| phase ACC/MARKUP vs DIST/MARKDOWN | 384 | 445 | 0.643 | 0.424 |
| phase_confidence>0.6 + 방향 | 95 | 232 | 0.512 | 0.393 |
| net_event_bias >0.3/<-0.3 | 15 | 145 | 0.571 | 0.286 ★ |
| last_event SC/Spring/SOS vs BC/UT/SOW | 90 | 640 | 0.613 | 0.378 |
미작동: spring/upthrust 11이벤트 발현 (60d 카운트) 거의 0 — 강세장 67일 동안 매집 단계 부재 (정상)
선행성: bull/bear 2~3일
E. Layer A 14필드 (layer_a.py)¶
산식: R3 §2 매핑 문서
| 필드 | 산식 |
|---|---|
| range_pos_52w | (close - 52w_low) / (52w_high - 52w_low) |
| high_proximity | 52w_high - close, ATR 정규화 |
| price_zscore_20d | (close - MA20) / std20 |
| drawdown_60d | (close - max60d) / max60d |
| rvol_20d | volume / MA20(volume) |
| vol_zscore | rolling z-score of volume |
| cmf_20d | Chaikin Money Flow 20 |
| obv_slope_z | OBV 20일 회귀 기울기 z |
| vol_ratio | volume / MA7(volume) (intraday VSA용) |
| spread_ratio | (H-L) / MA7(H-L) |
| close_pos | (close - low) / (high - low) |
| err_zscore | Effort/Result z (vol_z × abs(price_chg) divergence) |
| absorption_flag | 1/0 |
| rotation_factor_20 | 20일 H/L 갱신 ±1 합산 |
| ad_line_slope_z | A/D Line 20일 회귀 기울기 z |
정확도:
| 룰 | n_b | n_s | b_d20 | s_d20 |
|---|---|---|---|---|
| range_pos 상위20% | 891 | 0 | 0.617 (= baseline) | — |
| close_pos 상단>0.7 / 하단<0.3 | 139 | 377 | 0.469 | 0.247 ★ (75% 하락) |
| price_zscore_20d >1/<-1 | 303 | 102 | 0.555 | 0.293 ★ |
| cmf_20d >0.1/<-0.1 | 147 | 367 | 0.500 | 0.345 ★ |
| err_zscore >+1 (Effort Up no Result) | 126 | 103 | 0.348 (역방향!) | 0.357 |
| rvol_20d high/low | 119 | 148 | 0.609 | 0.403 |
| drawdown_60d shallow/deep | 102 | 788 | 0.554 | 0.376 |
미작동: obv_slope_z (전부 0 발화), ad_line_slope_z (n=3) → 임계 조정 필요
F. Triggers (triggers/)¶
산식: 5개 방법론 vote 통합 (aggregator.py) - buy_votes ≥ max(3, n-1) AND buy_conf ≥ 2.0 → BUY_STRONG - buy_votes ≥ 2 AND sell_votes = 0 → BUY - buy_votes ≥ 1 AND sell_votes ≥ 1 → MIXED_BUY_LEAN/MIXED_SELL_LEAN/MIXED (conf 비율로 분기) - sell 대칭: AVOID_STRONG / AVOID / CAUTION
정확도 (S307big+OF, n=1,682, OF 활성):
| verdict | n | D+20 mean | win% | sortino |
|---|---|---|---|---|
| BUY_STRONG | 25 | +27.64% | 64.0% | 2.68 |
| BUY | 286 | +12.67% | — | 2.09 |
| MIXED_BUY_LEAN | 738 | +10.58% | — | 1.23 |
| AVOID_STRONG | 12 | +8.33% | — | 2.53 |
| AVOID | 70 | +12.77% | — | — |
| (baseline OF active) | 1,682 | +11.33% | — | 1.47 |
개별 트리거 (S317 v2, n=891):
| 트리거 | n_b | n_s | b_d20 | s_d20 |
|---|---|---|---|---|
| Bulkowski decision | 682 | 142 | 0.628 | 0.397 |
| Bulkowski strong (conf≥0.6) | 1 | 1 | 표본 무력 | 표본 무력 |
| AMT decision | 97 | 437 | 0.566 | 0.415 |
| AMT strong | 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 ★ |
선행성: 0d 동시 신호 (verdict 발화 = 진입 시점)
1-4. 차트 분석기 종합¶
검증된 강한 신호 (즉시 운영 가치): - 종목 회피 ★★: vp_up_down_amount_ratio_log <-0.3 (94% 하락), vp_volume_asymmetry_20d <-0.3 (84%), ofm_bvc_buy_ratio_5bar <0.45 (85%), close_pos 하단 <0.3 (75%) - 종목 진입 ★★: ofd_absorption_score_last >+1.5 (D+20 0.846), spring_count_20d >0 (0.707), retr_label RESOLVING_EARLY (0.665), vp_in_lvn (0.818, n 작음) - 합의 시 폭증: 5-trigger BUY_STRONG (D+20 +27.64%, sortino 2.68)
검증 실패/임계 조정 필요: - obv_slope_z, ad_line_slope_z, cvd_slope_z, va_width 좁음 (모두 발화 0건) - VSA strong bull (n=1), Bulkowski strong (n=1) — 임계 너무 엄격 - err_zscore >+1 → bull 역방향 (Effort no Result 검증) - AMT decision/strong → 약함 (baseline 미달) - Wyckoff 11이벤트 (60d count) → 강세장 67일에 spring/sos/lps 발현 0 (정상)
선행성 결론: - 모든 차트 신호 0d 동시 (verdict가 진입 시점) - 첫 ±3% swing까지 2~3일 (강세장 67일 변동성 큼 — 다른 환경 별도 측정 필요)
2. 퀀트 분석기 (scripts/quant/earnings/)¶
2-1. 모듈 구성¶
| 모듈 | 역할 |
|---|---|
fnguide_loader.py |
FnGuide SVD_Main HTML 파싱 → fnguide_fs.parquet |
cache_io.py |
DART 분기 재무 cache + vintage 갱신 |
point_in_time.py |
분기말+50d (1Q~3Q) / +95d (4Q) cutoff |
e1_acceleration.py |
EA / EA_QoQ / g_curr 산출 |
2-2. 입력 데이터¶
| 입력 | 출처 | 커버리지 |
|---|---|---|
| FnGuide SVD_Main HTML | comp.fnguide.com (분기 5년 + 컨센) | 98종목 (S311 백필) |
| DART 재무제표 | mcp__korea-stock-mcp__get_financial_statement (보조) | 시총 100 가능 |
| 종목당 1 호출 → 분기 IFRS_CFS/OFS 매출/영업이익/순이익/EPS/ROE 등 |
한국 PIT 규칙:
- 1Q/2Q/3Q: 분기말 + 50일 cutoff (45일 법정 + 5일 휴일 버퍼)
- 4Q: 분기말 + 95일 cutoff (90일 법정 + 5일 버퍼)
- 잠정실적 공정공시: announce_dt vintage 사용 가능
- 정정공시: vintage 갱신 (cache_io.vintage_update)
2-3. 산식 (E1, He-Narayanamoorthy JAE 2020)¶
g_q = (X_q − X_q-4) / |X_q-4| # YoY 성장률
ea = g_q − g_q-1 # EA (YoY 가속) — 6분기 필요
qoq_q = (X_q − X_q-1) / |X_q-1| # QoQ 성장률
ea_qoq = qoq_curr − qoq_prev # EA_QoQ (4분기 QoQ 가속) — 5분기 필요
대상 metric: revenue / op_income / net_income (3개)
왜 EA_QoQ로 전환 (S312v2 PM 가르침): - FnGuide SVD_Main = 5분기 시계열만 제공 - EA(YoY 가속) 6분기 필요 → 한국 데이터로 측정 불가 - EA_QoQ는 4분기만 필요 → 5분기 시계열에서 측정 가능
2-4. 정확도 (S312v2 1시점 backtest, 2025Q4)¶
baseline: KOSPI YTD +32%, n=81 종목
| horizon | TOP-BOTTOM decile spread | 평가 |
|---|---|---|
| D+5 | -1.2pp (음수) | 신호 지연 |
| D+10 | -3.0pp (음수) | 신호 지연 |
| D+20 | -1.3pp (음수) | 신호 지연 |
| D+30 | +9.11pp ★ | 가설 부분 지지 |
decile 8×8 표본 — LG이노텍 +126% / 대우건설 +54% outlier 영향 연환산 +76.5%/yr (1시점, 신뢰 불가) DSR/PBO 통계 유의성 X
2-5. 선행성 (퀀트 vs 차트/OF)¶
| 분석기 | 신호 발화 ~ 가격 반응 |
|---|---|
| 퀀트 EA_QoQ | 발화 = 발표일 후 50d (PIT cutoff) → forward D+30 alpha 발현 |
| 차트/OF | 발화 = 종가 시점 → forward D+5~D+20 |
| 매크로 (KR) | basis_z 등 2~5일 선행 |
| 매크로 (US) | NET_LIQ_BN 등 3~11일 선행 |
→ 퀀트는 가장 느린 신호 (50d PIT lag 본질). 장기 (D+30) 가치에 적합.
2-6. 결함 + 한계¶
| 항목 | 상태 |
|---|---|
| 커버리지 | 98종 (시총 100 중 우선주 2 제외) |
| 시점 수 | 1시점 (2026-04-06 cutoff, 2025Q4) — walk-forward 미실시 |
| 컨센서스 추정치 | 누락 (is_estimate 모두 False) |
| Annual/Quarter 분류 | period_kind 컬럼으로 보정 완료 (S312-1 fix) |
| EPS/ROE | 미수집 (다른 table 추가 파싱 필요) |
| 데이터 시계열 길이 | FnGuide SVD_Main 5분기 / 5년 — 장기 walk-forward 불가 |
| 종목당 비용 | FnGuide 1회/종목 (1초 throttle), DART는 분기당 호출 多 |
2-7. 퀀트 분석기 종합¶
- 산식: He-Narayanamoorthy JAE 2020 원전 + PM EA_QoQ 변형 (5분기 데이터 한계 대응)
- 정확도: 1시점 D+30 spread +9.11pp (가설 부분 지지) / 통계 유의성 X
- 선행성: PIT 50d lag 본질, 발현은 D+30
- 운영 가치: 1시점이라 단독 운영 위험. 4축(테마/시장환경/차트) 결합 후 사용 권고
- 다음 단계: 장기 분기 시계열 확보 (DART 직접 backfill 또는 유료 소스) → walk-forward backtest
3. Order Flow 분석기¶
3-1. 두 종류¶
| 모드 | 입력 | 산출 | 정확도 |
|---|---|---|---|
OF Daily (order_flow.py, 일봉) |
일봉 OHLCV | 13필드 (BVC/CVD/Absorption/Exhaustion/Wicks/Pressure) | S307big+OF에서 일봉 fallback 폐기 (PM 2026-05-24 정책) |
| OF 30분봉 (동일 함수, 입력만 30분봉) | 30분봉 OHLCV 60~900봉 | 동일 13필드 | 5-trigger 합의 시 D+20 +27.64% (BUY_STRONG) |
3-2. 산식 (Easley-LdP-O'Hara 2012 BVC)¶
표준화 수익률 t분포 CDF로 buy_ratio 추정 (틱데이터 없이 80% 정확) - log_ret = log(close_t / close_t-1) - z = log_ret / std60 - buy_ratio = t.cdf(z, df=0.25) ← 두꺼운 꼬리 - delta = (2×buy_ratio − 1) × volume - CVD = cumsum(delta)
3-3. 정확도 (S317 v2, n=891)¶
| 신호 | 모드 | n_b | n_s | b_d20 | s_d20 |
|---|---|---|---|---|---|
| cvd_zscore >+1/<-1 | daily | 347 | 81 | 0.528 | 0.250 ★ |
| cvd_zscore >+1/<-1 | 30분 | 105 | 151 | 0.474 | 0.250 ★ |
| bvc_buy_ratio_5bar | 30분 | 69 | 35 | 0.636 | 0.152 ★★ (85% 하락) |
| absorption_score_last >+1.5 | daily | 20 | — | 0.846 ★★ | — |
| lower_wick > upper_wick | daily | 102 | 226 | 0.493 | 0.379 |
| lower_wick > upper_wick | 30분 | 108 | 190 | 0.644 | 0.352 |
| buy_pres - sell_pres | daily | 115 | 206 | 0.482 | 0.355 |
| buy_pres - sell_pres | 30분 | 46 | 342 | 0.615 | 0.329 |
| cvd_price_divergence | daily | 16 | 2 | 0.625 | n=2 무력 |
S307big+OF (30분봉 활성, n=1,682): - OF BUY 단독: D+20 +15.16%, sortino 2.16, win 60% - OF SELL 단독: n=8, D+20 +23.95% (전 발화 양수 = SELL 실패 확정) - 5-trigger 합의 BUY_STRONG: D+20 +27.64%, sortino 2.68
3-4. 선행성¶
- 0d 동시 신호 (verdict = 진입 시점)
- forward effect: D+5 < D+10 < D+20 단조 증가 (peak D+20)
- 30분봉 모드라 intraday lead 효과는 측정 안 함 (일봉 forward만 측정)
3-5. OF 분석기 결론¶
- OF BUY 30분봉 + 차트 합의 = 최강 (D+20 +27.64%)
- OF SELL 단독 사용 금지 (n=8 100% 양수)
- 일봉 OF 폐기 정책 (PM 2026-05-24) — 30분봉만 활성 시 OF trigger 작동
- 데이터 결손: cvd_slope_z 임계 발화 0 (rolling 20봉 정규화 검토 필요)
4. 분석기 간 비교 (요약)¶
| 항목 | 차트 (discovery) | 퀀트 (E1) | OF (30분봉) |
|---|---|---|---|
| 입력 | 일봉 OHLCV 140봉+ | FnGuide 분기 5년 | 30분봉 OHLCV 60~900봉 |
| 산출 필드 | 80+ (Layer A + VP + VSA + Wyckoff + Laws) | 3 metric × {g_curr, ea_qoq, ea} = 9 | 13 (BVC/CVD/Absorp/Exh/Wick/Pres) |
| 신호 빈도 | 매일 (모든 종목) | 분기당 1회 | 매일 (30분봉 가용 종목) |
| PIT lag | 0d | 50d (1Q~3Q) / 95d (4Q) | 0d |
| 선행성 | 0d (동시) → ±3% swing 2~3d | 50d lag, alpha D+30 발현 | 0d, peak D+20 |
| 단독 최강 bull D+20 | absorption_score_last >+1.5 (0.846, n=20) | TOP decile (D+30 spread +9pp, n=81) | OF BUY (+15.16%, n=65) |
| 단독 최강 bear D+20 | vp_up_down_amount_ratio_log <-0.3 (0.062 = 94% 하락) | BOTTOM decile (D+30 −5pp) | OF SELL 실패 (n=8, +23.95%) |
| 결합 시너지 | 5-trigger BUY_STRONG +27.64% (n=25) | 4축 결합 미측정 (S313 대기) | 5-trigger 합의에 포함 |
| 임계 재보정 필요 | VSA/Wyckoff (BTC 캘리브레이션) | 없음 (산식 원전 그대로) | cvd_slope_z 임계 |
| 운영 가치 (단독) | 약함 (S307 "차트만으론 불가") | 약함 (1시점 통계 X) | BUY 약함, SELL 사용 금지 |
| 운영 가치 (결합) | ★★ 합의 시 폭증 | ★ 4축 중 1축 | ★★ 합의 시 폭증 |
5. 검증 환경의 한계 (전 분석기 공통)¶
- 차트/OF (S317 v2): 67거래일 강세장 (2026-02-13~04-24) — 약세/조정장 walk-forward 미실시
- 퀀트 (S312v2): 2026-04-06 1시점만 — walk-forward 표본 0
- 데이터 시작점: 차트 2022-01-03, 퀀트 FnGuide 5분기 / KOSPI 2022-01-03
- fold 안정성: 차트/OF 거의 모든 신호가 fold 0~2 단조 (시장 추세 동행) — 환경 변화 시 무력 가능
- 표본 규모: 차트 891 sample / 모듈당 표본 ≤ 30~50개 / 통계 유의성 DSR/PBO 미실행
6. 운영 권고 (정확도 ★★ + fold 안정 기준)¶
bull 진입 (D+20 ≥ 0.70, n ≥ 30 또는 합의)¶
- 5-trigger BUY_STRONG (차트 4 + OF 30분 = 5 합의) — D+20 +27.64%
- OF daily absorption_score_last >+1.5 — D+20 0.846 (n=20, +22.9pp)
- VSA spring_count_20d > 0 — D+20 0.707 (n=197)
- retr_label RESOLVING_EARLY/MID — D+20 0.665 (n=231)
bear 회피/공매 (D+20 ≤ 0.30, n ≥ 30)¶
- vp_up_down_amount_ratio_log <-0.3 (94% 하락, n=19)
- vp_volume_asymmetry_20d <-0.3 (84% 하락, n=28)
- ofm_bvc_buy_ratio_5bar <0.45 (85% 하락, n=35)
- OF daily cvd_zscore <-1 (75% 하락, n=81)
- close_pos <0.3 (75% 하락, n=377)
사용 금지/보류¶
- OF SELL 단독 (n=8 100% 양수)
- VSA strong (n=1), Bulkowski strong (n=1) — 임계 재조정 필요
- err_zscore >+1 (역방향)
- AMT decision strong (baseline 미달)
- obv_slope_z, ad_line_slope_z, cvd_slope_z, va_width <1 — 임계 조정 필요
결합 운영 (다음 단계)¶
- 퀀트 EA_QoQ TOP decile → 차트 BUY_STRONG → OF BUY (3축 합의)
- S313 4축 결합 backtest 미실시 (테마 RS + 시장환경 + 차트 + 퀀트)
7. 다음 작업 후보¶
- 임계 재조정 (obv_slope, cvd_slope, va_width, VSA strong) → 발화 빈도 복구 → 재점검
- 약세/조정장 walk-forward (S309 v4c rolling 20일로 정합 확보 후 확장)
- 4축 결합 backtest (S313) — 퀀트 + 테마 + 시장환경 + 차트
- 퀀트 walk-forward — 장기 분기 시계열 확보 (DART 직접 backfill)
- OF 30분봉 intraday lead 측정 — 30분봉 신호 → 다음 시간 가격 lead 분석
8. 산출물 (본 인벤토리 근거)¶
docs/research/2026-05-26_S317_module_audit.md(v1, 차트 14룰 + 매크로 7신호)docs/research/2026-05-26_S317_module_audit_v2.md(v2, 차트 60룰 + 한국 매크로 31신호)docs/research/2026-05-26_S317_us_macro_audit.md(US 매크로 28신호 4년)docs/research/2026-05-25_S312v2_e1_qoq_backtest.md(퀀트 E1 1시점)docs/research/2026-05-24_S307big_backtest.md(5-trigger verdict)- 코드:
scripts/discovery/*.py,scripts/discovery/triggers/*.py,scripts/quant/earnings/*.py - 데이터:
data/backtest/s317_audit/,s317_audit_v2/,s317_us_audit/,e1/