--- description: Optuna mode Top10 · mode_combo · 하단 표 해석 — band proximity vs 익절 consensus alwaysApply: false --- # Optuna mode Top10 · mode_combo · 하단 표 해석 (kis_bot) ## 역할 분리 (혼동 금지) | 표 | 목적 | trial? | 익절 하나로 수렴? | |----|------|--------|-------------------| | 학습 Top10 | Optuna 목적함수(score) 상위 | O | X — score 최대가 익절 대표값 아님 | | 사후합격 Top10 | WR/PF 등 사후 게이트 통과 | O | X | | mode_combo | PnL 양수 pool 축별 **최빈(mode)** 조립 + 1회 백테 실측 | X (조립) | **축마다 최빈** — tp 예: pool 최빈 5.0% | | mode Top10 | PnL 양수 pool **p25~p75 밴드 근접도** 상위 trial | O | **X** — 27축 평균 근접도; tp만 보면 2~7.5% 퍼져도 정상 | | 안정 Top10 | 일평균PnL − λ×일표준편차 | O | X | ## mode Top10 점수 (band_proximity_p25_p75) 1. pool = `OPTUNA_MODE_POOL` (기본 `positive` = total_pnl>0 전 trial) 2. pool 각 축 numeric → p25, p50, p75, IQR 3. trial 각 축: 밴드 안=1.0, 밖= `1 - dist/(IQR×OPTUNA_MODE_BAND_DECAY_IQR)` (기본 decay 1.5) 4. **근접% = 축 점수 평균** (`consensus_match_n/total`는 밴드 **안** 축 개수 — 근접%와 다름) 5. 정렬: 근접% ↓ → mean_band_err ↑ → PnL ↓ ## 흔한 오해 - "mode Top10 1위 = 익절 대표" → **아님**. #1이 tp 밴드 밖(예 2.5% vs p25 4.5%)이어도 다른 25축이 밴드 안이면 98% 가능. - "익절 균형이 깨졌다" → 버그 아님. **다축 중심성** 랭킹이지 tp 단일 consensus 아님. - 익절 하나로 쓰려면 → **mode_combo** 또는 **사후합격 1위**, DB 적용은 사용자 confirm. ## 하단 표 데이터 소스 - 완료 잡: `logs/optuna_web_jobs/.json` → `result_json` 경로의 **Optuna 결과 JSON** - 동일 payload: MariaDB `optuna_study_result.payload_json` - 웹 요약: `optuna_web_jobs._summarize_result_data()` → `job.result_summary` - 구 JSON: `results_mode` 없으면 웹이 `build_results_mode_consensus_tier()` **즉시 재계산** ## 최종 선택 후보 (브리핑·적용) | 우선순위 | 후보 | apply source | 비고 | |---------|------|--------------|------| | 1 | 사후합격 1위 | `gated` | WR/PF·min_trades 통과 — **DB 적용 1순위** | | 2 | 안정 1위 | `stable` | 손실일·최악일 게이트 — 변동성 낮춤 | | 3 | mode_combo | `mode` | 축별 최빈 조립 · trial 없음 · 2차 narrow 참고 | | 4 | mode Top10 1위 | `consensus` | 밴드 전형 trial · **익절 대표 아님** | ## 수정 시 금지 - mode Top10을 "익절 최빈순"으로 바꾸지 말 것 (목적 다름) — 바꾸려면 별도 표/env/사용자 승인 - HTS SCAN 밴드로 mode 그리드 강제 금지 - mode Top10 ≠ mode_combo DB apply 경로 혼동 금지 ## 코드 앵커 - `kis_trader/backtest/optuna_mode_combo.py` — pool, band, mode Top10, mode_combo - `kis_trader/backtest/optuna_briefing.py` — `build_final_selection_briefing_lines` - `kis_trader/backtest/optuna_web_jobs.py` — `_summarize_result_data`, 웹 표