콘텐츠로 이동

S323 — v4 백테스트 (3도구, 2년+, regime 5분할, transition vs acceleration 결정)

일자: 2026-05-26 (Tue) 기간: 2023-09-01 ~ 2026-05-15 (655 영업일, 약 2.7년) universe: 일별 거래대금 가속도 상위 10종 × 655일 = 6,550 case 도구: 3도구 (차트 일봉 + 퀀트 EA + L1 매크로 게이트), OF/재료 제외 선행: v3 (S322, 8개월) — S2_strict_3 채택했으나 약세장 미검증


1. 데이터 + 분포

1.1 L1 매크로 게이트

  • ON 206 / OFF 449 (655일 중 31%)
  • v3 67% 대비 엄격 — 약세장 포함되어 매크로 OFF 비율 큼

1.2 Regime 5분할 (KOSPI 60d ret)

regime 일수 비율
strong_up 2,290 35%
up 1,500 23%
flat 1,460 22%
down 1,230 19%
strong_down 70 1%

1.3 L2 시나리오 분포 (6,550 case)

시나리오 n
imb_up_late_avoid 1,630
dist_late_avoid 1,149
imb_down_avoid 1,019
balance_emerging 749
balance_neutral 690
imb_up_acceleration_confirmed 527
transition_to_imb_up_confirmed 301

1.4 Regime × L2 cross (핵심)

  • transition_confirmed × down: 49건 (강세장 외에도 발생)
  • transition_confirmed × strong_up: 128건
  • acceleration_confirmed × strong_up: 223건 (가속은 강세장 편중)

2. 전략 비교 결과

2.1 전체 (D+20 hold)

전략 n_eval alpha_mean median win Sharpe ret_mean nav% MDD
S2_transition_only 78 +2.91% -3.41% 42.3% +0.405 +10.34% +30815% -62.7%
S2_strict_3 (연속 confirmed) 46 +1.87% -3.21% 41.3% +0.24 +8.65% +1000% -63.2%
S2 (top2, 둘 다) 233 +1.26% -4.45% 39.5% +0.18 +8.46% +72M% -93.1%
S2_acceleration_only 114 -0.64% -5.60% 35.1% -0.09 +6.88% +11K% -77.7%

2.2 핵심 발견 — v3 결론 뒤집힘

v3 (8개월 강세장)에서 채택했던 S2_strict_3 (연속 confirmed)보다 S2_transition_only (전환 초입 단일)가 모든 지표에서 우수: - alpha +2.91% vs +1.87% (+1.04pp) - Sharpe +0.405 vs +0.24 (1.7배) - win 42.3% vs 41.3%

2.3 진단

(1) "전환 초입(transition)" > "가속(acceleration)" - transition: BALANCE → IMBALANCE_UP 첫 발생 = 시장이 아직 모르는 자리 - acceleration: 이미 IMBALANCE_UP 유지 + 가속 = 시장이 이미 알고 있음 - alpha의 본질 = 정보 비대칭 → 전환 초입에 정보 우위

(2) v3 결론이 강세장 편향이었음 - v3 strong_up 80% → acceleration 많이 잡힘 - v3 "연속 confirmed" = 강세장에서 한 종목 며칠 연속 가속 = 흔한 패턴 - 2년+ 균형 잡힌 시기로 보면 단순 acceleration은 noise


3. Regime별 성과 — S2_transition_only 약세장 검증

regime n alpha win Sharpe ret
strong_up 53 +3.23% 41.5% +0.39 +12.75%
up 7 +6.50% 42.9% +1.04 +9.50%
down 8 +4.82% 50% +1.54 +7.19%
flat 9 -3.35% 33.3% -1.12 -0.32%
strong_down 1 +1.60% 100% (n=1) +9.81%

★ 약세장에서도 작동

  • down regime: alpha +4.82%, Sharpe 1.54, win 50% — 강세장보다 좋음
  • strong_down n=1만 측정 → 통계 신뢰 X (4년 동안 strong_down 70일뿐)
  • flat만 음수 — 추세 없는 시기 회피 필요

S2_strict_3 약세장 비교

regime S2_strict_3 alpha S2_transition_only alpha
strong_up +1.87% +3.23%
up +5.23% (n=4) +6.50% (n=7)
down -5.20% (n=1) +4.82% (n=8)
flat -1.27% (n=2) -3.35% (n=9)

S2_strict_3은 약세장에서 약함 (down n=1 -5.20%), transition_only는 강함.


4. PM 본질 재검증

