Files
Your Name da54a03f92 fix(옵투나 UI): 음영 로직 B안 — 그룹 분산(CV)이 base, 개별 근접이 미세
룰 19 사용자 지적 (2026-09-06):
'상한 수치 거의 비슷한데 왜 음영이 연하지? 익절이 더 들쭉날쭉한데 더 진하고'

근본원인:
기존 로직 formatWhipParam (backtest.js:9297)
  const dist = Math.abs(v - s.avg);
  const ratio = s.maxDist > 0 ? 1 - (dist / s.maxDist) : 1;
  const alpha = Math.round((0.2 + (0.8 * ratio)) * 100);
- maxDist(그룹 내부 편차)로 정규화 → 좁든 넓든 alpha 분포 유사
- avg 근처 개별 값만 진해지고 그룹 분산 자체는 무시
- 상한 11.5~12.0 (좁음)이라도 avg 근처 아니면 연함
- 익절 0.9~2.1 (넓음)에서 avg 근처는 진함 (역설)

B안 (사용자 승인):
1) optunaCalcStats: std/CV 계산 추가
   stats[k] = { avg, min, max, maxDist, std, cv }
2) formatWhipParam: 2성분 곱
   base = 0.9 - min(1, cv/0.25) * 0.6  (clamp 0.3~0.9)
   individual = 1 - 0.3 * (dist/maxDist)
   alpha = base * individual * 100
   - 그룹 CV 낮음(좁음·견고) → base 90% → 전체 진함
   - 그룹 CV 높음(넓음·노이즈) → base 30% → 전체 연함
   - 개별 avg 근접도는 미세 조정(0.7~1.0)만
   - title 툴팁에 CV·base·individual 노출 (디버깅)

실측 검증 (브라우저 CDP):
- tp_pct (익절) CV 23.4% → base 34% (연함) ✓
- tp_max_pct (상한) CV 40.4% → base 30% (연함) ✓
- sl_pct (손절) CV 6.2% → base 75% (진함) ✓
- entry_drop_rate CV 8.8% → base 69% (진함) ✓
- shoulder_min_high CV 38.8% → base 30% (연함) ✓
사용자 캡처의 상한 11.5~12.0(CV≈2%) → base 85% 시뮬 확인

전략 범위 (룰 20): 4전략 공통 (스캘핑/돌파/모멘텀/꼬리) — 프론트 공용 함수
실매 영향 없음 (UI만)

정정 (사용자 지적 100% 정답):
'TPE = 좁은 영역 몰빵 = 위험' 이전 답변 어투는 오해 유발.
Y안 로직 자체는 이미 사용자 관점(몰림=견고=감점)이 반영됨.
- 팩터 5: 동일 PnL & 파라미터 다양 → -8 (견고)
- 팩터 6: 파라미터 mode_share≥60% → -8~-15 (매우 견고)

정상 확인 (버그 아님):
- 매매수 400건 vs 5건 차이 = sort_by(score/pnl/daily_avg) 다르면
  objective 함수 자체가 달라 TPE 가 다른 파라미터 영역 탐색
  (optuna_common.py:246 optuna_objective_value)
- 호가/휩쏘 모두 OFF = TPE 가 하루치 데이터에서 필터 OFF 유리 학습.
  팩터 4 (게이트 커버) 로 gated/all=대부분 통과 시 +10 감점 반영

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-06 21:17:38 +09:00
..