Files
kjh2064 0a51702a9a 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>
2026-06-25 17:56:13 +09:00

88 lines
3.7 KiB
YAML

---
schema_version: "cash_recovery_optimizer_v1"
generated: "2026-06-25"
description: "P6: 가치보존형 현금확보"
# Phase 6: 현금확보 (은퇴자산포트폴리오 목표 달성을 위한 현금 조성)
# 현재: 자산 3.94억, 현금 부족: 4,134만원 (목표: 5억)
# 제약: value_damage_raw_pct <= 10% (자산 가치 훼손 최소화)
problem:
current_asset_krw: 394191813 # 현재 자산
target_asset_krw: 500000000 # 목표
shortfall_krw: 41342219 # 부족액
current_cash_pct: 3.86 # 현금 비중
target_cash_pct: 15.0 # 목표 현금 비중
status: "BELOW_FLOOR"
market_regime: "BREAKDOWN"
objective: "현금 부족액 충족 AND 주식가치 훼손 최소 (raw <= 10%)"
# ─────────────────────────────────────────────────────────────────────────────
# 핵심 전략: K2 50/50 분할
# ─────────────────────────────────────────────────────────────────────────────
approach: "K2 50/50 분할: immediate_qty + rebound_wait_qty"
key_rules:
rule_1: |
K2 즉시 50% / 반등 대기 50% 분할
(rebound_trigger_price 도달 전까지 대기 주문 실행 금지)
rule_2: |
매도 순서: K3 regime_adjusted_sell_priority 사용
코어 주도주 마지막 (상승추세 종목 보호)
rule_3: |
value_damage_raw_pct <= 10% 상한 유지
(cap_pass=false 허용 안함)
rule_4: |
emergency_full_sell=true 조건:
(half_expected * 2) < shortfall_min 일 때만
# ─────────────────────────────────────────────────────────────────────────────
# 공식
# ─────────────────────────────────────────────────────────────────────────────
formulas:
rebound_trigger_price: |
prevClose + 0.5 * ATR20
(tick 정규화 후 지정가 사용)
value_damage_raw_pct: |
sum(target_sell_krw) / current_portfolio_value * 100
immediate_qty_pct: 50
rebound_wait_qty_pct: 50
# ─────────────────────────────────────────────────────────────────────────────
# 구현
# ─────────────────────────────────────────────────────────────────────────────
implementation:
- "spec/exit/cash_recovery.yaml (현재 파일)"
- "src/google_apps_script/gas_data_feed.gs: calcCashRecoveryOptimizerV1_()"
- "tools/validate_value_preservation_v1.py (raw <= 10% 검증)"
sample_case:
current_asset: 394191813
shortfall: 41342219
target_damage_pct: "10% max"
expected_recovery: 37108765
execution_checklist:
- "K3 regime_adjusted_sell_priority 실행"
- "매도 대상 종목 선정 (코어 제외)"
- "immediate 50% 주문 발생"
- "rebound_trigger_price 모니터링"
- "rebound_wait 50% 대기 주문 준비"
- "value_damage 모니터링 (10% 이내)"
- "emergency 조건 평가"
enforcement:
- "자동 매도 순서 적용, 수동 개입 금지"
- "value_damage > 10% 초과 시 ABORT"
- "모든 주문 로깅 의무"