콘텐츠로 이동

S322 — v3 백테스트 (3도구, 8개월 확장, 결합 전략 비교)

일자: 2026-05-26 (Tue) 기간: 2025-09-01 ~ 2026-05-15 (171 영업일, 8개월) universe: 일별 거래대금 가속도 + 신규 부상 상위 10종 = 1,710 case 도구: 3도구 — 차트 일봉(state_classifier) + 퀀트(EA) + 매크로(L1 게이트). OF 30분봉/재료 제외 (PM 지시 + ISSUE_LOG 구간 한계) PM 본질: "좋은 종목에서 충분히 수익 + 시장/종목 흐름에 따라 이동으로 위험 낮추고 수익 극대화"


1. 데이터 + 분포

1.1 L1 매크로 게이트 (lead-lag 검증 6신호)

  • ON: WALCL_lev/SPY_chg/GSPC_chg/SOX_chg/DEPOSIT_lev HIGH 1개+ AND VIX_chg LOW 아님
  • 결과: 114 ON / 57 OFF (171일 중 66.7% ON)

1.2 Universe — 거래대금 가속도 + 신규 부상

  • accel_ratio = MA5/MA20, surge_ratio = 당일/MA20
  • z 상위 10종, 5억 미만 제외

1.3 L2 시나리오 (차트 단독 재정의, OF 제외)

시나리오 n 의미
imb_up_late_avoid 517 회피
dist_late_avoid 299 회피
balance_emerging 243 전환 준비
imb_up_acceleration_confirmed 169 ★ 강 진입
balance_neutral 157 중립
transition_to_imb_up_confirmed 105 ★ 강 진입
imb_down_avoid 84 회피

2. 전략 비교 — 핵심 표

2.1 전체 비교 (D+20 hold 기준)

전략 n hold_d alpha_mean win ret_mean KOSPI Sharpe
S1 고정 5d 151 5.0 -1.91% 36% +0.79% +2.81% -1.02
S2 고정 20d (top2) 128 20.0 +1.80% 38% +12.20% +10.71% +0.20
S3 동적 EXIT (원안) 151 4.8 -2.01% 40% -0.44% -1.35
S3a L2 flip만 청산 151 12.5 -3.47% 38% +3.35% -0.75
S3b L1+L2 동시 151 17.2 -0.44% 35% +8.48% -0.06
S3c L1 3일 연속 151 10.9 -3.18% 39% +3.70% -0.75
S2_strict_3 연속 confirmed 19 20.0 +5.31% 42% +16.39% +0.46
S2_strict_1 EA z>0 강제 13 20.0 -15.00% 8% -0.89% -2.79

2.2 진단

(1) S2 고정 20d hold가 모든 동적 EXIT 변형보다 우수 - alpha +1.80%, Sharpe +0.20 — 유일하게 alpha 양수 + Sharpe 양수 - EXIT 룰은 모두 알파 깎음 (-0.44% ~ -3.47%) - 한국 시장 신호 lag(6~9일) 특성상 단기 EXIT는 회복 전 손절

(2) S2_strict_3 (연속 confirmed)가 최우수 - 같은 종목이 1-3일 내 재발화 = 지속성 시그널 - alpha +5.31% (S2 대비 +3.51pp), Sharpe 0.46 (S2 0.20의 2.3배) - MDD -47.47% (S2 -92.41%의 절반) - 단 n=19 → 통계 신뢰도 보강 필요

(3) S2_strict_1 (EA z>0 강제) 최악 - alpha -15.00%, win 8% → 펀더멘탈 좋은 종목이 이미 고평가 - "EA TOP decile = alpha"는 시점·universe 의존성 강함

(4) transition vs acceleration - transition_to_imb_up_confirmed: alpha +4.47% (n=40) - imb_up_acceleration_confirmed: alpha +0.58% (n=88) - 전환 초입 > 가속 — 이미 가속 중인 종목 추격 X


3. PM 본질 검증

본질 1: "좋은 종목에서 충분히 수익"

검증: S2 + D+20 hold = alpha +1.80%, S2_strict_3 = +5.31% - D+5 hold는 -1.91% (실패), D+20 hold만 작동 - 한국 시장에서 좋은 신호는 1개월 견디면 수익

본질 2: "시장/종목 흐름에 따라 이동, 위험 낮추고 수익 극대화"

반증: 모든 EXIT 룰이 알파 깎음 - L1 OFF 단독 청산 → -2.01% (즉시 청산 = 단기 노이즈 청산) - L2 flip 청산 → -3.47% (단기 변동성으로 손절) - L1 OFF 3일 연속 → -3.18% - L1 + L2 동시 → -0.44% (가장 덜 나쁘지만 여전히 음수)

