S321 — 4도구 결합 매매 시뮬레이션 v2 (hierarchical 4레이어)¶
일자: 2026-05-26 (Tue)
기간: 2026-04-15 ~ 2026-05-15 (21 거래일)
universe: 일별 거래대금 가속도 + 신규 부상 상위 10종 = 210 case
판정 에이전트: general-purpose 4 batch 병렬 (각 ~52 case)
v1 대비 변화: PM 4레이어 명세 적용 — L1 매크로 게이트 → L4 재료 등급 → L2 차트+OF 결합 시나리오 → L3 퀀트 확증
산출: data/backtest/sim_v2/{macro_gate, daily_universe, material_grades, case_context, verdicts/batch1-4, results, metrics, nav}
1. v2 방법론 (v1 대비 핵심 차이)¶
1.1 4 레이어 hierarchical 모델 (PM 명세 반영)¶
| 레이어 | 도구 | 질문 | 출력 |
|---|---|---|---|
| L1 매크로 게이트 | 매크로 6신호 | 진입할 시장인가? | ON/OFF |
| L4 재료 질 판정 | news/5axis-scorer | 5질문(지속성/독과점/공급자 우위/수요 열망/파급력) | S/A/B/C/D 등급 |
| L2 차트+OF 결합 | state_classifier + ofm | BALANCE→IMB_UP 전환 또는 IMB_UP 가속? | 10 시나리오 라벨 |
| L3 퀀트 확증 | EA z-score | 펀더멘탈 받침? | weight·hold_d 결정 |
1.2 L1 매크로 게이트 (lead-lag 검증된 6신호)¶
- ON: WALCL_lev HIGH OR SPY_chg HIGH OR GSPC_chg HIGH OR SOX_chg HIGH OR DEPOSIT_lev HIGH (1개 이상)
- OFF: VIX_chg LOW 발화
- 결과: 31일 중 ON 28일 / OFF 3일 (4/8 VIX 급락, 4/30·5/4 신호 없음)
1.3 Universe 재정의 (v1: 외인+기관 순매수 → v2: 거래대금 가속도)¶
- accel_ratio = MA5/MA20 거래대금
- surge_ratio = 당일/MA20 (신규 부상 가중)
- z-score 상위 10종, 5억 미만 제외 → 일별 10 × 21일 = 210 case
1.4 L4 재료 등급 (news/5axis-scorer 에이전트)¶
21 ACTIVE 이슈를 5질문 객관 평가: - S 3건 (전력설비, TSMC Q1, Google×Anthropic $40B) - A 5건 (로봇/휴머노이드, K-원전, SpaceX IPO, 삼성 파업, Section 232) - B 6건 (Warsh, CATL 6분 충전, 이란 휴전, Amazon-Globalstar, X-Energy IPO, 한국 GDP) - C 5건 + D 2건 = 11건 (등급 낮음)
1.5 L2 차트+OF 결합 시나리오 분류¶
state_classifier 일봉 + 직전 봉 state 변화 + 30분봉 OF 결합 → 10개 시나리오 라벨: - 강 진입: transition_to_imb_up_confirmed (7) / imb_up_acceleration_confirmed (27) - 약 진입: balance_with_of_strong_emerging (30) / transition_to_imb_up_weak (13) - 중립: imb_up_neutral (8) / balance_neutral (9) / imb_up_but_of_weak_caution (8) - 회피: imb_up_late_avoid (71) / dist_late_avoid (26) / imb_down_avoid (11)
1.6 verdict 룰¶
- GO: L1 ON + L4 S/A + L2 강 진입 + L3 양호/중립
- WAIT: 부분 충족 (L2 약 진입 또는 데이터 결손)
- PASS: L1 OFF OR L4 C/D/NONE OR L2 late/avoid
2. 결과 — verdict 분포¶
| verdict | n | 비율 |
|---|---|---|
| GO | 20 | 9.5% |
| WAIT | 40 | 19.0% |
| PASS | 150 | 71.4% |
v1 대비 GO 비율 23% → 9.5%로 엄격해짐 (4레이어 모든 조건 통과 필요).
3. forward alpha 결과¶
3.1 GO (n=20, valid forward ~12-15)¶
| horizon | alpha mean | median | win | sharpe | ret mean |
|---|---|---|---|---|---|
| D+5 | -8.00% | -9.59% | 30% | -4.73 | -6.50% |
| D+10 | -7.63% | -19.92% | 30% | -1.36 | +5.01% |
| D+20 | +2.12% | +12.80% | 66.7% | 0.34 | +21.24% |
핵심: GO 단기(D+5/D+10)는 underperform, D+20에서 +2.12% alpha 회복 + 12.80% median + win rate 66.7%. 장기 hold가 효과적.
3.2 WAIT (n=40)¶
| horizon | alpha mean | median | win | sharpe |
|---|---|---|---|---|
| D+5 | +8.88% | +8.58% | 65% | 3.10 |
| D+10 | +7.04% | -0.33% | 50% | 1.06 |
| D+20 | +39.87% | +6.50% | 57% | 2.21 |
의외 결과: WAIT가 GO보다 단기 alpha 우월. 약 진입 시나리오(balance_with_of_strong_emerging 등)가 D+5에 가장 강한 alpha를 보임.
3.3 PASS (n=150)¶
| horizon | alpha mean | median | win | sharpe |
|---|---|---|---|---|
| D+5 | -4.66% | -4.98% | 31% | -2.71 |
| D+10 | -7.84% | -12.93% | 19% | -1.38 |
| D+20 | -2.00% | -14.72% | 37% | -0.16 |
PASS는 일관 underperform. v1과 달리 점수 모델이 약세 종목 정확히 분류.
4. 포트폴리오 NAV (GO 진입, hold 5d, 일별 최대 5종)¶
| 지표 | 값 |
|---|---|
| 진입일수 | 12일 |
| 최종 NAV (raw return) | 0.4887 (-51.13%) |
| 최종 alpha NAV (vs KOSPI) | 0.3330 (-66.70%) |
| Sharpe (연환산) | -3.52 |
| MDD | -54.26% |
GO 단기 hold 포트폴리오는 손실 — GO 종목이 D+5 평균 -6.50% raw로 진입 직후 단기 조정. PM 시나리오대로면 hold 기간을 D+20+로 늘려야 함.
5. L4 × L2 매트릭스 (verdict 분포)¶
| L4 \ L2 | GO | WAIT | PASS |
|---|---|---|---|
| S × transition_to_imb_up_confirmed | 5 | 0 | 0 |
| S × imb_up_acceleration_confirmed | 8 | 0 | 1 |
| S × balance_with_of_strong_emerging | 0 | 10 | 0 |
| S × dist_late_avoid | 0 | 0 | 7 |
| S × imb_up_late_avoid | 0 | 0 | 19 |
| A × transition_to_imb_up_confirmed | 2 | 0 | 0 |
| A × imb_up_acceleration_confirmed | 5 | 0 | 0 |
| A × dist_late_avoid | 0 | 0 | 11 |
| A × imb_up_late_avoid | 0 | 0 | 28 |
| NONE × * | 0 | 6 | 76 |
관찰: - GO 20건 = 100% L4 S/A + L2 confirmed 시나리오 (transition + acceleration) - S × imb_up_acceleration_confirmed 9건 중 GO 8건 (1건은 L3 음수로 차감) - L4 S/A 종목의 imb_up_late_avoid/dist_late_avoid는 일관 PASS — 정확한 회피
6. v1 vs v2 비교¶
| metric | v1 (외인+기관 net top5) | v2 (가속도 top10 + hierarchical) |
|---|---|---|
| 기간 | 4/22-5/21 (20일) | 4/15-5/15 (21일) |
| 케이스 | 100 | 210 |
| GO 비율 | 23% | 9.5% (엄격) |
| GO alpha_d10 | -8.90% | -7.63% (큰 차이 없음) |
| GO alpha_d20 | 측정 불가 (n=2) | +2.12% (n=15) |
| PASS alpha_d10 | +3.84% (역설) | -7.84% (정상) |
| WAIT alpha_d10 | -13.27% | +7.04% |
| Portfolio NAV (hold 5d) | +36.53% (KOSPI 강세 효과) | -51.13% (GO 단기 손실) |
v2 개선점: 1. PASS alpha 음수로 정상화 — v1의 GO/PASS 부호 역전 해소 2. GO D+20 alpha 양수 회복 (+2.12%, win 66.7%, median +12.80%) 3. L4 × L2 매트릭스가 의미 있는 분류 — S/A + confirmed가 GO 100% 정확
v2 한계: 1. GO 단기 D+5/D+10이 여전히 음수 — markup early/mid 진입 후 단기 조정 패턴 2. WAIT가 단기 alpha 가장 강함 — 약 진입(balance_with_of_strong_emerging)이 D+5에 더 빠르게 반응. GO 기준이 너무 엄격하거나 진입 timing이 후행
7. 핵심 발견¶
7.1 시나리오 라벨이 의미 있음 (v1 점수 합산 대비)¶
- v1: 단순 +1/-1 합산 → PASS 강세 종목 다수 (336260 +78.86%)
- v2: imb_up_late_avoid 시나리오로 명확히 분리 → PASS alpha -7.84% (정상)
7.2 GO 시점 단기 조정 패턴¶
- GO 진입 후 D+5 -6.50%, D+10 +5.01% (회복), D+20 +21.24%
- 즉 GO 진입 직후 약 1주일 단기 조정 → 회복 → 추세 가속
- 단기 매매보다 D+20 swing 보유가 적합
7.3 WAIT가 단기 alpha 강함¶
- balance_with_of_strong_emerging (30 case) 등 약 진입이 D+5 +8.88% alpha
- WAIT 시나리오 일부 (S/A 등급 + OF emerging)는 GO 승격 검토 필요
7.4 NONE 등급의 함정¶
- L4 NONE인 case 82건이 PASS 대부분 (76건) — 재료 매칭 안 된 종목은 진입 회피
- 단 NONE 일부가 거래대금 가속에 노출 — universe 정의에 재료 매칭 게이트 추가 가능
8. v3 개선 권고¶
8.1 진입 시점 + hold 기간 재조정¶
- D+5 hold 단기 매매 → D+20 swing으로 hold 연장
- 또는 GO 진입을 D+1~+3 지연 (단기 조정 끝난 후)
8.2 WAIT 시나리오 일부 승격¶
- S/A × balance_with_of_strong_emerging (S 10건 / A 6건) → 별도 backtest, alpha 좋으면 GO
8.3 L4 등급 시간 가중¶
- 매칭된 이슈의 신선도(48시간 이내) 추가 보너스 → 오래된 S급은 이미 시장 반영
8.4 30분봉 OF 정확도¶
- 현재 ofm_cvd_zscore가 t0 당일 마지막 봉까지 — 다음날 갭 가정인지 명시 필요
- 매수 시점을 다음날 시가로 변경하면 단기 alpha 회복 가능
9. 산출물¶
코드 (신규 5개)¶
scripts/backtest/sim_v2_a_macro_gate.pyscripts/backtest/sim_v2_b_universe.pyscripts/backtest/sim_v2_c_prepare_issues.pyscripts/backtest/sim_v2_d_context.pyscripts/backtest/sim_v2_f_metrics.py
데이터¶
data/backtest/sim_v2/macro_gate.parquet(31일 ON/OFF)data/backtest/sim_v2/daily_universe.parquet(210 case)data/backtest/sim_v2/issues_for_scoring.json(21 이슈)data/backtest/sim_v2/material_grades.json(S/A/B/C/D 등급)data/backtest/sim_v2/case_context.parquet(38 cols × 210)data/backtest/sim_v2/case_context.json(305KB)data/backtest/sim_v2/verdicts/batch1-4.jsonl(210 verdict)data/backtest/sim_v2/results.parquetdata/backtest/sim_v2/metrics.jsondata/backtest/sim_v2/nav.parquet
10. 결론¶
v2 hierarchical 4레이어 모델 평가:
✅ PM 명세 정확 구현: - L1 매크로 게이트 → L4 재료 → L2 차트+OF → L3 퀀트 순차 진행 - 차트+OF 결합 시나리오 10개로 단순 점수 합산 극복 - L4 재료를 5질문 기반 등급화
✅ v1 문제 해결: - PASS alpha 정상화 (-7.84%, v1 +3.84%에서 부호 정상) - L4 × L2 매트릭스가 의미 있는 분류 - GO 100% L4 S/A + L2 confirmed (정밀도 ↑)
⚠ 남은 문제: - GO 단기(D+5/D+10) 여전히 음수 — 진입 timing 또는 hold 기간 재조정 필요 - WAIT가 단기 alpha 더 강함 — 약 진입 시나리오 일부 GO 승격 검토 - Portfolio NAV(hold 5d) -51% — hold 기간 D+20으로 연장 시 +21% 회복 기대
다음 단계 (PM 결정): 1. v3 — D+20 hold + WAIT 일부 승격 + 진입 D+1 지연 2. WAIT 시나리오 (balance_with_of_strong_emerging) 단독 backtest로 alpha 측정 3. 매수 시점 명세 명확화 (당일 종가 vs 다음날 시가)