docs(v9-roadmap): 구현 및 배포 로드맵 완성
v9 Quant Engine Hardening 전체 작업 명세 및 구현 로드맵 문서화 **완료된 작업**: - P0~P6 전체 명세 작성 (11개 스크립트) - MudBlazor UI 완전 리뉴얼 (5개 파일) - live_outcome_ledger 초기화 **남은 작업**: 1. 코드 구현 (P3~P6 GAS/Python) - P3: 손절 체계 (spec/exit/stop_loss.yaml) - P4: 라우팅 (routing_contract.yaml) - P5: 뒷북 차단 (alpha_lead + distribution) - P6: 현금확보 (cash_recovery) 2. 배포 - dotnet publish -c Release - GAS 함수 추가 (7개) 3. 실전 운영 - live_outcome_ledger 30건 누적 (2주) - honest_proof_score 95 달성 **점수 개선 예상**: 56.57 → 95.0 (P0/P2/P3~P6 효과) **일정**: - Phase 2 (구현): 3일 - Phase 3 (배포): 1일 - Phase 4 (운영): 2주 Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,211 @@
|
|||||||
|
# v9 Quant Engine Hardening — 전체 구현 로드맵
|
||||||
|
|
||||||
|
**상태**: 2026-06-25 명세 완성 → 구현 및 배포 준비
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 완료된 작업
|
||||||
|
|
||||||
|
### ✅ Phase 1: 명세 작성 (P0~P6)
|
||||||
|
|
||||||
|
| Phase | 제목 | 스크립트 | 상태 |
|
||||||
|
|-------|------|--------|------|
|
||||||
|
| P0 | 거짓 100% 박멸 | `build_p0_*.py` (3개) | ✅ |
|
||||||
|
| P1 | 실행 권위 단일화 | `build_p1_*.py` (1개) | ✅ |
|
||||||
|
| P2 | 실전 피드백 루프 | `build_p2_*.py` (2개) | ✅ |
|
||||||
|
| P3 | 손절 체계 재정의 | `build_p3_*.py` (1개) | ✅ |
|
||||||
|
| P4 | 라우팅 단일화 | `build_p4_*.py` (1개) | ✅ |
|
||||||
|
| P5 | 뒷북 차단 | `build_p5_*.py` (1개) | ✅ |
|
||||||
|
| P6 | 현금확보 | `build_p6_*.py` (1개) | ✅ |
|
||||||
|
|
||||||
|
### ✅ UI/UX 개선
|
||||||
|
|
||||||
|
| 컴포넌트 | 작업 | 상태 |
|
||||||
|
|---------|------|------|
|
||||||
|
| App.razor | MudThemeProvider 통합 | ✅ |
|
||||||
|
| MainLayout.razor | MudLayout + MudAppBar | ✅ |
|
||||||
|
| NavMenu.razor | MudNavMenu | ✅ |
|
||||||
|
| Dashboard.razor | MudCard + MudDataGrid | ✅ |
|
||||||
|
| csproj | MudBlazor 6.10.0 추가 | ✅ |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 진행 중인 작업
|
||||||
|
|
||||||
|
### 🔄 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주 | ⏳ 예정 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 최종 체크리스트
|
||||||
|
|
||||||
|
- [ ] P3~P6 코드 구현
|
||||||
|
- [ ] GAS 함수 테스트
|
||||||
|
- [ ] dotnet publish 성공
|
||||||
|
- [ ] 웹 서비스 배포
|
||||||
|
- [ ] live_outcome_ledger 30건 누적
|
||||||
|
- [ ] honest_proof_score 95 달성
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**마지막 업데이트**: 2026-06-25
|
||||||
|
**다음 단계**: P3 코드 구현 → 배포
|
||||||
Reference in New Issue
Block a user