# spec/strategy/semiconductor_concentration_policy.yaml
# 반도체 집중 허용 정책 — MARKET_WEIGHT_AWARE_CLUSTER_GATE_V1
# ────────────────────────────────────────────────────────────────────────────
# 배경:
#   한국 KOSPI 시장에서 삼성전자+SK하이닉스는 시총 비중 35%+를 차지한다.
#   기존 고정 25% 한도는 이 두 종목이 주도하는 상승장에서 시장 대비 필연적
#   언더퍼폼을 강제한다. 분산은 목적이 아니라 리스크 관리 수단이며,
#   주도주 집중 전략이 유효한 국면에서는 시장 비중만큼은 허용해야 한다.
#
# 원칙:
#   1. 시장 비중(KOSPI_SEMI_WEIGHT) 이하는 항상 PASS — 시장 중립 포지션
#   2. RISK_ON 국면에서는 시장 비중 1.3배까지 허용 (능동적 과중비중)
#   3. SECULAR_LEADER 국면에서는 65%까지 허용 (주도주 집중 전략)
#   4. RISK_OFF / EVENT_SHOCK에서는 시장 비중 × 0.7로 축소 (방어)
#   5. 한도 초과 시 BLOCK이 아닌 WARN/TRIM — 설거지 구간에서만 BLOCK
# ────────────────────────────────────────────────────────────────────────────

formula_id: MARKET_WEIGHT_AWARE_CLUSTER_GATE_V1

# KOSPI 반도체 시총 비중 — settings 시트에서 사용자가 직접 입력해야 함
# 주의: 하드코딩 기본값 없음. 시총 비중은 KRX/FnGuide 실데이터 기준으로만 입력.
# 미입력 시 GAS는 DATA_MISSING 상태로 동작 (정책 한도만 적용, 시장비중 × 배수 미적용)
kospi_weights_settings_keys:
  kospi_semi_weight_pct:    "settings 시트 key — 삼성전자+SK하이닉스 합산 KOSPI 비중 (%)"
  kospi_samsung_weight_pct: "settings 시트 key — 삼성전자 단독 KOSPI 비중 (%)"
  kospi_hynix_weight_pct:   "settings 시트 key — SK하이닉스 단독 KOSPI 비중 (%)"
  data_source: "KRX 또는 FnGuide 시총 비중 데이터 (최소 월 1회 갱신 권장)"
  critical_note: |
    KOSPI 내 삼성전자·SK하이닉스 비중은 시장 상황에 따라 크게 변동한다.
    어떠한 추정치도 settings 미입력 시 코드에 삽입하지 않는다.
    반드시 사용자가 실제 시총 데이터 기반으로 직접 입력해야 한다.

# ── 반도체 클러스터 한도 (동적) ─────────────────────────────────────────────
cluster_cap_table:
  EVENT_SHOCK:
    cap_pct: "max(20, kospi_semi_weight × 0.60)"
    default: 21.0
    rationale: "이벤트 충격: 시장 비중의 60%로 방어 축소"
    gate_behavior: "초과 시 CLUSTER_BLOCK (신규 BUY 전면 금지)"

  RISK_OFF:
    cap_pct: "max(25, kospi_semi_weight × 0.80)"
    default: 28.0
    rationale: "하락장: 시장 비중의 80%까지만 유지"
    gate_behavior: "초과 시 CLUSTER_BLOCK"

  NEUTRAL:
    cap_pct: "max(35, kospi_semi_weight × 1.00)"
    default: 35.0
    rationale: "중립: 시장 비중 매칭까지 허용 (PASS)"
    gate_behavior: "초과 시 CLUSTER_OVERWEIGHT_TRIM (BUY 금지, 점진 감축)"
    change_from_old: "25% → 35% (시장 중립 허용)"

  RISK_ON:
    cap_pct: "max(45, kospi_semi_weight × 1.30)"
    default: 45.0
    rationale: "상승장: 반도체 주도 시 시장 비중 130%까지 능동 과중비중 허용"
    gate_behavior: "초과 시 CLUSTER_OVERWEIGHT_WARN (BUY 신중, 강제 감축 아님)"
    change_from_old: "25% → 45% (반도체 주도 상승장 적극 참여 허용)"

  SECULAR_LEADER_RISK_ON:
    cap_pct: 65.0
    rationale: "주도주 집중 전략: 삼성+하이닉스 양 종목 최대 보유"
    gate_behavior: "초과 시 CLUSTER_OVERWEIGHT_TRIM"
    change_from_old: "60% → 65%"

  CLA:
    cap_pct: 65.0
    rationale: "CONCENTRATED_LEADER_ADVANCE: SECULAR_LEADER_RISK_ON과 동일"
    gate_behavior: "초과 시 CLUSTER_OVERWEIGHT_TRIM"

# 게이트 상태 정의 (변경)
gate_status_definitions:
  PASS: "combined_pct < kospi_semi_weight × 0.90 — 시장 비중 90% 이하"
  CLUSTER_OVERWEIGHT_WARN: "combined_pct < regime_cap — 주의 모니터링, BUY 신중"
  CLUSTER_OVERWEIGHT_TRIM: "combined_pct >= regime_cap (non-RISK_OFF) — 감축 검토"
  CLUSTER_BLOCK: "combined_pct >= regime_cap (RISK_OFF/EVENT_SHOCK) — 신규 BUY 금지"
  CLUSTER_HOLD_ONLY: "isCLA AND combined_pct < cap — 보유만, 추가 매수 금지"

