콘텐츠로 이동

S312 — E1 g_q Face Validity (v0)

날짜: 2026-05-25 (Mon) Topic: L (시스템 재설계) — 발굴 시스템 4축 중 1축 선행: S311 (FnGuide 백필) 다음: 데이터 시점 확장 후 정식 backtest, 또는 다른 축(테마/차트/시장) 진행


1. 목표

4축 발굴 시스템의 퀀트=실적 가속 종목 축 v0 face validity 검증.

2. 진행 경과

2.1 e1_acceleration.py

  • EA = g_q − g_q-1 (He-Narayanamoorthy JAE 2020)
  • g_q = (x_q − x_q-4) / |x_q-4|
  • metric 3종: revenue, op_income, net_income
  • period_key = fy*4 + (q-1) 정수 ordering

2.2 데이터 제약 발견 (Critical)

  • FnGuide SVD_Main은 분기 5분기만 제공 (2025/03 ~ 2026/03)
  • 일부 종목은 6분기 (2024/12 포함, 회사별 다름)
  • EA 가속도 = 8분기 필요 → 표본 0건
  • g_q (YoY) = 4분기 차이 → 2026Q1만 61종 측정 가능
  • 2025Q4 g_q = 21종만 (2024/12 분기 데이터 종목 적음)

2.3 KOSPI / 종목 일봉 종료 시점 일치

  • 종목 일봉 (s303 ohlcv): 2026-05-22 종료
  • KOSPI 일봉 (FDR 신규 fetch): 2026-05-22 종료
  • 2026Q1 cutoff = 2026-05-20 (분기말 + 50d) → forward 2일만 가능 ❌ backtest 불가

2.4 Pivot: Face Validity 측정

  • backtest 불가 → 실적 가속 시그널이 2026년 YTD/M1 주가 움직임과 일치하는가 확인
  • YTD = 2026-01-02 → 2026-05-22 (~98 영업일)
  • M1 = 2026-04-22 → 2026-05-22 (~22 영업일)

3. 결과

3.1 Cross-section (2026Q1, 61종)

  • KOSPI baseline: YTD +82.10%, M1 +22.28% (강 상승장)

3.2 TOP 6 (composite_z 상위)

종목 composite_z YTD α M1 α
S-Oil +3.85 -46.4pp -26.7pp
SK하이닉스 +2.06 +104.6pp +36.4pp
대덕전자 +1.51 +133.4pp +27.2pp
SK이노베이션 +1.08 -58.3pp -30.0pp
삼성전자 +1.08 +45.5pp +12.2pp
에이피알 +0.98 -14.3pp -32.2pp
평균 +27.44pp -2.17pp

3.3 BOTTOM 6 (composite_z 하위)

종목 composite_z YTD α M1 α
한화시스템 -0.73 +15.7pp -40.7pp
하이브 -0.84 -114pp -28.3pp
LG화학 -0.86 -73.3pp -32.7pp
LG에너지솔루션 -1.00 -71.7pp -40.0pp
주성엔지니어링 -1.05 +553.5pp ★ +63.8pp
한미반도체 -1.09 +39.7pp -13.1pp
평균 +58.30pp -15.18pp

3.4 Spread

  • YTD: top α +27.4% vs bot α +58.3% → spread -30.86pp ❌
  • M1: top α -2.2% vs bot α -15.2% → spread +13.00pp ✅

3.5 win-rate (α > 0)

  • top YTD: 50.0% (3/6)
  • bot YTD: 50.0% (3/6)
  • 무차별

4. 해석

4.1 YTD 결과 부정 — outlier 영향

  • top alpha 죽인 종목: S-Oil (-46pp), SK이노베이션 (-58pp) — 정유주 2026 YTD 약세
  • 실적은 비교적 가속(영업이익 z +58, +11)이나 시장 sector 흐름 부정
  • bot alpha 띄운 종목: 주성엔지니어링 +553pp ★ — 반도체 장비 폭등
  • 실적은 감속(YoY -54% 매출)이나 기대·모멘텀에 의한 폭등
  • 표본 6×6에서 단일 outlier가 평균을 좌우

4.2 M1 결과 긍정 — 실적 발표 임박 반응

  • top decile 평균 -2.17pp, bot decile 평균 -15.18pp
  • spread +13pp는 최근 1개월에서 실적 가속 종목의 상대 강세 시사
  • 2026Q1 발표 시즌(4월~5월)과 일치 — 발표 임박 시 시장이 가속 종목을 선호

4.3 통계 한계

  • 1 시점 표본 (2026Q1)
  • 6×6 decile은 표본 부족 (decile당 6종은 outlier에 취약)
  • 단방향 시장 (KOSPI +82% YTD)에서 cross-section 의미 약화
  • 정식 통계 유의성 X — face validity 수준

5. v0 결론

시그널 가능성은 있으나 결정적 검증 X: - 모듈·파이프라인 동작 검증 ✅ - M1 spread +13pp는 우호적이나 단일 시점 표본 - YTD spread -30pp는 outlier 좌우 - 장기 분기 시계열 확보가 핵심 결손 — DART 8분기 또는 다른 소스로 backtest 가능 시점 확보 필요

6. 결함 (S313+ 보완 대상)

  1. 장기 분기 시계열 부재 (3~5년 = 12~20분기 필요)
  2. 옵션 1: DART MCP 다시 시도 (Agent에 명확한 완수 조건)
  3. 옵션 2: WiseReport AJAX endpoint 찾기 (browser inspector)
  4. 옵션 3: 유료 데이터 소스 (FnGuide 정식 API)
  5. 컨센서스 추정치 (is_estimate=False만) — E3 측정 불가
  6. EPS / ROE 미수집 — 다른 페이지 추가 파싱 필요
  7. Universe 98 → 500 확장 가능 (FnGuide 추가 백필 ~500초)

7. 산출물

  • 코드: scripts/quant/earnings/{e1_acceleration, fnguide_loader, point_in_time, cache_io}.py
  • 코드: scripts/backtest/{e1_base_rate, e1_face_validity}.py
  • 코드: scripts/backfill/{fetch_kospi_daily, _check_2024Q4_coverage, _inspect_quarter_periods, _probe_*}.py
  • 데이터: data/backtest/e1/{ea_panel, decile_stocks, face_validity_2026Q1}.parquet + .json
  • 데이터: data/dart_cache/{fnguide_fs, kospi_daily}.parquet

8. 다음 단계 (PM 결정 대기)

  1. 장기 분기 시계열 확보 재도전 — DART MCP 또는 다른 소스
  2. 테마 RS 축 (S313) 진행 — KRX 일봉 + ats_main 테마 매핑으로 즉시 구현
  3. 차트 진입 축 검증 — discovery/state_classifier 재사용
  4. 시장 환경 축 (L×S regime, v4c) 운영 진입