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 진입 룰¶
- L1 매크로 게이트 ON (114/171일)
- L2 = imb_up_acceleration_confirmed (또는 transition_to_imb_up_confirmed)
- 연속성 조건: 직전 1-3일 내 같은 종목이 confirmed 발화
- 일별 최상위 1종만 (score_universe 기준)
- 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 한계¶
- S2_strict_3 n=19 — 통계 신뢰도 보강 필요
- outlier 의존 — 평균 alpha를 소수 종목이 견인 (047040 등)
- 재료 도구 미사용 — ISSUE_LOG 구간 부족
- OF 30분봉 미사용 — PM 지시
- 8개월 = 강세장 일색 — 약세장 검증 못함
5.2 v4 권고¶
- 기간 확장 2년+ (2023-09 ~ 2026-05) → S2_strict_3 n 100+ 확보 + 약세장 포함
- outlier 종목 사후 분석 — 047040(대우건설) 같은 종목이 사전 식별 가능한가?
- 거래대금 surge_ratio 패턴?
- chart phase 전환 시점 패턴?
- L4 재료 다시 도입 — fetch_stock_news_history.py로 종목별 뉴스 시계열 + WebSearch 테마 매핑
- 다중 시점 진입 — D0 / D+1 / D+2 분산 진입으로 단기 조정 완화 가능성 검토
6. 결론¶
v3 학습 (3가지)¶
- PM 본질 "충분히 hold"는 검증됨 — D+20 alpha 양수
- PM 본질 "기민한 이동"은 데이터로 부정됨 — 모든 EXIT 룰이 알파 깎음
- "정말 좋은 종목 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 결정)¶
- v4: 2년+ 기간 확장 + 약세장 포함 → S2_strict_3 재검증
- outlier 종목 사후 분석 → 사전 식별 가능 패턴 탐색
- 재료 도구 재도입 (종목별 뉴스 fetch 활용)
7. 산출물¶
코드 (5개 신규)¶
scripts/backtest/sim_v3_a_gate_universe.pyscripts/backtest/sim_v3_b_issue_panel.py(ISSUE_LOG 한계 진단)scripts/backtest/sim_v3_c_context.pyscripts/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}.parquetdata/backtest/sim_v3/{issues_all, issue_active_panel}.json(한계 진단용)data/backtest/sim_v3/strategy_{S1, S2_hold20, S3_dynamic, S3a~S3d}.parquetdata/backtest/sim_v3/phase3_{S2, S2_strict_1~3}.parquetdata/backtest/sim_v3/{strategy_compare, strategy_v3_1_compare, phase3_compare}.json