# ── 개별 종목 비중 한도 (LEADER_POSITION_WEIGHT_CAP_V1) ────────────────────
leader_position_cap_table:
  description: |
    005930(삼성전자), 000660(SK하이닉스)는 KOSPI 주도주로서
    일반 종목 상한(20%)과 별도로 시장 비중 기반 상한을 적용한다.

  # 모든 한도는 EXPERT_PRIOR (calibration_registry.yaml 등록).
  # KOSPI 비중이 settings에 입력되면 max(정책한도, kospi_weight × 배수) 적용.
  # KOSPI 비중 미입력 시 정책 한도만 적용 (추정치 삽입 금지).
  samsung_005930:
    EVENT_SHOCK: 15.0
    RISK_OFF:    18.0
    NEUTRAL:     28.0  # kospi_samsung_weight 입력 시: max(28, weight×1.20)
    RISK_ON:     40.0  # kospi_samsung_weight 입력 시: max(40, weight×1.70)
    SECULAR_LEADER_RISK_ON: 50.0  # 입력 시: max(50, weight×2.20)

  skhynix_000660:
    EVENT_SHOCK: 10.0
    RISK_OFF:    12.0
    NEUTRAL:     15.0  # kospi_hynix_weight 입력 시: max(15, weight×1.20)
    RISK_ON:     22.0  # 입력 시: max(22, weight×1.80)
    SECULAR_LEADER_RISK_ON: 28.0  # 입력 시: max(28, weight×2.50)

  other_stocks:
    EVENT_SHOCK: 12.0
    RISK_OFF:    15.0
    NEUTRAL:     20.0
    RISK_ON:     22.0
    SECULAR_LEADER_RISK_ON: 25.0

# ── SECULAR_LEADER 자동 감지 조건 ───────────────────────────────────────────
secular_leader_auto_detect_conditions:
  description: |
    RISK_ON 국면에서 아래 조건이 충족되면 SECULAR_LEADER_RISK_ON으로
    자동 상향 → 클러스터/단일종목 한도 완화 적용.
  conditions:
    - id: SL1
      description: "RS비율: 삼성전자 또는 SK하이닉스의 RS_Ratio >= 1.5 (5일 연속)"
      weight: 3
    - id: SL2
      description: "수급: 외인+기관 삼성전자 또는 SK하이닉스 동반순매수 3일 이상"
      weight: 2
    - id: SL3
      description: "섹터: 반도체 섹터 5일 수익률 KOSPI 대비 +5% 이상 초과"
      weight: 2
    - id: SL4
      description: "거래대금: 반도체 섹터 5일 평균 거래대금 > 20일 평균 × 1.3"
      weight: 1
  threshold: "합산 ≥ 6점 → SECULAR_LEADER_RISK_ON 자동 진입"
  exit_conditions:
    - "RS_Ratio < 1.0 (3일 연속)"
    - "외인+기관 동반순매도 5일"
    - "DISTRIBUTION_SELL_DETECTOR_V1.weighted_sum >= 4.0"

# ── 리스크 관리 보완 (집중 시 자동 강화) ────────────────────────────────────
concentration_risk_safeguards:
  description: |
    반도체 집중도가 높을수록 개별 종목 손절을 더 타이트하게 관리.
    '몰빵 후 고점 물리기' 방지.
  rules:
    - id: CR1
      trigger: "combined_pct >= 50%"
      action: "PROFIT_RATCHET_TIERED_V2 강제 활성화 (PROFIT_LOCK_10 이상 구간 진입 즉시)"
      note: "집중도 높을수록 수익 보호 필수"

    - id: CR2
      trigger: "combined_pct >= 55% AND DISTRIBUTION_SELL_DETECTOR weighted_sum >= 3.0"
      action: "K2_STAGED_REBOUND_SELL 즉시 발동 (절반 즉시 매도, 절반 반등 대기)"
      note: "설거지 구간 + 고집중도 = 즉시 반응"

    - id: CR3
      trigger: "combined_pct >= 65%"
      action: "신규 BUY 전면 금지 (SECULAR_LEADER에서도)"
      note: "65%가 최대 한도 — 이 이상은 포트폴리오 전체 위험"

# ── 하네스 수치 목표 ─────────────────────────────────────────────────────────
performance_targets:
  cluster_gate_false_positive_rate_max: 5  # 건당 BLOCK인데 실제 손실 없었던 비율
  cluster_gate_true_positive_rate_min: 85  # 건당 BLOCK이었을 때 실제 손실 방어 비율
  expected_benchmark_tracking_error_reduction_pct: 30  # 기존 25% 한도 대비 추적오차 감소
  calibration_status: EXPERT_PRIOR
  sample_n: 0
  note: "실측 표본 30건 이상 누적 후 PROVISIONAL → CALIBRATED 승격"
