meta:
  title: "은퇴자산포트폴리오 — 단계진입·눌림 재진입"
  parent_file: "spec/strategy/entry_gates.yaml"
  version: "2026-05-16-F12_kosdaq_strict"
  language: "ko-KR"
  timezone: "Asia/Seoul"
  role: "canonical"
  migration_status: "canonical_split_active"

entry_timing_guardrails:
  principle: "좋은 종목도 비싸게 사면 수익이 나빠지지만, 강한 장세의 돌파를 놓치는 것도 손실이다. 진입은 추격이 아니라 단계화다."
  staged_entry:
    pilot_size: "첫 진입은 계획 수량의 20~30%만."
    add_size: "확인 후 나머지 70~80%를 분할 집행."
    no_full_entry: "돌파 첫날이나 뉴스 직후에는 한 번에 전량 진입 금지. 단, 확인 가능한 강세일 때는 2~3회 분할로 빠르게 완성."
  # [proposal_121 / 2026-05-15] leader_concentration_entry REMOVED — numeric_gates.leader_concentration 참조

  staged_entry_v2:
    purpose: "기존 staged_entry(2단계 20~30%/70~80%)를 확장. 탐색(0.5~1%) → 확인(1.5~3%) → 주력(4~7%) 3단계로 설거지 없이 주도주 편입."
    note: "기존 staged_entry 2단계와 공존. 이 섹션이 우선 적용. 탐색매수는 daily_leader_scan 탐색 후보 등재 종목에만 허용."
    stages:
      stage_1_explore:
        size_pct_of_total: "총자산 0.5~1.0%"
        entry_condition:
          - "daily_leader_scan 합계 >= 4 (탐색 후보 등재 종목)"
          - "anti_climax_buy_gate 합계 <= 1 (gate 통과)"
          - "minimalist_buy_gate 3지표 통과"
          - "ATR20 확인 완료 (DATA_MISSING 금지 → master_prohibitions.P2)"
          - "explore_loss_budget 당월 잔액 확인"
        stop_loss: "매수가 대비 -3~-4% 지정가. 손익은 explore_loss_budget(FC) 계정 귀속."
        purpose: "정보 탐색 비용으로 소량 진입. 큰 손실 전 빠른 청산."
      stage_2_confirm:
        size_pct_of_total: "총자산 1.5~3.0%"
        entry_condition:
          - "stage_1 진입 후 가격 +1.5% 이상 상승"
          - "C2·C4 재확인 (수급·상대강도 지속)"
          - "anti_climax_buy_gate 합계 <= 1 유지"
          - "staged_exit_on_stall 10거래일 타임아웃 미경과"
        stop_loss: "stage_1 매수가 기준 -4~-5% 또는 MA20 이탈"
        purpose: "추세 확인 후 비중 확대."
      stage_3_core_load:
        size_pct_of_total: "총자산 4.0~7.0%"
        entry_condition:
          - "20일 신고가 돌파 (종가 기준)"
          - "C4 수급 지속 (외국인 또는 기관 순매수 유지)"
          - "sector_priority_ranking Tier_1 유지"
          - "staged_exit_on_stall 15거래일 타임아웃 미경과"
          - "aggregate_risk_cap 미초과"
        stop_loss: "stage_2 매수가 기준 -5~-6% 또는 MA20 -1ATR"
        purpose: "주력 편입. 검증 완료 종목만."
    staged_exit_on_stall:
      # [proposal_64 / 2026-05-15] 탐색 단계 전환 타임아웃 — 슬롯 강제 순환
      purpose: "단계 전환 미달 시 타임아웃 자동 청산으로 공격 슬롯 순환. '기다리는 것'이 아니라 '기준 시간 내 증명'."
      stage_1_timeout:
        timeout_days: 10
        condition: "10거래일 이내 stage_2 조건 미충족"
        action: "전량 청산. 지정가(매수가 -0.3~-1.0%). explore_loss_budget(FC) 귀속. 슬롯 해제."
        cooldown: "동일 종목 5거래일 재탐색 금지"
      stage_2_timeout:
        timeout_days: 15
        condition: "15거래일 이내 stage_3 조건 미충족"
        action: "stage_2 수량 50% 청산. 잔여 50%는 stage_1 룰 재적용."
      # [proposal_94 / 2026-05-16] 코스닥 종목 스탈 타임아웃 단축 — 유동성 소멸·모멘텀 소진 조기 대응
      kosdaq_stall_exit_premium:
        purpose: "코스닥 종목은 횡보 시 코스피보다 유동성이 빠르게 마르므로 타임아웃을 30% 단축."
        applicable: "코스닥 상장 종목에만 적용. KOSPI 종목은 기본 timeout_days 유지."
        stage_1_timeout_kosdaq:
          timeout_days: 7
          condition: "7거래일 이내 stage_2 조건 미충족 (KOSPI 10거래일 대비 30% 단축)"
          action: "전량 청산. 지정가(매수가 -0.3~-1.0%). explore_loss_budget(FC) 귀속. 슬롯 해제."
          cooldown: "동일 코스닥 종목 7거래일 재탐색 금지 (KOSPI 5거래일보다 2일 추가)"
        stage_2_timeout_kosdaq:
          timeout_days: 10
          condition: "10거래일 이내 stage_3 조건 미충족 (KOSPI 15거래일 대비 33% 단축)"
          action: "stage_2 수량 50% 청산. 잔여 50%는 stage_1 룰 재적용."
        prohibition:
          - "코스닥 종목에 KOSPI 기준 타임아웃(10/15거래일) 적용 금지"
          - "타임아웃 단축을 이유로 재진입 금지 기간 단축 금지"
      absolute_exit_override:
        priority: "타임아웃보다 우선 적용"
        conditions:
          - "anti_climax_buy_gate 합계 >= 3 발동"
          - "relative_weakness_exit RW 신호 >= 4개 발동"
          - "sector_crash_intraday_protocol tier_B 이상"
          - "매수가 대비 -4% 이상 하락"
        action: "타임아웃 전이라도 즉시 청산"
      prohibition:
        - "타임아웃 만료 후 '오를 것 같다'는 이유로 청산 연기 금지"
        - "동일 종목 쿨다운(5거래일) 무시 즉시 재진입 금지"
        - "stage_2→stage_3 50% 청산 후 잔여 50%에 stage_3 규칙 적용 금지 — stage_1 룰로 관리"
    prohibition:
      - "ATR20 DATA_MISSING 종목 stage_1 진입 금지 (→ master_prohibitions.P2)"
      - "anti_climax_buy_gate >= 3 발동 중 어느 단계도 진입 금지"
      - "core_load(stage_3) 완료 후 추가 매수 금지 (aggregate_risk_cap 준수)"
      - "소수점 수량 산출 금지. 정수 단위만."

  # [proposal_59 / 2026-05-15] 눌림 재진입 공식화 — pullback_reentry_rule
  pullback_reentry_rule:
    purpose: "돌파 확인(3일 연속 저항선 상회) 후 1차 눌림(MA5·MA20) 재진입 시점·규모·금지 조건 명문화."
    prerequisite:
      breakout_confirmation:
        - "종가 기준 3거래일 연속 저항선(52주고점·전고점·박스 상단) 상회"
        - "3거래일 평균 거래대금 > 20일 평균 × 1.5배"
        - "anti_climax_buy_gate 신호 <= 2개 (3개 이상이면 눌림 재진입도 금지)"
      existing_position: "이미 staged_entry_v2 stage_1 이상 보유 중이어야 함. 신규 진입에 사용 금지."
    entry_zones:
      primary_MA5:
        condition: "종가가 MA5 ±0.5% 구간에서 반등 (음봉→양봉 전환)"
        size: "현재 보유 stage_1 수량의 50% 추가"
        entry_price: "MA5 기준 ±0.5% 지정가"
      secondary_MA20:
        condition: "MA5 지지 실패 후 MA20 ±1% 구간까지 하락 시"
        size: "현재 보유 stage_2 수량의 30% 추가"
        max_attempts: "2회까지만. 3회 이상 눌림 = 추세 약화 → 재진입 금지"
    size_cap:
      rule: "눌림 재진입 후 해당 종목 합산 비중 총자산 7% 초과 금지."
      core_load_prohibition: "stage_3 완료 종목 재진입 금지 (aggregate_risk_cap 준수)"
    invalidity:
      - "anti_climax_buy_gate >= 3 → 금지"
      - "MA20 하향돌파 후 2거래일 연속 하회 → 추세 전환 판단, 재진입 금지"
      - "relative_weakness_exit RW >= 4 발동 종목 금지"
      - "sector_crash_intraday_protocol tier_B 이상 발동 중 금지"
      - "weekly_circuit_breaker 발동 중 금지"
    output_table:
      columns: ["종목명", "돌파확인일", "눌림진입구간", "재진입지정가", "재진입수량(정수)", "합산비중(%)", "trailing_stop갱신가"]
    prohibition:
      - "돌파 미확인(3일 연속 저항선 상회 미달) 종목 눌림매수 금지"
      - "소수점 수량 산출 금지 — 정수 단위만"
