S307 백테스트 — S305 baseline 대비 변경 효과 측정¶
Date: 2026-05-24 (Sun) Topic: L (시스템 재설계) Predecessor: S305 (retrace 게이트 백테스트), S307 trigger 변경
1. 설계¶
- S303/S305와 동일 universe (KOSPI 50 + KOSDAQ 30 = 80종목), 동일 기간(2022-01 ~ 2026-04-15), 매 5 영업일
- OHLCV 캐시 재사용 (s303/ohlcv)
- 차이: S307 trigger 변경 = cp 동적 임계(252봉) + AMT POC 정체 동적화 + OF 자동 제외(4 trigger)
- 총 samples: 16,172 (S305와 동일)
- 소요: 약 21분
2. Verdict 분포 비교¶
| Verdict | S305 | S307 | delta | delta % |
|---|---|---|---|---|
| MIXED_BUY_LEAN | 6,233 | 6,310 | +77 | +1.2% |
| MIXED_SELL_LEAN | 3,247 | 3,353 | +106 | +3.3% |
| BUY | 2,625 | 2,556 | -69 | -2.6% |
| MIXED | 1,552 | 1,608 | +56 | +3.6% |
| AVOID_STRONG | 289 | 902 | +613 | +212.1% |
| AVOID | 1,473 | 763 | -710 | -48.2% |
| CAUTION | 242 | 251 | +9 | +3.7% |
| WATCH | 231 | 244 | +13 | +5.6% |
| BUY_STRONG | 241 | 144 | -97 | -40.2% |
| NEUTRAL | 39 | 41 | +2 | +5.1% |
핵심 흐름¶
- AVOID 절반(710개) → AVOID_STRONG —
strong_threshold = max(3, n_total - 1)공식. OF 제외로 4 trigger 모드 → threshold 4 → 3. sell_votes 3개면 STRONG 자동 충족. - BUY_STRONG 40% 감소 — 동일 원리: BUY 4표 강조건이 사라지면서 BUY로 강등.
- 변경 매트릭스: 90.9% (14,700 sample) 동일, 9.1% (1,472 sample) 변경.
3. 변화 매트릭스 (S305 → S307, 주요 흐름)¶
S305 AVOID (1473): → AVOID 741 + AVOID_STRONG 683 + MIXED_SELL_LEAN 36 + ...
S305 AVOID_STRONG ( 289): → AVOID_STRONG 199 + MIXED_SELL_LEAN 90
S305 BUY (2625): → BUY 2469 + WATCH 14 + ...
S305 BUY_STRONG ( 241): → BUY 36 + ...
S305 MIXED (1552): → MIXED_SELL_LEAN 57 + WATCH 7 + ...
S305 MIXED_SELL_LEAN (3247): → MIXED_SELL_LEAN 3161 + AVOID 16 + AVOID_STRONG 20
4. Verdict별 D+20 alpha 변화¶
| Verdict | n305 | n307 | mean305 | mean307 | delta | win305 | win307 |
|---|---|---|---|---|---|---|---|
| AVOID | 1473 | 763 | +3.44% | +3.45% | +0.01pp | 57.1% | 55.8% |
| AVOID_STRONG | 289 | 902 | +2.70% | +3.42% | +0.72pp | 56.4% | 58.0% |
| BUY | 2625 | 2556 | +4.77% | +4.75% | -0.02pp | 54.6% | 54.5% |
| BUY_STRONG | 241 | 144 | +5.67% | +4.62% | -1.05pp | 56.9% | 50.7% |
| CAUTION | 242 | 251 | +1.29% | +1.30% | +0.01pp | 45.9% | 46.6% |
| MIXED | 1552 | 1608 | +3.03% | +3.33% | +0.30pp | 53.3% | 53.7% |
| MIXED_BUY_LEAN | 6233 | 6310 | +4.57% | +4.55% | -0.02pp | 53.1% | 53.2% |
| MIXED_SELL_LEAN | 3247 | 3353 | +4.08% | +4.00% | -0.08pp | 57.2% | 57.2% |
| NEUTRAL | 39 | 41 | +1.86% | +2.85% | +0.99pp | 59.0% | 63.4% |
| WATCH | 231 | 244 | +1.76% | +2.02% | +0.26pp | 55.0% | 55.3% |
핵심¶
- AVOID_STRONG 표본 3.1배 증가에도 D+20 alpha 유지·증가 (+0.72pp) — 새 AVOID_STRONG도 진짜 신호. SELL 강도 결정에 의미.
- BUY_STRONG 표본 40% 감소 + D+20 alpha -1.05pp — S305 BUY_STRONG 일부가 평범한 BUY로 강등됨. D+60도 -2.42pp. 강한 BUY 신호의 정밀도 약화.
- MIXED 약간 개선 — D+60 +0.87pp. 미세하지만 일관 방향.
5. 핵심 verdict 호라이즌별 (S307 - S305)¶
BUY_STRONG (n: 241 → 144, -40%)¶
| 호라이즌 | S305 | S307 | delta |
|---|---|---|---|
| D+5 | +1.71% | +1.32% | -0.39pp |
| D+10 | +3.56% | +4.03% | +0.47pp |
| D+20 | +5.67% | +4.62% | -1.05pp |
| D+60 | +18.57% | +16.15% | -2.42pp |
→ STRONG 분류의 정밀도 약화. OF 제외로 trigger 수 감소 시 "강한 합의 4표"가 더 쉽게 충족되는 반작용.
AVOID_STRONG (n: 289 → 902, +212%)¶
| 호라이즌 | S305 | S307 | delta |
|---|---|---|---|
| D+5 | +0.69% | +1.22% | +0.53pp |
| D+10 | +1.49% | +2.04% | +0.55pp |
| D+20 | +2.70% | +3.42% | +0.72pp |
| D+60 | +9.35% | +9.69% | +0.34pp |
→ 표본 ×3.1 증가에도 alpha 유지 = SELL 강도 신호의 일관성 유지.
BUY / MIXED_BUY_LEAN / MIXED_SELL_LEAN¶
거의 동일 (±0.13pp). 단순 BUY/LEAN 분류는 S307 변경 영향 최소.
6. 5건 명백 오답 케이스¶
목표 시점 ±10일 인접 sample 매칭 결과 (백테스트 SAMPLE_INTERVAL=5 영업일):
| Case | 시점 (인접) | S305 verdict | S307 verdict | 실제 D+60 |
|---|---|---|---|---|
| A3 한화에어로 | 2025-09-26 | MIXED_BUY_LEAN | MIXED_BUY_LEAN | -9.10% |
| A3 한화에어로 | 2025-10-10 | MIXED_BUY_LEAN | MIXED_BUY_LEAN | -3.07% |
| B1 삼전 | 2022-09-27 | MIXED_SELL_LEAN | MIXED_SELL_LEAN | +9.04% |
| B1 삼전 | 2022-10-05 | BUY | BUY | -1.25% |
| B3 LGES | 2023-10-30 | AVOID_STRONG | AVOID_STRONG | -9.14% |
| B3 LGES | 2023-11-06 | MIXED_BUY_LEAN | MIXED_BUY_LEAN | -22.70% |
| D1 KT&G | 2025-03-06 | AVOID | MIXED_SELL_LEAN | +25.40% |
| D1 KT&G | 2025-03-13 | MIXED_SELL_LEAN | MIXED_SELL_LEAN | +27.16% |
| E1 카카오 | 2022-10-13 | MIXED_SELL_LEAN | MIXED_SELL_LEAN | +20.93% |
| E1 카카오 | 2022-10-20 | MIXED_SELL_LEAN | MIXED_SELL_LEAN | +29.84% |
변경¶
D1 KT&G 2025-03-06만 AVOID → MIXED_SELL_LEAN (1건). 실제 +25.40%였으므로 SELL 강도 약화는 정답 방향. cp 동적 임계 또는 AMT POC 정체 동적화의 효과.
나머지 9개 시점은 동일. 5건 명백 오답 자체는 차트 신호 미검출 (SC/BC=0)이라 trigger 변경으로 해결 불가 — S306 결함 분석 그대로 유효. PM "차트만으로 해결 불가, 시장+재료 결합 필요" 재확인.
7. Baseline¶
ALL D+60 mean: S305 +12.75% / S307 +12.75% (n=15,626 동일). 모집단 일치 확인.
8. 결론¶
변경 효과¶
- OF 제외(4 trigger 운영) — strong_threshold 자동 조정으로 AVOID/BUY ↔ AVOID_STRONG/BUY로 재분포. AVOID_STRONG alpha 유지(긍정), BUY_STRONG alpha 약화(주의).
- cp 동적 임계 + AMT POC 정체 동적화 — verdict 분포에 직접 영향은 적음 (대부분 9% 미만 변경). VSA SC/BC count 변화는 있으나 판정부 다른 조건이 결정 안정.
- 5건 명백 오답 — D1 1건만 SELL 강도 약화. 나머지 동일. 시스템 한계 인정.
평가¶
- S307 변경은 트리거 자체의 원전 정합성 개선 + 임의 가드 제거 + OF 30분봉 정책 수립이 목적. 큰 verdict alpha 개선이 목표가 아님.
- 백테스트는 동일 모집단/기간에서 시스템이 안정 + 분포 재조정만 발생 확인.
- 다음 단계 (PM 결정 대기): 차트 + 시장 상황 + 재료 결합 시스템.
9. 산출물¶
scripts/backtest/s307_run_backtest.py— S307 백테스트 스크립트scripts/backtest/s307_compare.py— S305 vs S307 비교scripts/backtest/s307_cases_check.py— 5건 명백 오답 인접 시점 확인data/backtest/s307/samples.parquet— 16,172 samplesdata/backtest/s307/run_log.txt— 백테스트 실행 로그