콘텐츠로 이동

발굴 시스템 피처 명세 (후보 — 백테스트 검증 대기)

작성: 2026-05-22 (S298 연장) | 상위 Topic: docs/topics/topic_system_redesign.md 선행 리서치: docs/research/20260522_chart_flow_structuring_research.md(R3) / ..._quant_discovery_funnel_research.md(R4) / ..._fundamental_event_signal_research.md(R5)


0. 이 문서의 지위 — 확정 스펙 아님

이 문서의 모든 피처는 후보(candidate)다. 외부 리서치에서 도출된 방법론을 우리 도구·데이터에 매핑한 것일 뿐, 그대로 적용되지 않는다.

모든 피처는 다음 경로를 거쳐야 시스템에 입장한다:

후보 피처 → 백테스트(한국 코퍼스, look-ahead 차단) → 한국시장·우리시스템 커스터마이징 → 채택/기각

이는 리서치가 이미 못 박은 전제다: - R3 S3: base rate는 외부 신뢰 불가 → 한국 코퍼스 자체 측정. - R3 S7: 모든 임계값은 미국·BTC 캘리브레이션값 → 한국 시총·거래대금 tier별 재보정 필수. - R4 CF5: DSR + walk-forward(WFE) + 다중검정 FDR 보정 + base rate 대조. 우위 없으면 시그널 아님. - R3 S6: 모든 피처는 시점 t 이전 데이터로만 산출. 사후 라벨은 학습 라벨 전용.

Status 범례: ⬜ 후보(미검증) / 🔬 백테스트 중 / ✅ 채택 / ❌ 기각

현재 전 항목 ⬜ 후보.


1. 피처의 두 역할

역할 정의 데이터
랭킹 피처 전 종목을 횡단면으로 줄세워 후보를 압축 (발굴) 키움 가격·수급, DART 재무·이벤트, 테마
조건변수 base-rate 확률표를 분기 (게이트, 발굴 아님) FRED 매크로, 글로벌자산, 파생

퀀트 = 횡단면 랭킹 + 베이스레이트. 매크로·글로벌자산은 종목을 고르지 않고 조건만 분기한다.


2. 랭킹 피처 (종목 발굴)

2-1. 키움 REST (ka10001) — 한국 일봉 OHLCV

가격 | 피처 | 산식 | 레퍼런스 | Status | |---|---|---|---| | range_pos_52w | 52주 range 내 위치 0~100 | R3 §3-5 Bulkowski | ⬜ | | price_zscore_20d | (가격−MA20)/σ | R3 Layer A | ⬜ | | drawdown_60d | 60일 고점 대비 낙폭 | R3 Layer A | ⬜ | | RS Rating | 0.4·ROC(63)+0.2·ROC(126)+0.2·ROC(189)+0.2·ROC(252) → 1~99 백분위 | R4 §3-2 IBD/skyte | ⬜ | | 모멘텀 12-1/6-1/3-1 | 최근 1개월 제외 누적수익률 | R4 Jegadeesh-Titman | ⬜ | | 신고가 근접 | 현재가/52주최고가, 0.85+ 트리거 | R4 George-Hwang | ⬜ |

거래량 + VSA (OHLCV만으로 산출) | 피처 | 산식 | 레퍼런스 | Status | |---|---|---|---| | RVOL_20d / vol_zscore | 거래량/20일평균, log-volume z | R4 RVOL StockCharts | ⬜ | | CMF_20d / OBV_slope_z | Chaikin Money Flow −1~+1 | R3 CMF StockCharts | ⬜ | | VSA 3원시지표 | spread=H−L, close_pos=(C−L)/spread, vol_ratio=vol/SMA(vol,7) | R3 §3-1 PyQuantLab VSA | ⬜ | | err_zscore | |ΔC|/(vol_ratio×ATR_norm), 음극단=absorption | R3 §3-1 | ⬜ | | VSA 8신호 + upthrust/spring | 거래량×스프레드×추세×봉방향 조합 | R3 Tom Williams | ⬜ |

