S307big — 확장 universe(250종목) 백테스트 + OF 활성 재검증
Date: 2026-05-24 (Sun)
Topic: L (시스템 재설계)
Predecessor: S307 / S307+OF (80종목, 549 OF sample)
1. 설계 변경
- 모집단 확장: KOSPI 50 + KOSDAQ 30 = 80 → KOSPI 150 + KOSDAQ 100 = 250
- 일봉 OHLCV: FDR
DataReader 신규 170종목 fetch (167/170 성공, 10초), 3건 신규상장 데이터 부족(491000/439960/490470)
- 30분봉: 키움 ka10080 신규 170종목 fetch (170/170 성공, 181초)
- 백테스트 재실행:
- S307big (4 trigger, OF 제외): 47,456 samples / 3,730초 (~62분)
- S307big+OF (5 trigger, 30분봉 가용 sample): 1,682 success / 232 skip / 165초
2. 표본 규모
| Backtest |
universe |
trigger |
samples |
| S305 |
80 (KOSPI 50 + KOSDAQ 30) |
4 (OF 제외) |
16,172 |
| S307 |
80 |
4 |
16,172 |
| S307big |
250 (KOSPI 150 + KOSDAQ 100) |
4 |
47,456 |
| S307big+OF |
250 (가용 범위) |
5 |
1,682 |
→ S307 대비 표본 ×2.93 확장.
3. Baseline 비교 (전체 sample)
| Backtest |
n |
D+20 mean |
D+60 mean |
| S305 / S307 |
16,172 |
+4.14% |
+12.75% (n=15,626) |
| S307big |
47,456 |
+3.41% |
+10.47% (n=45,781) |
| S307big+OF |
1,682 |
+11.33% |
N/A (n=7, 끝점 부족) |
→ 확장 universe baseline alpha 약화 (-0.73pp D+20, -2.28pp D+60). KOSPI 51~150 + KOSDAQ 31~100 종목의 평균 성과가 시총 상위보다 낮음. 시총 작은 종목의 변동성 + 약세 영향. survivorship bias가 시총 상위에서 더 강함을 시사.
4. S307 → S307big: universe 확장 단순 효과 (둘 다 4 trigger)
| Verdict |
n307 |
n_big |
mean_307 D+20 |
mean_big D+20 |
delta |
| AVOID |
763 |
2,273 |
+3.45% |
+2.48% |
-0.97pp |
| AVOID_STRONG |
902 |
3,074 |
+3.42% |
+3.21% |
-0.21pp |
| BUY |
2,556 |
7,381 |
+4.75% |
+3.64% |
-1.11pp |
| BUY_STRONG |
144 |
400 |
+4.62% |
+5.05% |
+0.43pp |
| CAUTION |
251 |
679 |
+1.30% |
+1.02% |
-0.28pp |
| MIXED |
1,608 |
4,753 |
+3.33% |
+2.52% |
-0.81pp |
| MIXED_BUY_LEAN |
6,310 |
17,222 |
+4.55% |
+3.81% |
-0.74pp |
| MIXED_SELL_LEAN |
3,353 |
10,836 |
+4.00% |
+3.47% |
-0.53pp |
| NEUTRAL |
41 |
132 |
+2.85% |
+1.45% |
-1.40pp |
| WATCH |
244 |
706 |
+2.02% |
+1.80% |
-0.22pp |
핵심
- 거의 모든 verdict alpha 감소 — 시총 작은 종목 추가로 baseline 자체 약화.
- BUY_STRONG만 alpha 개선 (+0.43pp). 표본 ×2.78 증가에도 더 강한 성과. STRONG 분류의 일관된 신호력 확인.
5. S307big vs S307big+OF (같은 sample 한정, OF 활성 효과)
매칭 pair: 1,682
| 항목 |
결과 |
| 변경 없음 |
95.4% (1,604) |
| 변경됨 |
4.6% (78) |
| AVOID_STRONG 56 → 12 |
STRONG 정밀도 회복 (OF 5번째 trigger로 strong_threshold 4 충족 어려움) |
| AVOID 29 → 70 |
AVOID_STRONG에서 강등 |
| BUY_STRONG 11 → 25 |
일부 BUY가 STRONG으로 승격 |
Verdict별 D+20 (같은 sample)
| Verdict |
n_big |
n_of |
mean_big |
mean_of |
delta |
| AVOID |
29 |
70 |
+11.83% |
+12.77% |
+0.94pp |
| AVOID_STRONG |
56 |
12 |
+12.10% |
+8.33% |
-3.77pp |
| BUY |
294 |
286 |
+12.73% |
+12.67% |
-0.06pp |
| BUY_STRONG |
11 |
25 |
+26.41% |
+27.64% |
+1.23pp |
| MIXED |
177 |
185 |
+11.70% |
+12.22% |
+0.52pp |
| MIXED_BUY_LEAN |
740 |
738 |
+10.94% |
+10.58% |
-0.36pp |
| MIXED_SELL_LEAN |
362 |
354 |
+10.40% |
+10.19% |
-0.21pp |
6. OF trigger 발화 빈도 + alpha (S307big+OF, n=1,682)
| OF decision |
n |
D+20 mean |
win |
sharpe |
| HOLD |
1,609 (95.7%) |
— |
— |
— |
| BUY |
65 |
+15.16% |
60.0% |
0.447 |
| SELL |
8 |
+23.95% (n=8, win 87.5%!) |
87.5% |
0.744 |
OF BUY 시점별 alpha (n=65)
| 호라이즌 |
mean |
win |
| D+5 |
+1.83% |
52.3% |
| D+10 |
+5.36% |
61.5% |
| D+20 |
+15.16% |
60.0% |
OF SELL 시점별 (n=8, 표본 적음 단 의미 강함)
| 호라이즌 |
mean |
win |
| D+5 |
+7.21% |
100% |
| D+10 |
+11.98% |
87.5% |
| D+20 |
+23.95% |
87.5% |
→ OF SELL이 SELL 신호인데 D+20 +23.95% = 상승. 즉 OF의 일봉 모드 시점의 SELL 신호가 실패하고 있음. 표본 8건이지만 win 87.5%로 일관. PM이 우려한 "차트만으론 불가, 시장+재료 결합" 맥락에서 OF SELL이 단독으로는 잘못 작동한다는 신호.
7. STRONG verdict 4단계 추적
BUY_STRONG D+20
| Backtest |
n |
mean |
win |
| S305 (80, OF=∅) |
241 |
+5.67% |
56.9% |
| S307 (80, OF=∅) |
144 |
+4.62% |
50.7% |
| S307big (250, OF=∅) |
400 |
+5.05% |
50.7% |
| S307big+OF (250, OF 활성) |
25 |
+27.64% |
64.0% |
→ OF 활성 시 BUY_STRONG D+20 +27.64%. 표본 25건 한계 있지만 매우 강함. 5단계 모두 활성 합의 = 진짜 강한 신호.
AVOID_STRONG D+20
| Backtest |
n |
mean |
win |
| S305 |
289 |
+2.70% |
56.4% |
| S307 |
902 |
+3.42% |
58.0% |
| S307big |
3,074 |
+3.21% |
53.8% |
| S307big+OF |
12 |
+8.33% |
75.0% |
→ AVOID_STRONG은 baseline보다 낮은 수익률(회피 정당화). S307big+OF에서 표본 12로 적지만 baseline +11.33% 대비 +8.33%로 회피 가치 유지.
8. 결론
핵심 발견
- universe 확장 ×2.93 = 표본 충분 확보 (S307big 47,456). BUY_STRONG 144 → 400, AVOID_STRONG 902 → 3,074로 STRONG 신호 표본 크게 늘어 통계적 신뢰성 향상.
- baseline alpha 약화 — 확장 universe(시총 51~250위 추가)는 baseline D+20 +4.14% → +3.41%. 시총 작은 종목이 평균적으로 약함. survivorship bias 효과 명확.
- BUY_STRONG은 universe 확장에도 alpha 유지·개선 (S307 +4.62% → S307big +5.05%). 표본 ×2.78에도 일관된 신호력.
- OF 활성 시 BUY_STRONG D+20 +27.64% — n=25 한계지만 5 trigger 합의의 강한 신호 확인.
- OF SELL은 단독으로는 실패 (n=8 D+20 +23.95%). PM "차트만으론 불가, 시장+재료 결합" 직접 확인.
- OF 활성으로 STRONG 정밀도 회복 (AVOID_STRONG 56 → 12). S307의 "OF 제외로 STRONG 과발화" 문제 같은 패턴 재확인.
제약
- 30분봉 가용 범위 제한 (2026-02-13 ~ 2026-04-15 → 1,682 sample만 OF 활성)
- OF SELL 표본 8건은 통계적으로 약함
- D+60 미래 데이터 부족 (가용 끝점 가까움)
PM 정책 검증
- ✓ universe 확장이 의미 있는 표본 증가 (×2.93)
- ✓ BUY_STRONG 신호력 확인 (표본 늘어도 alpha 유지)
- ✓ OF 30분봉 활성의 alpha 강도 재확인 (BUY +27.64%)
- ✗ OF SELL 단독은 잘못 작동 (PM 차트+시장+재료 결합 필요성 직접 확인)
9. 산출물
scripts/backtest/s307big_universe.py — 250종목 universe 구성
scripts/backtest/s307big_fetch_daily.py — 일봉 OHLCV 신규 fetch
scripts/backtest/s307big_fetch_30min.py — 30분봉 신규 fetch
scripts/backtest/s307big_run_backtest.py — S307big 백테스트
scripts/backtest/s307bigof_run_backtest.py — S307big+OF 백테스트
scripts/backtest/s307bigof_compare.py — 4단계 비교
data/backtest/s307big/{universe.json, samples.parquet} — 47,456 samples
data/backtest/s307bigof/samples.parquet — 1,682 samples
data/minute_charts/30min/*.parquet — 250종목 캐시
10. Risk Metrics (MDD / Sortino / Calmar, D+20)
전체 baseline
| Backtest |
n |
mean |
std |
sharpe |
sortino |
MDD mean |
MDD p10 |
MDD worst |
calmar |
| S305 (80, 4tr) |
16,172 |
+4.14% |
17.23% |
0.240 |
0.619 |
-10.89% |
-19.69% |
-59.84% |
0.38 |
| S307 (80, 4tr) |
16,172 |
+4.14% |
17.23% |
0.240 |
0.619 |
-10.89% |
-19.69% |
-59.84% |
0.38 |
| S307big (250, 4tr) |
47,456 |
+3.41% |
17.57% |
0.194 |
0.503 |
-11.01% |
-19.97% |
-61.64% |
0.31 |
| S307big+OF (250, 5tr) |
1,682 |
+11.33% |
27.78% |
0.408 |
1.471 |
-13.29% |
-22.50% |
-59.84% |
0.85 |
BUY_STRONG D+20
| Stage |
n |
mean |
sharpe |
sortino |
MDD mean |
MDD p10 |
calmar |
| S305 |
241 |
+5.67% |
0.264 |
0.808 |
-12.93% |
-23.93% |
0.44 |
| S307 |
144 |
+4.62% |
0.236 |
0.725 |
-12.63% |
-24.66% |
0.37 |
| S307big |
400 |
+5.05% |
0.234 |
0.746 |
-12.82% |
-23.61% |
0.39 |
| S307big+OF |
25 |
+27.64% |
0.537 |
2.680 |
-15.86% |
-24.00% |
1.74 |
BUY D+20
| Stage |
n |
mean |
sharpe |
sortino |
MDD mean |
calmar |
| S305 |
2,625 |
+4.77% |
0.251 |
0.703 |
-11.12% |
0.43 |
| S307 |
2,556 |
+4.75% |
0.250 |
0.703 |
-11.04% |
0.43 |
| S307big |
7,381 |
+3.64% |
0.193 |
0.547 |
-11.22% |
0.32 |
| S307big+OF |
286 |
+12.67% |
0.487 |
2.090 |
-12.96% |
0.98 |
MIXED_BUY_LEAN D+20
| Stage |
n |
mean |
sharpe |
sortino |
MDD mean |
calmar |
| S305 |
6,233 |
+4.57% |
0.242 |
0.647 |
-12.01% |
0.38 |
| S307 |
6,310 |
+4.55% |
0.240 |
0.640 |
-12.10% |
0.38 |
| S307big |
17,222 |
+3.81% |
0.195 |
0.537 |
-12.17% |
0.31 |
| S307big+OF |
738 |
+10.58% |
0.344 |
1.230 |
-15.47% |
0.68 |
AVOID_STRONG D+20
| Stage |
n |
mean |
sharpe |
sortino |
MDD mean |
MDD p10 |
calmar |
| S305 |
289 |
+2.70% |
0.214 |
0.410 |
-10.31% |
-19.43% |
0.26 |
| S307 |
902 |
+3.42% |
0.237 |
0.524 |
-10.43% |
-18.90% |
0.33 |
| S307big |
3,074 |
+3.21% |
0.183 |
0.475 |
-10.74% |
-19.41% |
0.30 |
| S307big+OF |
12 |
+8.33% |
0.645 |
2.531 |
-9.77% |
-13.77% |
0.85 |
AVOID D+20
| Stage |
n |
mean |
sharpe |
sortino |
MDD mean |
calmar |
| S305 |
1,473 |
+3.44% |
0.249 |
0.551 |
-9.54% |
0.36 |
| S307 |
763 |
+3.45% |
0.257 |
0.603 |
-8.79% |
0.39 |
| S307big |
2,273 |
+2.48% |
0.178 |
0.404 |
-9.21% |
0.27 |
| S307big+OF |
70 |
+12.77% |
0.672 |
2.500 |
-10.08% |
1.27 |
OF active 신호 (S307big+OF)
| OF group |
n |
mean |
sharpe |
sortino |
MDD mean |
MDD p10 |
calmar |
| OF BUY |
65 |
+15.16% |
0.447 |
2.164 |
-11.91% |
-22.11% |
1.27 |
| OF SELL |
8 |
+23.95% |
0.744 |
N/A (모두 양수) |
-10.87% |
-16.67% |
2.20 |
Risk Metrics 핵심 발견
- S307big calmar 약화 (0.38 → 0.31) — universe 확장으로 위험 대비 수익 감소. MDD는 비슷한데 mean이 줄어듦.
- S307big+OF 전체 calmar 폭증 (0.31 → 0.85 = 2.7배) — 가용 기간(2026-02~04)이 강한 상승장 + STRONG 정밀도 회복 + OF 합의 효과 결합. 표본 1,682건.
- BUY_STRONG calmar S307big+OF에서 1.74 — risk-adjusted 관점에서 매우 강함. 단 n=25 신뢰구간 큼.
- sortino 3~4배 증가 (BUY 0.703 → 2.090, BUY_STRONG 0.746 → 2.680) — 가용 기간 downside 자체가 적기 때문. 신뢰구간 큼 인정.
- MDD worst -60%대 — S305/S307big 둘 다. 시총 작은 종목의 단일 종목 큰 낙폭 흡수. 위험 관리에 직접 의미.
- OF BUY calmar 1.27 / sortino 2.164 — OF 활성 BUY 신호의 risk-adjusted alpha 확정적.
- OF SELL (n=8) 8건 모두 양의 수익 — sortino N/A(downside 없음). SELL 신호인데 100% 실패. PM "차트만으론 불가" 직접 확인.
11. 다음 (PM 결정 대기)
- 누적 30분봉 캐시 자동화 → 과거 시점 OF 백테스트 확대
- OF SELL 실패 원인 분석 (시장 환경/재료 결합 필요성)
- 차트 + 시장 + 재료 결합 시스템 본격 설계
12. Risk metrics 산출
scripts/backtest/s307bigof_risk_metrics.py — MDD / Sortino / Calmar 4단계 비교