meta:
  title: "은퇴자산포트폴리오 — 시장위험 현금룰"
  parent_file: "spec/risk/risk_control.yaml"
  version: "2026-05-15-F12_split"
  language: "ko-KR"
  timezone: "Asia/Seoul"
  role: "canonical"
  migration_status: "canonical_split_active"

risk_control:
  VIX:
    below_18: "정상 집행"
    18_25: "집행액 85%"
    25_35: "집행액 60%"
    above_35: "신규 위험자산 50% 축소"
    above_45: "신규 위험자산 매수 중단"
  US10Y:
    monthly_plus_50bp: "위험자산 수량 20% 축소 및 하락 위험 상향"
    rate_cut_delay_shock: "금리 인하 지연 + 환율 1,400원 동시 돌파 시 신규 매수 전면 중단, cash_floor 15~20% 즉각 상향"
  market_risk_score_based_cash:
    purpose: "MRS(시장 위험 점수) 0~10점에 따라 현금 비중을 5~20%로 자동 조정. cash_floor.regime_numbers 고정값 대체."
    formula: "target_cash_pct = 5 + (MRS / 10) × 15"
    formula_examples:
      MRS_0:  "target_cash_pct = 5% (강한 상승장 최저현금)"
      MRS_5:  "target_cash_pct = 12.5%"
      MRS_10: "target_cash_pct = 20% (극단 위기 최고현금)"
    mrs_components:
      VIX:
        below_18:   0
        18_25:      2
        25_35:      3
        above_35:   4
        max_score:  4
      KOSPI_vs_MA20:
        above_MA20: 0
        below_MA20: 2
        max_score:  2
      USD_KRW:
        below_1400: 0
        1400_1450:  1
        above_1450: 2
        max_score:  2
      USD_JPY_direction:
        stable:     0
        rapid_drop_1pct_2d: 1
        max_score:  1
      credit_stress:
        none:       0
        caution:    1
        max_score:  1
    override_rule:
      rule: "target_cash_pct = max(MRS_formula_result, cash_floor.regime_numbers 해당 구간 min_cash_ratio)"
      note: "MRS 기반 결과와 기존 regime_numbers 중 더 높은 값 적용. MRS가 기존보다 낮을 경우 기존 하한 유지."
    output_table:
      columns: ["VIX점수", "KOSPI점수", "환율점수", "JPY점수", "신용점수", "MRS합계", "target_cash_pct(%)", "현재현금(%)", "조정방향"]
    daily_calculation_sop:  # [proposal_74 / 2026-05-15] MRS 일일 산출 실행 프로토콜
      reference_time: "매일 15:30 종가 확정 직후"
      collection_sequence:
        step_1: "VIX 종가 수집 → score 산출 (VIX<18→0, 18~25→2, 25~35→3, >35→4)"
        step_2: "KOSPI 종가 vs MA20 비교 → score (MA20 상회→0, 이탈→2)"
        step_3: "USD/KRW 종가 → score (<1400→0, 1400~1450→1, >1450→2)"
        step_4: "USD/JPY → score (급격 하락 2거래일 내 1%↓→1, 정상→0)"
        step_5: "credit_stress → score (경계→1, 없음→0)"
      aggregation: "MRS = step_1~step_5 합산 (최소 0, 최대 10)"
      missing_data_rule:
        rule: "각 컴포넌트 데이터 미확인 시 해당 컴포넌트 최고점 보수 처리"
        VIX_missing: "→ 4점 처리"
        KOSPI_MA20_missing: "→ 2점 처리"
        USD_KRW_missing: "→ 2점 처리"
        USD_JPY_missing: "→ 1점 처리"
        credit_missing: "→ 1점 처리"
        rationale: "데이터 누락 = 위험 인식 불가 = 최고 위험 가정이 생존 원칙에 부합"
      output_requirement: "MRS 점수·각 컴포넌트 점수·target_cash_pct를 보고서 블록5 현금룰 섹션에 출력 필수"
      update_frequency: "일별 갱신. VIX 5p 이상 장중 급변 시 장중 임시 갱신 허용."
    fallback_logic:  # [proposal_82 / 2026-05-15] MRS 미산출 시 조건부 보수적 기본값
      purpose: "MRS 미산출 시 시장 국면에 따른 조건부 보수적 기본값으로 위험 방어"
      conditional_default:
        VIX_high: "VIX >= 25 확인 시 → target_cash_pct 기본값 15%"
        KOSPI_below_MA20: "KOSPI 종가 < MA20 확인 시 → target_cash_pct 기본값 12%"
        normal: "두 조건 모두 미충족 시 → target_cash_pct 기본값 10%"
      all_unknown_rule: "VIX·KOSPI 모두 확인 불가 시 → target_cash_pct 15% 강제 적용 AND 신규 매수 보류(MRS 재산출 완료 후 재개)"
      priority: "daily_calculation_sop 실행 실패 시에만 발동. SOP 성공 시 비활성."
      output_requirement: "fallback 발동 시 블록5에 [MRS 미산출 — fallback 적용: X%] 표기 필수"
      prohibition:
        - "VIX >= 25 국면에서 MRS 미산출 상태로 10% 기본값 적용 금지"
        - "all_unknown 상태에서 MRS 재산출 없이 신규 매수 집행 금지"
    prohibition:
      - "MRS 점수 미산출 시 target_cash_pct 기본값 10% 적용. 명시 표기."
      - "MRS 결과가 기존 cash_floor.regime_numbers보다 낮아도 기존 하한 유지 (하향 조정 금지)"
      - "→ master_prohibitions.P3 전역 적용"

  # [proposal_56 / 2026-05-15] 섹터 급락 당일 대응 프로토콜 — sector_crash_intraday_protocol