본질 검증 결과
✅ "좋은 종목에서 충분히 수익" D+20 hold, alpha +2.91% (transition only)
✅ "정말 좋은 종목 한두 개" 일별 1종 → alpha 최대, 회전율 낮음
✅ "위험 낮추기" (약세장 작동) down regime Sharpe 1.54 — 약세장에서도 양수 alpha
❌ "기민하게 이동" (v3에서 검증, EXIT 룰 알파 깎음, 재검증 안 함)

5. 채택 모델 — S2_transition_only

5.1 진입 룰

  1. L1 매크로 게이트 ON (206/655일)
  2. L2 = transition_to_imb_up_confirmed (BALANCE → IMBALANCE_UP 전환 + 확증)
  3. acceleration 제외 (이미 늦은 자리)
  4. confirmed = supply_demand_ratio > 0 AND bvc_5bar ≥ 0.55 AND cvd_z > 0
  5. 일별 최상위 1종만 (score_universe 거래대금 가속도 기준)
  6. EA z>0 강제 X

5.2 보유 룰

  • D+20 무조건 hold
  • EXIT 룰 없음 (v3에서 검증: 모든 EXIT 룰이 알파 깎음)
  • 한국 시장 신호 lag 6-9일 → 단기 EXIT은 회복 직전 손절

5.3 결과 (2년+)

  • n = 78 진입 / 통계 의미 있는 수준
  • alpha mean +2.91%, Sharpe +0.41, MDD -62.7%
  • ret mean +10.34%, ret win 62.8%
  • 약세장(down) 작동 검증 — Sharpe 1.54

5.4 운영 시나리오

  • 매일 universe 산출 → L1 ON 확인 → transition_to_imb_up_confirmed 시나리오 1개 선택
  • D+20 hold, 평균 1개월 1~2회 진입
  • 동시 보유 평균 4-5종

6. 한계 + v5 권고

6.1 한계

  1. transition 시나리오 발생 빈도 낮음 — 301건/6550 = 4.6%, L1 ON 필터 후 78건
  2. strong_down n=1 — 극단 약세장 검증 불가
  3. flat regime 음수 alpha — 추세 없는 시기 회피 룰 필요
  4. outlier 의존성 — median -3.41% vs mean +2.91% → 소수 종목이 평균 견인
  5. 재료/OF 미사용 — 추가 검증 도구 부재

6.2 v5 권고

  1. Flat regime EXIT 룰 — 추세 없으면 진입 보류
  2. Transition 신호 강도 세분화 — supply_demand_ratio + bvc + cvd z 합산 score로 상위만
  3. 재료 도구 재도입 — 종목별 뉴스 fetch + 매칭 (S/A급 만 GO)
  4. outlier 종목 사후 패턴 분석 — alpha ≥ 20% 종목들의 사전 식별 가능 패턴

7. 결론

v4 핵심 학습 (3가지)

  1. v3 결론은 강세장 편향이었음 — 8개월 데이터로 결정한 acceleration 우선이 2년+ 전체에서는 약함
  2. transition (전환 초입) > acceleration (가속) — 정보 비대칭 우위가 alpha의 본질
  3. 약세장에서도 transition_confirmed 작동 — down regime Sharpe 1.54, win 50%

채택: S2_transition_only

  • 룰: L1 ON + L2=transition_to_imb_up_confirmed + 일별 1종 + D+20 hold
  • 성과: alpha +2.91%, Sharpe +0.41, win 42.3%, n=78
  • 약세장 작동 확인 (down +4.82%)

v3 vs v4 비교 (채택 모델 변경)

항목 v3 (S2_strict_3) v4 (S2_transition_only)
기간 8개월 강세장 2.7년 전체 regime
n_eval 19 78
alpha_mean +5.31% +2.91%
Sharpe +0.46 +0.41
약세장 검증 ❌ (down n=1) ✅ (down n=8, Sharpe 1.54)
진입 빈도 매우 낮음 적절 (1개월 ~2-3회)
신뢰도 낮음 (소표본) 충분

다음 세션 (PM 결정)

  1. v5: Flat regime EXIT 룰 추가 — flat -3.35% 회피
  2. 재료 도구 재도입 — 종목별 뉴스 fetch 활용
  3. 운영 진입 — 현재 S2_transition_only를 morning_open 루틴에 통합

8. 산출물

코드

  • scripts/backtest/sim_v4_a_extend.py
  • scripts/backtest/sim_v4_b_context.py
  • scripts/backtest/sim_v4_c_strategy.py

데이터

  • data/backtest/sim_v4/macro_gate.parquet (655일)
  • data/backtest/sim_v4/daily_universe.parquet (6,550 case + regime 라벨)
  • data/backtest/sim_v4/case_context.parquet (38 cols × 6,550)
  • data/backtest/sim_v4/strategy_{S2, S2_strict_3, S2_acceleration_only, S2_transition_only}.parquet
  • data/backtest/sim_v4/strategy_compare.json