feat(v9-hardening): Complete P3~P6 specs, GAS functions, and MudBlazor UI

Phase 2 implementation complete:

P3 - 손절 체계 재정의 (Stop Loss Taxonomy):
  - spec/exit/stop_loss.yaml: P3 섹션 추가
  - calcAbsoluteRiskStopV1_: 절대 손실 금지선 (entry * 0.92 vs ATR * 1.5)
  - calcRelativeUnderperfAlertV1_: 상대 성과 추적 (WATCH/TRIM_30/TRIM_50/EXIT_100)
  - calcStopActionLadderV1_: 사다리식 액션 결정

P4 - 라우팅 단일화 (Unified Routing):
  - spec/xx_routing_contract.yaml: 4가지 스타일 가중치 정의
  - buildRoutePacket_: SCALP/SWING/MOMENTUM/POSITION 점수 + best_style 결정

P5 - 뒷북 차단 (Anti-Late Entry):
  - spec/exit/pre_distribution_gate.yaml: 배분 위험 조기 감지
  - calcAlphaLeadV1_: Alpha Lead Entry Gate (alpha_lead_score >= 75)
  - calcDistributionRiskV1_: Pre-Distribution Early Warning (risk >= 70)

P6 - 현금확보 (Cash Recovery):
  - spec/exit/cash_recovery.yaml: K2 50/50 분할 + value_damage <= 10%
  - calcCashRecoveryOptimizerV1_: 현금 최적화 (부족액 4,134만원)

UI/UX 개선 (MudBlazor 6.10.0):
  - Dashboard.razor: 단순 버전 (컴파일 에러 제거)
  - MainLayout.razor: Typo enum 수정 (H5→h5, H6→h6)
  - NavMenu.razor: Icons.Material.Filled.Portfolio → Inventory2

릴리스 빌드:
  - dotnet publish -c Release 성공
  - publish 폴더 24MB (배포 준비 완료)

실전 운영 계획:
  - spec/realtime/live_outcome_ledger_plan.yaml: 30건 신호 샘플링 계획
  - honest_proof_score: 56.57 → 95.0 개선 경로 정의
  - 예상 기간: 2026-06-25 ~ 2026-08-10 (약 6주)

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-06-25 17:56:13 +09:00
parent 85568a338a
commit 0a51702a9a
11 changed files with 1136 additions and 264 deletions
+81
View File
@@ -0,0 +1,81 @@
---
schema_version: "unified_route_packet_v1"
generated: "2026-06-25"
description: "P4: 라우팅·서빙·판단 단일화"
# 목적: SCALP/SWING/MOMENTUM/POSITION 결정을 JSON으로 결정론화
# LLM 자유도 제거, 수량 결정 자동화
purpose: "SCALP/SWING/MOMENTUM/POSITION 판단을 결정론적 JSON으로 잠금"
route_dimensions:
- "SCALP"
- "SWING"
- "MOMENTUM"
- "POSITION"
# 스타일별 가중치 정의
style_weights:
SCALP:
technical: 0.50 # 기술지표 중시
smart_money: 0.25
liquidity: 0.15
fundamental: 0.10
SWING:
smart_money: 0.35 # 스마트머니 중시
technical: 0.30
liquidity: 0.20
fundamental: 0.15
MOMENTUM:
fundamental: 0.40 # 펀더멘탈 중시
smart_money: 0.30
technical: 0.20
liquidity: 0.10
POSITION:
fundamental: 0.55 # 펀더멘탈 최우선
smart_money: 0.20
liquidity: 0.15
technical: 0.10
# Conviction Score → 진입 수량 매핑
conviction_to_pct:
"0-34": "진입 금지 (BLOCKED)"
"35-49": "1.5% (PILOT 진입)"
"50-64": "3% (표준 진입)"
"65-79": "5% (강한 신호)"
"80-100": "7% (매우 강한 신호)"
# 점수 계산 공식
route_formula: |
score = weighted_score × data_quality × regime_scale × anti_chase × liquidity × cash_ratio
# 필수 출력 필드
mandatory_output:
- "ticker: 종목코드"
- "scalp_score: SCALP 점수 (0-100)"
- "swing_score: SWING 점수 (0-100)"
- "momentum_score: MOMENTUM 점수 (0-100)"
- "position_score: POSITION 점수 (0-100)"
- "best_style: 최우선 스타일"
- "conviction_score: 최종 확신도"
- "recommended_pct: 추천 진입 수량 (%)"
- "blocked_reasons: 블록 이유 코드 (있으면)"
- "timestamp: 생성 시간 (ISO 8601)"
# 구현 파일
implementation_files:
- "src/google_apps_script/gas_data_feed.gs: buildRoutePacket_()"
- "tools/validate_capital_style_allocation_v1.py (검증 스크립트)"
# 테스트 사례
test_case:
ticker: "000660" # SK하이닉스
technical_score: 75
smart_money_score: 65
liquidity_score: 70
fundamental_score: 60
expected_best_style: "SCALP"
expected_recommended_pct: 5.0