S309 — L×S v4b_swing5 + v4c Chart×Quant×Derivatives 3-axis 검증¶
날짜: 2026-05-24 (Sun) Topic: L (시스템 재설계) 선행: S308 (v1~v3 + v4a/v4b 완료) 다음: v4c 결함 보완 후 운영 진입 또는 stock-level 확장
1. 옵션 2 — v4b swing ±5% 재실행¶
1.1 변경¶
scripts/backtest/lxs_v4b_swing5_derivatives_standalone.py신규 (v4b copy)SWING_THRESHOLD: 0.08 → 0.05- 출력:
data/backtest/lxs_v4b_swing5/
1.2 결과¶
- swing 7건 (±8% 3건 → ±5% 7건, 표본 ~2.3배)
| signal | extreme events | swing match | mean lead | median | lead/concur/lag |
|---|---|---|---|---|---|
| basis_z | 32 | 7/7 ★ | -6.0d | -2d | 5/1/1 |
| kr_10y_chg_z | 31 | 7/7 | -3.9d | 0d | 3/3/1 |
| fut_oi_chg_z | 21 | 6/7 | -3.2d | -1d | 3/1/2 |
| max_pain_dist_z | 11 | 3/7 | -4.7d | -6d | 2/0/1 |
| vkospi_fut_z | 1 | 3/7 | -5.7d | 0d | 1/1/1 |
| vkospi_proxy_z | 0 | 0/7 | — | — | — |
| pcr_oi_z | 0 | 0/7 | — | — | — |
| composite | 0 | 0/7 | — | — | — |
1.3 해석¶
- basis_z 선행성 견고: ±8%에서 mean 14d 선행, ±5%에서 6d 선행로 줄었으나 7/7 모든 swing 100% match. 폭이 다른 swing 모두 잡힘 → swing event 시점 알람으로 안정적.
- kr_10y_chg_z 신규 부각: ±8%에서는 부각 안 됐으나 ±5%에서 7/7 match + 3d 선행. 작은 swing 시점에 의미.
- VKOSPI / PCR: rolling 30일 기반 z 임계 ±1.5 못 넘김. 표본 부족.
- Composite 실패: 가중평균이 개별 신호를 희석. 단일 신호 사용 권장 (특히 basis_z, kr_10y_chg_z).
1.4 운영 룰 권고 (옵션 2 결과)¶
- swing 알람:
basis_z단독 또는basis_z + kr_10y_chg_z합의(둘 다 z ≥ ±1.5) - composite는 폐기.
2. 옵션 4 — v4c Chart × L×S × Derivatives 3-axis 결합¶
2.1 설계¶
- 검증 단위: KOSPI 일자
- 차트: 30분봉 250종목 → 일자 EOD 시점
classify_state→resolution_direction(-1/0/+1) breadth →chart_breadth_z - 퀀트: v2b의 일자별
L_bin/S_bin/cell(5영업일 sample → forward-fill) - 파생: v4
basis_z등 + compositederiv_sent_z - 검증: 3축 cell × D+5/D+10/D+20 KOSPI 수익률 alpha (vs baseline mean)
2.2 데이터 교집합¶
- 30분봉: 2026-02-13 ~ 2026-05-22 (75 영업일)
- 파생: 2025-04-15 ~ 2026-04-14
- v2b L×S: ~ 2026-04-15
- inner-join 결과: 38일 (2026-02-19 ~ 2026-04-14)
PM 75일 조건은 파생 기간 제약으로 미충족. 4/15 이후 파생 백필 또는 차트만 별도 평가는 후속.
2.3 Baseline (38 days)¶
| Horizon | n | mean | median | win |
|---|---|---|---|---|
| D+5 | 35 | +1.16% | +3.22% | 54.3% |
| D+10 | 34 | +2.14% | +0.70% | 55.9% |
| D+20 | 25 | +2.78% | +3.78% | 64.0% |
기간 자체가 강상승장(2/19 5089 → 4/14 5968, +17%). D+20 표본 25만 가용.
2.4 Single-axis alpha (vs baseline)¶
Chart axis (chart_breadth_z bin)¶
| bin | n | mean D+5 (α) | mean D+10 (α) | mean D+20 (α) |
|---|---|---|---|---|
| MID | 6 | +6.57 (+5.41) | +12.04 (+9.90) | NaN |
| HIGH | 2 | +6.82 (+5.66) | +14.10 (+11.96) | NaN |
결함: rolling 30일 z의 첫 30일 NaN으로 8일만 분류, 30일 UNKNOWN. 차트 breadth 분류 표본 부족. 그래도 분류된 cell은 모두 alpha 강한 양수.
Quant axis (L_bin × S_bin = cell)¶
| cell | n | α D+5 | α D+10 | α D+20 |
|---|---|---|---|---|
| HIGH_HIGH | 4 | +6.89 | +12.61 | NaN |
| HIGH_LOW | 5 | -3.13 | +3.04 | +12.83 ★ |
| LOW_HIGH | 13 | -2.04 | -6.31 | -3.30 |
| LOW_LOW | 9 | +1.41 | +2.82 | +3.81 |
| VERY_HIGH_HIGH | 2 | +4.24 | +7.15 | NaN |
| VERY_HIGH_VERY_HIGH | 3 | +5.67 | +9.16 | NaN |
L×S 직관 부분 검증: HIGH_HIGH·VERY_HIGH_VERY_HIGH(Bull) 강세 / LOW_HIGH(Top Warning) 약세 (-3.30pp D+20). HIGH_LOW(Contrarian Buy)는 D+5에 약했다가 D+20에 +12.83pp ★ — 시간차 반응.
Deriv axis (basis_z bin)¶
| bin | n | α D+5 | α D+10 | α D+20 |
|---|---|---|---|---|
| VERY_LOW | 2 | +1.67 | +0.93 | -4.02 |
| LOW | 5 | +1.12 | -0.80 | +2.20 |
| MID | 15 | +0.54 | +0.60 | +2.07 |
| HIGH | 13 | +0.33 | +0.39 | +0.24 |
| VERY_HIGH | 3 | -6.73 | -3.34 | -6.97 ★ |
basis_z VERY_HIGH가 회피 신호: 선물 프리미엄 극단 강세 = 과매수 → D+20 -6.97pp alpha. v4b 14d 선행과 정합. 운영 활용 가능.
2.5 2-axis (chart × deriv_bin)¶
| cell | n | α D+5 | α D+10 | α D+20 |
|---|---|---|---|---|
| MID|HIGH | 4 | +5.95 | +11.25 | NaN |
| HIGH|MID | 2 | +5.66 | +11.96 | NaN |
| MID|MID | 2 | +4.58 | +8.54 | NaN |
| UNKNOWN|VERY_HIGH | 3 | -6.73 | -3.34 | -6.97 ★ |
| UNKNOWN|LOW | 5 | +1.12 | -0.80 | +2.20 |
차트 양호 + 파생 중상위 = 강한 alpha. 차트 미분류일도 파생 VERY_HIGH면 강력 회피.
2.6 3-axis joint cell (top |α D+20|)¶
| cell | n | α D+5 | α D+10 | α D+20 |
|---|---|---|---|---|
| UNKNOWN|HIGH_LOW|MID | 2 | -4.42 | +1.18 | +14.04 ★ |
| UNKNOWN|HIGH_LOW|HIGH | 2 | -7.12 | -0.63 | +11.61 ★ |
| UNKNOWN|LOW_LOW|MID | 4 | -1.39 | +3.92 | +5.72 |
| UNKNOWN|LOW_HIGH|HIGH | 5 | -4.20 | -9.95 | -4.31 ★ |
| MID|VERY_HIGH_VERY_HIGH|HIGH | 2 | +5.21 | +8.39 | NaN |
| UNKNOWN|LOW_HIGH|VERY_HIGH | 2 | -4.23 | +2.13 | -2.63 |
| UNKNOWN|LOW_LOW|LOW | 3 | +1.12 | -2.00 | +2.35 |
| UNKNOWN|LOW_HIGH|MID | 4 | +1.43 | -7.64 | -2.25 |
HIGH_LOW (Contrarian) + 파생 MID/HIGH: D+20 +14.04 / +11.61pp ★ — 가장 강한 양의 alpha. R7 CF7 가설 (Contrarian Buy = 최고 보상) 38일 표본 부분 재검증. LOW_HIGH (Top Warning) + 파생 HIGH: D+10 -9.95 / D+20 -4.31pp — Top Warning 가설 재검증.
2.7 결함 (S310 보완 필요)¶
- chart_breadth_z rolling 30일 → 38일 중 30일 UNKNOWN. 효과적 cell 분류 8일뿐.
- 해결: rolling 20일 또는 z 임계 ±1.0 완화.
- 38일 표본: PM 75일 조건 미충족. 4/15~5/22 파생 백필 필요.
- D+20 표본 25: 마지막 20일 forward look-ahead 짤림. 검증 기간 짧음.
- L×S forward-fill: 5영업일 sample을 평일 ffill → 같은 cell이 5일 연속. 자기상관 위험.
2.8 운영 결론 (v4c 38일 기준, 잠정)¶
- 차트 ↑ + 파생 MID ~ HIGH = Bull 강세 (D+10 α +11pp)
- L×S HIGH_HIGH / VERY_HIGH × VERY_HIGH = Bull 강세 (D+10 α +9~12pp)
- L×S HIGH_LOW (Contrarian) + 파생 정상 = D+20 +11~14pp ★
- basis_z VERY_HIGH = 강한 회피 (D+20 -6.97pp)
- L×S LOW_HIGH (Top Warning) + 파생 HIGH = 회피 (D+10 -9.95pp)
38일 표본 + 강상승장 baseline 한계, but 방향성은 v2b/v2c OOS 결과와 정합.
3. 산출물¶
scripts/backtest/lxs_v4b_swing5_derivatives_standalone.py(옵션 2)scripts/backtest/lxs_v4c_chart_quant_deriv.py(옵션 4 메인)scripts/backtest/_v4c_inspect_*.py(스키마 점검 헬퍼 3종)data/backtest/lxs_v4b_swing5/- signal_metrics.json
- derivatives_with_features.parquet
data/backtest/lxs_v4c/- merged_3axis.parquet
- chart_breadth.parquet
- summary.json
docs/research/2026-05-24_S309_lxs_v4c_3axis.md(본 문서)
4. PM 결정 대기 (다음 세션)¶
- chart_breadth_z rolling 윈도우 단축 (30→20일) 으로 v4c 재실행 → cell 분류 표본 회복?
- 파생 4/15~5/22 백필 후 75일 검증 → PM 옵션 4 원조건 충족?
- v3 stock-level conditional alpha 진입? (regime × 종목별 D+N)
- 운영 진입 (morning/signal-synthesizer에 basis_z VERY_HIGH 회피 룰 + L×S cell 매핑 통합)?