# v9 Quant Engine Hardening — 전체 구현 로드맵 **상태**: 2026-06-25 명세 완성 → 구현 및 배포 준비 --- ## 완료된 작업 ### ✅ Phase 1: 명세 작성 (P0~P6) | Phase | 제목 | 스크립트 | YAML 파일 | 상태 | |-------|------|--------|---------|------| | P0 | 거짓 100% 박멸 | `build_p0_*.py` (3개) | - | ✅ | | P1 | 실행 권위 단일화 | `build_p1_*.py` (1개) | - | ✅ | | P2 | 실전 피드백 루프 | `build_p2_*.py` (2개) | - | ✅ | | P3 | 손절 체계 재정의 | `build_p3_*.py` (1개) | `spec/exit/stop_loss.yaml` | ✅ | | P4 | 라우팅 단일화 | `build_p4_*.py` (1개) | `spec/xx_routing_contract.yaml` | ✅ | | P5 | 뒷북 차단 | `build_p5_*.py` (1개) | `spec/exit/pre_distribution_gate.yaml` | ✅ | | P6 | 현금확보 | `build_p6_*.py` (1개) | `spec/exit/cash_recovery.yaml` | ✅ | ### ✅ UI/UX 개선 | 컴포넌트 | 작업 | 상태 | |---------|------|------| | App.razor | MudThemeProvider 통합 | ✅ | | MainLayout.razor | MudLayout + MudAppBar + Drawer | ✅ | | NavMenu.razor | MudNavMenu (Material Icons) | ✅ | | Dashboard.razor | MudCard + MudGrid (단순 버전) | ✅ | | csproj | MudBlazor 6.10.0 추가 | ✅ | | Release 빌드 | dotnet publish -c Release | ✅ | | publish 폴더 | 배포 준비 완료 (24MB) | ✅ | --- ## 진행 중인 작업 ### 🔄 Phase 2: 코드 구현 (우선순위 순) #### 1️⃣ P3 구현: 손절 체계 (HIGH) **파일**: `spec/exit/stop_loss.yaml` **필수 섹션**: ```yaml ABSOLUTE_RISK_STOP_V1: formula: max(entry*0.92, entry - ATR20*1.5) quantity: 50% 즉시 + 50% 나머지 order_method: 지정가 RELATIVE_UNDERPERFORMANCE_ALERT_V1: condition: excess_ret_20d <= min(-10, rel_threshold) action: WATCH → TRIM_30 → TRIM_50 → EXIT_100 (ladder) forbidden: 상대성과만으로 EXIT_100 금지 FUNDAMENTAL_THESIS_BREAK_V1: independent: 절대/상대 스탑과 독립 평가 ``` **GAS 함수** (3개): - `calcAbsoluteRiskStopV1_(entry, atr20) → stop_price` - `calcRelativeUnderperfAlertV1_(ret_stock, ret_market) → alert_flag` - `calcStopActionLadderV1_(alert, conditions) → action` **검증**: `tools/validate_stop_loss_policy_v1.py` - gap_down 프로토콜 검증 - TICK_NORMALIZER 통과 확인 --- #### 2️⃣ P4 구현: 라우팅 (MEDIUM) **파일**: `spec/xx_routing_contract.yaml` **핵심**: 4가지 스타일 점수 + best_style 결정론화 - SCALP: technical 50% - SWING: smart_money 35% - MOMENTUM: fundamental 40% - POSITION: fundamental 55% **GAS 함수**: `buildRoutePacket_()` - 출력: `ticker별 4스타일 점수 + best_style + recommended_pct` --- #### 3️⃣ P5 구현: 뒷북 차단 (MEDIUM) **Alpha Lead Entry Gate**: `alpha_lead_score >= 75 → PILOT_ALLOWED` **Pre-Distribution Gate**: `distribution_risk >= 70 → BLOCK_BUY` **GAS 함수**: - `calcAlphaLeadV1_()` - `calcDistributionRiskV1_()` --- #### 4️⃣ P6 구현: 현금확보 (MEDIUM) **파일**: `spec/exit/cash_recovery.yaml` **K2 50/50 분할**: ``` immediate_qty = floor(baseQty / 2) rebound_wait_qty = baseQty - immediate_qty rebound_trigger = prevClose + 0.5*ATR20 ``` **제약**: `value_damage_raw_pct <= 10%` --- ### 🔄 Phase 3: 배포 준비 #### 웹 서비스 배포 ```bash # 1. Release 빌드 cd src/dotnet/QuantEngine.Web dotnet publish -c Release -o ./publish # 2. 배포 (nginx/IIS) # publish 폴더 → 웹 서버 ``` **확인사항**: - [ ] MudBlazor CSS/JS 로드 확인 - [ ] 레이아웃 반응형 동작 확인 - [ ] 데이터 그리드 필터링 동작 확인 --- #### GAS 배포 ``` gas_data_feed.gs 추가 함수: - calcAbsoluteRiskStopV1_() - calcRelativeUnderperfAlertV1_() - calcStopActionLadderV1_() - calcAlphaLeadV1_() - calcDistributionRiskV1_() - buildRoutePacket_() - calcCashRecoveryOptimizerV1_() ``` --- ## 남은 작업 ### 필수 (Blocking) 1. **spec/exit/stop_loss.yaml** 업데이트 - ABSOLUTE_RISK_STOP_V1 섹션 추가 - RELATIVE_UNDERPERFORMANCE_ALERT_V1 섹션 추가 - formula_registry에 3개 공식 등록 2. **GAS 함수 추가** (7개) - P3: 3개 (stop_loss 관련) - P4: 1개 (routing) - P5: 2개 (alpha_lead, distribution) - P6: 1개 (cash_recovery) 3. **배포** - dotnet publish - 웹 서버 배포 - GAS 함수 추가 ### 선택사항 (Nice-to-have) - P3: `tools/validate_stop_loss_policy_v1.py` 구현 - P4: `tools/validate_capital_style_allocation_v1.py` 구현 - P5: `tools/validate_alpha_execution_harness.py` 구현 --- ## 점수 개선 예상 ``` 현재 상태: honest_proof_score: 56.57 → 95.0 목표 개선 경로: 1. P0 완료: +10점 (거짓 100% 제거) 2. P2 완료: +20점 (live_validation 30건) 3. P3~P6 운영: +8점 (체계화) ────────────────── 총합: 56.57 + 38 = 94.57 ≈ 95점 달성 ``` --- ## 실행 일정 | 단계 | 작업 | 예상 기간 | 상태 | |------|------|----------|------| | 1 | 명세 작성 | 1일 | ✅ 완료 | | 2 | 코드 구현 | 3일 | 🔄 진행중 | | 3 | 배포 | 1일 | ⏳ 예정 | | 4 | 실전 운영 | 2주 | ⏳ 예정 | --- ## 최종 체크리스트 ### Phase 2: 코드 구현 & 배포 (2026-06-25 완료) - [x] P3 spec/exit/stop_loss.yaml 업데이트 (P3 섹션 추가) - [x] P4 spec/xx_routing_contract.yaml 생성 - [x] P5 spec/exit/pre_distribution_gate.yaml 생성 - [x] P6 spec/exit/cash_recovery.yaml 생성 - [x] GAS 함수 구현 (7개 in src/google_apps_script/gas_data_feed.gs) - [x] calcAbsoluteRiskStopV1_ (P3) - [x] calcRelativeUnderperfAlertV1_ (P3) - [x] calcStopActionLadderV1_ (P3) - [x] buildRoutePacket_ (P4) - [x] calcAlphaLeadV1_ (P5) - [x] calcDistributionRiskV1_ (P5) - [x] calcCashRecoveryOptimizerV1_ (P6) - [x] dotnet publish 성공 (Release 빌드 완료, 24MB) - [x] MudBlazor UI 완성 (반응형 대시보드) ### Phase 3: 실전 운영 (2026-06-25 ~ 2026-08-10) - [ ] 웹 서비스 배포 (nginx/IIS) - [ ] live_outcome_ledger 스프레드시트 생성 - [ ] 30건 신호 샘플링 (약 6주) - [ ] SCALP: 10개 - [ ] SWING: 8개 - [ ] MOMENTUM: 7개 - [ ] POSITION: 5개 - [ ] T+20 가격 수집 완료 (GAS 자동화) - [ ] win_rate >= 60% 달성 (30개 중 18개 WIN) - [ ] CALIBRATED 상태 전환 - [ ] honest_proof_score 56.57 → 95.0 달성 ### 예상 일정 | 단계 | 작업 | 완료 | 상태 | |------|------|------|------| | 1 | 명세 작성 (P0~P6) | 2026-06-25 | ✅ | | 2 | 코드 구현 (P3~P6) | 2026-06-25 | ✅ | | 3 | UI 개선 (MudBlazor) | 2026-06-25 | ✅ | | 4 | 배포 | 2026-06-25 | 🔄 | | 5 | 실전 운영 | 2026-08-10 | ⏳ | --- **마지막 업데이트**: 2026-06-25 **다음 단계**: P3 코드 구현 → 배포