한국 시장 특성 — "기민하게 이동"이 작동 안 하는 이유: 1. 신호 발화 후 D+1~D+8 단기 조정 일관 패턴 2. D+9~D+20에 회복/추세 → 단기 EXIT은 회복 직전 손절 3. lead-lag 검토 결과 신호 lead 6-9일 = D+5 EXIT은 너무 빠름

본질 3: "정말 좋은 종목 한두 개"

검증: S2_strict_3 (일별 1종) Sharpe 2.3배 - 같은 종목 연속 confirmed = "진짜 추세" - 047040(대우건설) 5회, 032820 2회 등 소수 outlier가 평균 견인 - alpha ≥ 10% 종목 28% — outlier 의존성 인정


4. 채택 모델 — S2_strict_3

4.1 진입 룰

  1. L1 매크로 게이트 ON (114/171일)
  2. L2 = imb_up_acceleration_confirmed (또는 transition_to_imb_up_confirmed)
  3. 연속성 조건: 직전 1-3일 내 같은 종목이 confirmed 발화
  4. 일별 최상위 1종만 (score_universe 기준)
  5. EA z>0 강제 X (오히려 알파 깎음)

4.2 보유 룰

  • D+20 무조건 hold (EXIT 룰 없음)
  • 단기 -X% 손절 X
  • L1 OFF 무시, L2 flip 무시

4.3 결과 (D+20)

  • alpha mean +5.31%, median -9.92%, win 42%
  • ret mean +16.39%, KOSPI +10.71% 상회
  • Sharpe +0.46, MDD -47.47%
  • top 5% +88.9% / bot 5% -36.6% → outlier 의존

4.4 운영 시나리오

  • 매일 universe 산출 → L1 ON 확인 → 어제 confirmed 였던 종목 중 오늘도 confirmed인 종목 1개 선택
  • 진입 후 20거래일 hold, 어떤 신호도 무시
  • 일별 최대 1종 신규 진입 → 평균 동시 보유 4-5종

5. 한계 + v4 권고

5.1 한계

  1. S2_strict_3 n=19 — 통계 신뢰도 보강 필요
  2. outlier 의존 — 평균 alpha를 소수 종목이 견인 (047040 등)
  3. 재료 도구 미사용 — ISSUE_LOG 구간 부족
  4. OF 30분봉 미사용 — PM 지시
  5. 8개월 = 강세장 일색 — 약세장 검증 못함

5.2 v4 권고

  1. 기간 확장 2년+ (2023-09 ~ 2026-05) → S2_strict_3 n 100+ 확보 + 약세장 포함
  2. outlier 종목 사후 분석 — 047040(대우건설) 같은 종목이 사전 식별 가능한가?
  3. 거래대금 surge_ratio 패턴?
  4. chart phase 전환 시점 패턴?
  5. L4 재료 다시 도입 — fetch_stock_news_history.py로 종목별 뉴스 시계열 + WebSearch 테마 매핑
  6. 다중 시점 진입 — D0 / D+1 / D+2 분산 진입으로 단기 조정 완화 가능성 검토

6. 결론

v3 학습 (3가지)

  1. PM 본질 "충분히 hold"는 검증됨 — D+20 alpha 양수
  2. PM 본질 "기민한 이동"은 데이터로 부정됨 — 모든 EXIT 룰이 알파 깎음
  3. "정말 좋은 종목 1-2개"는 연속 confirmed로 식별 가능 — Sharpe 2.3배

v3 채택: S2_strict_3 (연속 confirmed + D+20 무조건 hold + 일별 1종)

  • alpha +5.31%, Sharpe +0.46, MDD -47.47%
  • 단 n=19로 통계 보강 필요

다음 세션 (PM 결정)

  1. v4: 2년+ 기간 확장 + 약세장 포함 → S2_strict_3 재검증
  2. outlier 종목 사후 분석 → 사전 식별 가능 패턴 탐색
  3. 재료 도구 재도입 (종목별 뉴스 fetch 활용)

7. 산출물

코드 (5개 신규)

  • scripts/backtest/sim_v3_a_gate_universe.py
  • scripts/backtest/sim_v3_b_issue_panel.py (ISSUE_LOG 한계 진단)
  • scripts/backtest/sim_v3_c_context.py
  • scripts/backtest/sim_v3_strategy.py (S1~S4)
  • scripts/backtest/sim_v3_1_exit_variants.py (S3a~S3d)
  • scripts/backtest/sim_v3_phase3_precision.py (S2_strict_1~3)

데이터

  • data/backtest/sim_v3/{macro_gate, daily_universe, case_context}.parquet
  • data/backtest/sim_v3/{issues_all, issue_active_panel}.json (한계 진단용)
  • data/backtest/sim_v3/strategy_{S1, S2_hold20, S3_dynamic, S3a~S3d}.parquet
  • data/backtest/sim_v3/phase3_{S2, S2_strict_1~3}.parquet
  • data/backtest/sim_v3/{strategy_compare, strategy_v3_1_compare, phase3_compare}.json