오더플로 근사 (틱 부재 — 일/분봉, R3 CF4) | 피처 | 산식 | 레퍼런스 | Status | |---|---|---|---| | approx_delta_bvc | 표준화수익률 t분포 CDF → 매수비율 (정확도 ~80%) | R3 §3-3 BVC Shohfi | ⬜ | | close_loc_value / 꼬리비율 | (C−L)/(H−L), 아랫꼬리=받침흡수 | R3 §3-3 | ⬜ | | CVD_zscore / CVD-price divergence | 누적델타 vs 가격 발산 ±1 | R3 CVD | ⬜ |

Auction/Profile + Wyckoff | 피처 | 산식 | 레퍼런스 | Status | |---|---|---|---| | POC / VAH·VAL / VA_width_atr | TPO 70% 영역 | R3 §3-2 mypivots | ⬜ | | HVN/LVN / rotation_factor | 거래량 봉우리·골짜기, 봉별 고저갱신 ±1 합산 | R3 QuantVPS | ⬜ | | Wyckoff phase + events | ACC/MARKUP/DIST/MARKDOWN, SC·Spring·SOS… | R3 §3-4 StockCharts | ⬜ | | A/D Line / climax 거래량 배수 | MFM=((C−L)−(H−C))/(H−L), ADL+=MFM×Vol | R3 §3-4 | ⬜ |

2-2. 키움/KRX — 외국인·기관 일별 순매수 (수급)

피처 산식 레퍼런스 Status
foreign_flow_z / inst_flow_z 외인·기관 순매수(거래대금 대비) z-score R3 Layer A
flow_relative_pct 수급 절대량의 거래대금 대비 백분위 R3 Layer A
누적·매집연속일수 5/20일 누적 순매수 z, 연속 매수일 R3 SEN-1 누적프레임

2-3. DART MCP (get_financial_statement) — 재무

피처 산식 레퍼런스 Status
EarnAccel (★핵심) EarnGrowth_t − EarnGrowth_{t-1} (성장률 2차미분) R5 §2-2 He-Narayanamoorthy JAE 2020
EarnGrowth (EPS_t−EPS_{t-4})/Price_{t-1} 동일
SUE (EPS_t−EPS_{t-4})/σ R5 QuantConnect SUE
revenue_driven 플래그 매출 서프라이즈 동반 여부 → 가속의 질 R5 Jegadeesh-Livnat
loss_narrowing / quarters_to_breakeven (적자_{t-1}−적자_t)/|적자_{t-1}| 외삽 R5 §2-3
op_leverage / gm_delta_bp_2q EPS성장%/매출성장%, 마진 2분기 확대 R5 Global X

2-4. DART MCP (get_disclosure_list) — 이벤트

피처 산식 레퍼런스 Status
이벤트 CAR AR=R−(α+β·Rm), CAR=ΣAR, 유형별 과거분포=priors R5 §2-4 MacKinlay
코스피200 정기변경 (컷오프 마진)×(예상 패시브매수/20일 거래대금) R5 Robeco
자사주 소각 소각여부×저PBR×첫발표 가중 R5 §2-4
내부자 클러스터 거래금액/연봉 × 클러스터수 × 직급가중 R5 Zhao arXiv:2602.06198

2-5. 테마 (키움 거래대금 + 종목 상관)

피처 산식 레퍼런스 Status
RRG 사분면 JdK RS-Ratio × RS-Momentum, KOSPI 대비 100교차 R4 §3-3 StockCharts RRG
상관 클러스터 ρ→거리 d=√(2(1−ρ))→MST+계층클러스터링 R4 Mantegna MST
거래대금 점유율 + breadth_z 신테마 부상 알림 R4 §2
Isolation Forest anomaly 다차원 피처 outlier 탐지 R4 Springer 2025

3. 조건변수 (게이트 — 발굴 아님)

