콘텐츠로 이동

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. 결론

핵심 발견

  1. universe 확장 ×2.93 = 표본 충분 확보 (S307big 47,456). BUY_STRONG 144 → 400, AVOID_STRONG 902 → 3,074로 STRONG 신호 표본 크게 늘어 통계적 신뢰성 향상.
  2. baseline alpha 약화 — 확장 universe(시총 51~250위 추가)는 baseline D+20 +4.14% → +3.41%. 시총 작은 종목이 평균적으로 약함. survivorship bias 효과 명확.
  3. BUY_STRONG은 universe 확장에도 alpha 유지·개선 (S307 +4.62% → S307big +5.05%). 표본 ×2.78에도 일관된 신호력.
  4. OF 활성 시 BUY_STRONG D+20 +27.64% — n=25 한계지만 5 trigger 합의의 강한 신호 확인.
  5. OF SELL은 단독으로는 실패 (n=8 D+20 +23.95%). PM "차트만으론 불가, 시장+재료 결합" 직접 확인.
  6. 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 핵심 발견

  1. S307big calmar 약화 (0.38 → 0.31) — universe 확장으로 위험 대비 수익 감소. MDD는 비슷한데 mean이 줄어듦.
  2. S307big+OF 전체 calmar 폭증 (0.31 → 0.85 = 2.7배) — 가용 기간(2026-02~04)이 강한 상승장 + STRONG 정밀도 회복 + OF 합의 효과 결합. 표본 1,682건.
  3. BUY_STRONG calmar S307big+OF에서 1.74 — risk-adjusted 관점에서 매우 강함. 단 n=25 신뢰구간 큼.
  4. sortino 3~4배 증가 (BUY 0.703 → 2.090, BUY_STRONG 0.746 → 2.680) — 가용 기간 downside 자체가 적기 때문. 신뢰구간 큼 인정.
  5. MDD worst -60%대 — S305/S307big 둘 다. 시총 작은 종목의 단일 종목 큰 낙폭 흡수. 위험 관리에 직접 의미.
  6. OF BUY calmar 1.27 / sortino 2.164 — OF 활성 BUY 신호의 risk-adjusted alpha 확정적.
  7. 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단계 비교