3-1. FRED (fredapi — 작동 중)

피처 산식 레퍼런스 Status
순유동성 WALCL−TGA−RRP (+ RRP 완충재 잔량 경고) 트레이더 커뮤니티 프록시(학술 아님)
HY 스프레드 / 2-10 커브 보유 중 (BAMLH0A0HYM2 등) ✅ 수집 중

3-2. 글로벌자산(yfinance) + 파생(fetch_derivatives_sentiment)

피처 산식 레퍼런스 Status
risk-on/off 스코어 구리/금·VIX·HY·DXY 합성 보유(risk_on_off) ✅ 산출 중
VKOSPI percentile / 베이시스_z / 외인선물 누적 파생 포지셔닝 보유(derived) ✅ 산출 중

3-3. 뉴스(WebSearch) — 랭킹 가점

피처 산식 레퍼런스 Status
재료 등급 S~D / 뉴스빈도_z NC-3 등급체계 보유(news 시스템) ✅ 운용 중

4. 데이터 갭 (수집 경로 확인 필요)

항목 상태 조치
FnGuide 컨센서스 (ERR·Diffusion·Dispersion·Revision Momentum) 프로그래밍 접근 미확인 접근 가능성 조사. 불가 시 중소형주는 시계열 기대모형(직전 4분기)으로 대체 (R5 CF4)
외국인/기관 종목별 일별 순매수 수집 경로(키움 REST vs pykrx) 미확정 경로 확정
Darvas Box 돌파 R4에 있으나 리테일 기법 채택 보류 — 백테스트 우선순위 후순위

5. 백테스트 커스터마이징 대상 (그대로 못 쓰는 것)

대상 사유 재보정 방법
VSA 임계값 (vol 2.0/1.2/0.5, spread 1.2/0.83, close 0.7/0.3) PyQuantLab BTC 캘리브레이션 한국 시총·거래대금 tier별 재산출 (R3 S7)
Wyckoff climax 거래량 배수 (×2.0/×1.5), 최소 range (8%/15%) TradingView 범용값 한국 종목군별 재보정
RS Rating·모멘텀 윈도우 (63/126/189/252, 12-1) 미국 일봉 기준 한국 테마 사이클 3~5세션 → 윈도우 단축 검토 (R4 CF6)
Bulkowski 패턴 base rate (failure rate·avg rise) 미국 일봉 통계 방법론만 차용, 수치는 한국 코퍼스 자체 측정
이벤트 CAR priors (자사주·내부자·리밸런싱) 미국·해외 분포 한국 DART 이벤트 코퍼스로 유형별 CAR 분포 재측정

6. 검증 절차 (R4 CF5 — 의무)

각 후보 피처는 다음을 통과해야 ✅ 채택: 1. base rate 대조 — 피처 분위별 D+N 수익률 vs 기저율. 우위 없으면 ❌ 기각. 2. walk-forward + WFE — out-of-sample/in-sample 수익 비율. WFE < 0.5 = 커브피팅 → 기각. 3. Deflated Sharpe Ratio — 개발 중 돌린 백테스트 횟수 전부 기록(선택편향 보정). 4. 레짐 분리 — 조건변수(레짐)별 base rate 분리 산출 (R3 CF5). 5. look-ahead 차단 — 롤링 정규화 + 빈티지 데이터 + 시점 t 경계.


7. 다음 단계

  1. 데이터 갭 3건 수집 경로 확정 (§4).
  2. base-rate 엔진 설계 — 한국 일봉·수급 코퍼스로 D+N 측정 (look-ahead 차단).
  3. 첫 백테스트: "큰 상승 다음날" — 본 명세의 피처로 사례 구조화 → base rate 측정 → 무조건부 vs 레짐 조건부 우위 검증. 4단계 파이프(피처화→정규화→조건분기→검증) 첫 가동.
  4. 통과 피처부터 Status ✅로 갱신하며 누적.