meta: title: "은퇴자산포트폴리오 — 익절 정책" parent_file: "spec/06_exit_policy.yaml" version: "2026-05-16-F13_secular_leader" language: "ko-KR" timezone: "Asia/Seoul" role: "canonical" migration_status: "canonical_split_active" take_profit: # [proposal_117 / 2026-05-15] 익절 시스템 단일 지정 — HTS 주문 입력 기준 명확화 canonical_exit_system: "profit_lock_ratchet + tiered_ladder" canonical_rule: > HTS 주문 입력 기준은 항상 profit_lock_ratchet(손절선 상향 래칫)과 tiered_ladder(분할 익절 3단계)의 조합이다. trailing_stop은 tiered_ladder.tier_3의 트리거 참조로만 사용한다. sector_rotation_exit·event_driven·overheated_market_exit는 해당 조건 발동 시에만 추가로 적용한다. 기본 상태에서 출력 금지. trailing_bands는 CSCS 기반 처우 선택(sector_model.core_satellite_classification_score) 후 trailing_stop.core_large_cap(코어) 또는 trailing_stop.satellite_trigger(위성)로 자동 매핑된다. decision_map: purpose: "어느 익절 시스템을 언제 쓰는가 — 순서대로 확인" step_1: "항상 profit_lock_ratchet 적용: 현재수익률 확인 → 래칫 손절선 업데이트" step_2: "항상 tiered_ladder 적용: tier_1/2/3 가격·수량 산출 → 이것이 HTS 주문 기준" step_3: "sector_rotation_exit: 섹터 경보 발동 시에만 추가 적용" step_4: "event_driven: 실적발표 D-5 이내 시에만 추가 적용" step_5: "overheated_market_exit: VIX<13 + KOSPI 신고가 + 개인 50% 이상 조건 발동 시에만" default_output: "기본 보고서는 step_1 + step_2만 출력. step_3~5는 조건 미발동 시 출력 생략." principle: "감정적 전량 매도 금지. 저항선·수익률·ATR 기반 분할 익절 우선." integrated_exit_algorithm: rule: "Tiered Ladder는 익절 물량(Size)의 단계적 분할을 관장하고, Profit Lock Ratchet은 잔여 물량의 하한가(Floor Price)를 기계적으로 상향 조정한다. 상호충돌 시 물량 매도는 Tiered Ladder 우선, 손절선 상향은 Ratchet 우선 적용." requirements: - "현재가·평단가·보유수량·기준시각 확인 종목에만 익절 수량 산출." - "ATR 또는 저항선이 [데이터누락]이면 trailing_stop 가격 산출 금지. 관찰 조건으로만 표시." core: first_take_profit: "수익률 +15%만으로 기계적 익절 금지. 20D 수급 유지·거래대금 유지·5일선 위 주행이면 추세추종." trailing: "수익권 또는 저항선 돌파 후 고점 대비 ATR 1.5~1.8배 하락 시 20~30% 부분 익절 검토." leadership: "삼성전자·SK하이닉스는 비중상한·추세이탈·수급이탈·현금부족 중 2개 이상 충족 시에만 부분 익절 우선." satellite: first_take_profit: primary_rule: "tiered_ladder.satellite.tier_1 기준 적용 (진입가 +10% 도달 시)" defensive_partial_exit: condition: | 당일 +7% 이상 + 거래대금 200% 이상 동반 AND 아래 이상 급등 의심 신호 중 1개 이상: - 구체적 실적·수급 근거 없는 테마·루머 급등 - 외국인·기관 동반 순매수 아닌 개인 주도 급등 (Ind_5D 급증) - 52주 신고가 돌파 후 당일 음봉 반전 action: "보유수량 25% 방어 익절 (단타 방지: 기존 50% 하향)" prohibition: - "실적 발표 후 정상 갭업 + 기관·외국인 수급 동반 상승은 이 규칙 적용 금지" - "당일 가격 반응만으로 tiered_ladder 순서 건너뛰고 전량 익절 금지" trailing_stop: rule: "직전 고점 대비 20일 ATR 1.5배 하락 시 잔여 전량 또는 50% 이상 청산 검토. 고베타 주도주는 1.8배까지 허용." core_large_cap: "진입 후 최고가 대비 -6% 또는 ATR20 1.5배 하락 중 더 넓은 값. 20~30% 익절." high_beta_leader: "최고가 대비 -8% 또는 ATR20 1.8배 하락. 25~33% 익절." satellite_trigger: "최고가 대비 -7% 또는 ATR20 1.5배. 50% 익절." ratchet_rule: "신규 최고가 갱신 시 trailing 기준가만 상향. 잔여 손절선은 최소 본절 이상." prohibition: ["수익률 +15% 도달만으로 전량 익절 금지", "ATR20 없으면 trailing 가격 산출 금지", "trailing 기준가를 심리로 하향 조정 금지"] rebalancing_trim: rule: "단일 종목 총자산 18% 초과 시 예외 종목 제외하고 초과분만 지정가 분할 매도." exception: "삼성전자·SK하이닉스는 special_exception.kospi_semiconductor_leadership 우선." asymmetric_winner_rule: hold_if_all: ["20일선 위", "20D 수급 유지", "거래대금 급감 없음", "섹터 상대강도 상위권"] trim_if_two_or_more: ["5일선 종가 이탈", "장대음봉+거래대금 200% 이상", "외국인·기관 5D 동반 순매도", "섹터 상대강도 급락"] action: "1차 20~30%, 20일선 이탈 시 추가 30%, thesis_break 시 잔여 청산." redeployment_rule: cooling_period: {satellite_exit: "3~5거래일 대기 후 재투자 검토", core_partial_trim: "cash_floor 귀속 원칙. 재투자는 다음 수요일 정기점검에서 결정"} prohibition: ["익절 당일 다른 종목 즉시 신규 매수 금지", "익절 자금을 고위험 위성에 집중 투입 금지"] secular_leader_profit_lock: # [proposal_87 / 2026-05-16] 주도주 승자 포지션 이익 잠금 강화 purpose: > SECULAR_LEADER_RISK_ON 국면에서 삼성전자·SK하이닉스의 수익 포지션에 한해 일반 위성 tiered_ladder의 조기 부분익절 대신 trailing_stop 상향 + 래칫 방식을 우선 적용하여 승자 포지션을 더 오래 유지한다. 기존 core.leadership 규칙의 강화 버전. applicable_to: ["삼성전자", "SK하이닉스"] activation_required_all: - "market_regime_state == SECULAR_LEADER_RISK_ON" - "보유수량 확인 완료 (account_snapshot 기준)" - "Close > MA20" - "20D 수급 유지 (C4: Flow_OK=Y AND Frg_5D>0 OR Inst_5D>0)" rules: plus_10: condition: "보유 포지션 수익률 +10% 이상 종가 확인" action: "tiered_ladder.tier_1 부분익절 보류. profit_lock_ratchet 본절(+0%) 상향 실행만." rationale: "수급 훼손 없는 한 +10%에서의 매도는 주도주 상승 사이클을 조기 종료시킴." exception: "anti_climax_buy_gate >= 3 발동 시 기존 tiered_ladder.tier_1 즉시 적용" plus_20: condition: "수익률 +20% 이상 종가 확인" action: "손절선 진입가 +10%로 상향. 과열신호 2개 미만이면 20~30% 부분익절만 검토." overheated_signals: definition: "아래 중 2개 이상 시 과열 판정" signals: - "당일 거래대금 20일 평균의 300% 이상" - "외국인+기관 동반 순매도 전환 (당일 기준)" - "RSI 또는 이격도 과매수 극단 (별도 지표 확인 시에만)" - "anti_climax_buy_gate >= 2" prohibition: "과열신호 0~1개이면 이 단계 부분익절 금지. 래칫 상향만." plus_30: condition: "수익률 +30% 이상 종가 확인" action: "trailing_stop을 최근 고점 대비 ATR20 × 1.5~2.0배로 설정. 30~40% 단계 익절." note: "profit_lock_ratchet.ratchet_table +30% 래칫 동시 적용. 전량익절 금지." deactivation_any: - "anti_climax_buy_gate >= 3 발동" - "5D 외국인·기관 동반 순매도 (foreign_5d_flow < 0 AND institution_5d_flow < 0)" - "종가 MA20 이탈" - "market_regime_state != SECULAR_LEADER_RISK_ON" fallback: "비활성 시 take_profit.core.leadership 규칙으로 즉시 복귀. 이 규칙보다 완화된 방향 변경 금지." prohibition: - "보유수량 미확인 상태에서 이 규칙 기반 익절수량 산출 금지" - "SECULAR_LEADER_RISK_ON 비활성 상태에서 이 규칙 단독 적용 금지" - "비활성 후 매도 보류를 이유로 trailing_stop 하향 조정 금지" profit_lock_ratchet: principle: "수익 구간 진입 시 손절가는 기계적으로 상향한다. 감정적 하향 조정 절대 금지." atr_break_even_trigger: > # [2026-05-18_ADVANCED_EXIT_V2] ATR 연동 본절 트리거 TAKE_PROFIT_LADDER_V2의 tier_1 가격(max(+10%, Entry+ATR20×1.5)) 달성 시 손절선을 즉시 평단가(본절)로 상향한다. 이 조건이 고정% +10% 조건보다 먼저 충족되는 경우(고변동성 종목)에도 동일하게 본절 상향을 실행한다. atr_early_ratchet: # [2026-05-19_ALPHA_SHIELD_V1] X4: 1R 조기 본절 전환 trigger: "current_price >= entry_price + ATR20 * 1.0" action: "stop_price = max(stop_price, entry_price)" note: "ATR*1.5(tier_1 기준) 대기 없이 ATR*1.0 달성 즉시 본절 전환. 무위험 게임 조기 보장." priority: "atr_early_ratchet이 +10% 고정 조건보다 선행 가능. 먼저 발동된 것 적용." ratchet_table: - 수익_구간: "+10% 이상 확인 (종가 기준)" 새_손절선: "진입가 +0% (본절)" 부분_익절: "없음. 손절선 상향만 실행." HTS입력: "매수가 × 1.000 조건부 주문" - 수익_구간: "+20% 이상 확인" 새_손절선: "진입가 +10%" 부분_익절: "20~30% 부분 익절 검토 (20D 수급 유지 확인 후)" HTS입력: "매수가 × 1.100 조건부 주문" - 수익_구간: "+30% 이상 확인" 새_손절선: "진입가 +20%" 부분_익절: "30~40% 추가 익절" HTS입력: "매수가 × 1.200 조건부 주문" - 수익_구간: "+50% 이상 확인" 새_손절선: "진입가 +35% 또는 ATR20 × 2.0배 하락 기준 중 높은 값" 부분_익절: "50% 이상 익절. 잔여분 trailing_stop 관리." HTS입력: "trailing_stop 원화 가격 계산 후 HTS 입력" atr_trailing_universal: # [2026-05-19_ALPHA_SHIELD_V1] X4: 전 수익 구간 트레일링 스탑 trigger: "current_price < (max_price_since_entry - ATR20 * 2.0)" action: "TAKE_PROFIT_TRAIL -- 즉시 익절 실행 (TICK_NORMALIZER 적용)" applicable: "수익 구간 불문. 기존 +50% 제한 해제. 어깨에서 파는 하네스 핵심." note: "max_price_since_entry = 진입 후 최고 종가. 매 거래일 종가 기준 갱신." priority: "hard_stop 다음, tiered_ladder tier 실행 이전 확인." special_case: core_leader: "삼성전자·SK하이닉스 ratchet 기준 +5%p 완화" satellite: "위성 ratchet 기준 -5%p 강화" hard_stop: - "ATR20 미확인 시 HTS 조건부주문 가격 산출 금지" - "수익 구간 진입 확인은 종가 기준. 장중 고점만으로 래칫 상향 금지." - "래칫 손절선은 진입가보다 낮게 내리는 것 절대 금지." output_columns: ["계좌", "종목명", "평단(원)", "현재가(원)", "현재수익률(%)", "현_손절선(원)", "래칫_신_손절선(원)", "부분익절수량(주)", "HTS조건부주문_입력가"] tiered_ladder: principle: "1회 전량 익절 금지. 수익 구간을 3단계로 나눠 기계적으로 익절. 마지막 잔여분은 trailing_stop 관리." formula_version: "TAKE_PROFIT_LADDER_V2 (ATR R-Multiple 변동성 조정). ATR 미확인 시 V1(고정%) fallback." core_ladder: tier_1: trigger: "진입가 대비 +15% 도달 또는 컨센서스 목표가의 90%" action: "보유수량 25% 익절 (지정가 하한 계산)" condition: "20D 수급 유지 중이면 스킵 가능. 단 손절선은 반드시 본절로 상향." tier_2: trigger: "진입가 대비 +25% 도달 또는 컨센서스 목표가 도달" action: "남은 보유수량의 40% 익절" condition: "외국인·기관 5D 수급 유지 + 거래대금 급감 없음 → 보유 연장 검토" tier_3: trigger: "최고가 기준 ATR20 × 1.5배 하락 또는 profit_lock_ratchet 손절 발동" action: "잔여 전량 또는 50% 익절" satellite_ladder: tier_1: trigger: "진입가 대비 +10% 도달 (또는 ATR20 × 1.5 중 높은 값. TAKE_PROFIT_LADDER_V2 기준)" action: "보유수량 33% 익절 + 손절선 본절 상향 (중장기 추세 추종: 잔여 67% 보유)" v1_legacy_note: "구버전 50% 익절은 단기 익절 편향 — V2에서 33%로 조정. TAKE_PROFIT_LADDER_V1은 ATR 미확인 fallback용." tier_2: trigger: "진입가 대비 +20% 도달" action: "남은 수량 50% 추가 익절" tier_3: trigger: "trailing_stop 또는 time_stop 발동" action: "잔여 전량 청산" prohibition: - "tier 순서 건너뛰고 전량 익절 금지" - "ATR20 미확인 시 tier_3 기준가 산출 금지" - "tier_1 익절 후 다른 종목 즉시 매수 금지 (redeployment_rule 준수)" output_columns: ["계좌", "종목명", "평단(원)", "현재가(원)", "현재수익률(%)", "tier_1_가격(원)", "tier_1_수량(주)", "tier_2_가격(원)", "tier_2_수량(주)", "tier_3_기준가(원)", "잔여수량(주)"] output_examples: "_reference: output_format.unified_example_row_set # [R6] 통합 예시 집합 참조" executable_rules: field_dictionary_ref: "spec/12_field_dictionary.yaml:field_dictionary" formula_refs: take_profit_ladder: "spec/13_formula_registry.yaml:formula_registry.formulas.TAKE_PROFIT_LADDER_V2 # ATR R-Multiple 기준. ATR 없으면 V1 fallback." trailing_stop_price: "spec/13_formula_registry.yaml:formula_registry.formulas.TRAILING_STOP_PRICE_V1" rules: - id: "TP001_PROFIT_LOCK_RATCHET" inputs: ["average_cost", "current_price", "quantity", "position_class"] derived_field: profit_pct: "(current_price - average_cost) / average_cost * 100" output_fields: ["ratchet_stop_price", "partial_take_profit_quantity"] tiers: - {if: "profit_pct >= 50", stop_expression: "max(average_cost * 1.35, TRAILING_STOP_PRICE_V1)", partial_quantity_expression: "floor(quantity * 0.50)"} - {if: "profit_pct >= 30", stop_expression: "average_cost * 1.20", partial_quantity_expression: "floor(quantity * 0.35)"} - {if: "profit_pct >= 20", stop_expression: "average_cost * 1.10", partial_quantity_expression: "floor(quantity * 0.25)"} - {if: "profit_pct >= 10", stop_expression: "average_cost * 1.00", partial_quantity_expression: 0} missing_policy: "NO_RATCHET_OUTPUT" - id: "TP002_TIERED_LADDER" inputs: ["average_cost", "atr20", "quantity", "position_class"] formula_ref: "TAKE_PROFIT_LADDER_V2 # ATR 있으면 V2, 없으면 V1 fallback" output_fields: ["tier_1_price", "tier_1_quantity", "tier_2_price", "tier_2_quantity", "tier_3_reference", "remaining_quantity"] missing_policy: "NO_TAKE_PROFIT_OUTPUT" - id: "TP003_REDEPLOYMENT_COOLING" inputs: ["exit_type", "exit_date", "current_trade_date"] rules: - {if: "exit_type == 'satellite_exit'", min_wait_trading_days: 3, max_wait_trading_days: 5} - {if: "exit_type == 'core_partial_trim'", action: "cash_floor_reserved_until_next_wednesday_review"} output_field: "redeployment_allowed" on_fail: "cash_or_watch_only" sector_rotation_exit: data_required: ["섹터 1M 상대강도 순위 (전주 대비)", "해당 섹터 외국인·기관 5D 순매수 추세", "거래대금 전주 대비 변화율"] trigger_conditions: 경보_1단계: 조건: "보유종목 섹터의 1M 상대강도 순위가 전주 대비 2순위 이상 하락" 조치: "profit_lock_ratchet 재확인. tier_1 미도달 종목은 tier_1 익절가 미리 입력." 경보_2단계: 조건: "1단계 경보 + 해당 섹터 외국인·기관 5D 동반 순매도 전환" 조치: "수익권 종목 30% 부분 익절. 섹터 내 중복 ETF 우선 청산." 청산_신호: 조건: "2단계 경보 + 섹터 거래대금 3D 연속 감소 + 섹터 ETF 가격 20일선 이탈" 조치: "해당 섹터 위성 포지션 전량 청산 검토. 코어 직접보유는 개별 추세 판단." decoupling_exception: rule: "섹터 이탈에도 해당 종목이 신고가·외국인 집중매수·거래대금 폭증 3개 동시 충족 시 예외 허용" action: "예외 허용 시 trailing_stop을 ATR20 × 1.2배로 타이트하게 설정" prohibition: - "섹터 1M 상대강도 데이터 미확인 시 이 규칙 적용 금지. DATA_MISSING 표기." - "섹터 이탈 신호만으로 코어 직접보유 전량 청산 금지." output_columns: ["섹터명", "1M순위_전주", "1M순위_현재", "순위변화", "5D외국인", "5D기관", "거래대금_추세", "경보단계", "조치내용", "해당_보유종목"] event_driven: 실적발표_전_관리: D-5_부터_D-1: 조건: "현재 수익률 +10% 이상인 위성 포지션" 조치_plus10_20: "20% 선제 익절 + 손절선 본절 상향" 조치_plus20이상: "30% 선제 익절 + 손절선 진입가+10% 상향" 조치_손실구간: "추가 익절 없음. 발표 전 손절 여부만 판단." 실적발표_후_관리: 컨센서스_상회: 조건: "EPS/매출 컨센서스 5% 이상 초과 + 당일 양봉 + 거래대금 급증" 조치: "보유 유지 + trailing_stop 기준가 갱신 + tier_2 익절가 상향 재설정" 금지: "D+0 당일 추격 신규 매수 금지" 컨센서스_부합: 조건: "컨센서스 ±5% 이내" 조치: "보유 유지. D+1~D+3 수급 반응 확인 후 판단." 컨센서스_하회: 조건: "EPS/매출 컨센서스 5% 이상 하회 또는 가이던스 하향" 조치: "D+0~D+1 내 보유수량 50% 이상 익절(수익권) 또는 손절(손실권)" D+1~D+3_반응없음: 조건: "상회 발표 후 3거래일 내 주가 반응 없음" 조치: "선제 익절 외 나머지 30% 추가 익절. 논리 재검토." prohibition: - "발표 당일 EPS 수치 확인 전 추격매수·추격매도 금지" - "컨센서스 미확인 상태에서 실적 단독 수치만으로 A등급 승격 금지" - "실적 쇼크 시 09:00~09:15 전량 시장가 매도 금지 (gap_down 룰 준용)" overheated_market_exit: vix_context: # [P135] regime_adaptive VIX<18 과의 관계 명시 regime_relation: "Risk-On 구간(VIX < 18) 내 극단 과열 하위 집합" normal_risk_on: "VIX 13~18 구간은 regime_adaptive Risk-On 규칙만 적용 (overheated 미발동)" overheated_zone: "VIX <= 13 시 trigger_required_all 조건 추가 확인" behavior: "overheated_market_exit 발동 = Risk-On 규칙 + 추가 부분 익절 중첩 적용" trigger_required_all: - "VIX 13 이하 (3년 저점 수준)" - "KOSPI 52주 신고가 갱신 중 + 개인 5D 순매수 비중 일평균 50% 이상" - "보유 위성 포지션 수익률 평균 +15% 이상" optional_강화신호_any_1: - "KOSPI PER 역사적 상위 30% 이상" - "신용잔고 1년 최고 수준" action: trigger_충족시: "tiered_ladder tier_1 즉시 실행. 위성 30% 부분 익절. 중복 ETF 50% 이상 익절." 강화신호_추가시: "위성 추가 20% 익절 (총 50% 축소). 신규 매수 전면 중단." 현금_목표: "tactical_cash_buffer 5% + cash_floor 12% = 총자산 17% 이상 확보" 재진입_기준: - "VIX 18 이상 회귀 시 재진입 검토" - "KOSPI 신고가 대비 -5% 이상 조정 후 20일선 회복 시" prohibition: - "VIX 미확인 시 이 규칙 적용 금지" - "과열 신호만으로 삼성전자·SK하이닉스 직접보유 익절 금지" - "선제 익절 후 동일 종목 5거래일 내 재매수 금지" account_tax_optimization: # xref: 진입 단계 계좌 배치 원칙 → account_policy.cost_parity_rule 참조 원칙: "세후 수익이 낮은 계좌부터 익절 우선. 세금은 통제 가능한 비용." 계좌별_특성: 일반계좌: "매매차익 대주주 기준 미해당 시 비과세. 배당소득세 15.4%." ISA: "손익통산 후 200만원(서민형 400만원) 비과세, 초과분 9.9% 분리과세. ISA 내 손실 먼저 정리 후 수익 실현." 연금저축: "계좌 내 ETF 교체는 비과세 리밸런싱. 실제 인출 시 연금소득세 3.3~5.5%. 중도인출 기타소득세 16.5% 주의." 익절_우선순위: 1순위: "ISA 내 손익통산 활용 (비과세 한도 내 수익 실현)" 2순위: "연금저축 내 ETF 교체 리밸런싱 (인출 없이)" 3순위: "일반계좌 매매차익 (비과세)" 4순위: "ISA 비과세 한도 초과분 (9.9% 분리과세)" prohibition: - "ISA 비과세 한도를 손실 종목 익절로 낭비하지 않는다" - "연금저축 중도 인출 없이 계좌 내 리밸런싱을 익절로 계산하지 않는다" time_based_realization: # [Q3 / 2026-05-15] role.principles "위성 평균 보유 목표 20거래일 이상"과 D+20 청산 조건이 # 동일 일수를 사용해 "20일 보유가 손절 트리거"로 오독되는 논리 충돌 해소. # satellite_time_return_gate는 성과 불만족 시 청산 검토이지, 20일 도달이 자동 청산 아님. satellite_time_return_gate: purpose: "성과 미달 시 자본 효율성 제고 목적의 청산 검토. 20거래일 보유 목표 자체가 손절 트리거가 아님." D_plus_10: "+3% 이상 미달 → thesis 재검증" D_plus_10_opportunity_cost: # [2026-05-18_ADVANCED_EXIT_V2] 기회비용 실행 트리거 purpose: > D+10 리뷰를 '검토만' 하던 방식에서 조건부 실행 트리거로 강화. 섹터가 상승 중임에도 종목이 정체하면 자본 낭비 = 기회비용 손실. condition_all_required: - "보유 거래일 >= 10" - "profit_pct < 1.0% (본절 ±1% 이내 정체)" - "Ret5D_Sector_Proxy > 1.0% (섹터 Proxy ETF 5일 수익률 +1% 초과)" action: "TRIM_30 — 30% 부분 청산 (기회비용 조기 회수)" rationale: > 섹터가 오르는데 종목만 오르지 않으면 자본을 둔 의미가 없다. 빈번한 진출입 방지를 위해 50%가 아닌 30% 조기 정리. 잔여 70%는 thesis 유효 시 보유 연장 가능. exemptions: - "실적발표 D-10 이내: 적용 보류" - "외국인·기관 20D 순매수 전환 직후 3거래일 이내: 적용 연기" - "Ret5D_Sector_Proxy 미확인 시: DATA_MISSING — 적용 금지" output_columns: ["종목명", "보유일수", "profit_pct(%)", "Ret5D_섹터(%)", "조건충족여부", "조치"] alpha_lag_weed_out: "보유 10일 기준 KOSPI 대비 초과수익(Alpha)이 -5%p 이하일 경우, 수익/손실 무관 비중 30%를 축소하여 자본 효율성을 제고한다." D_plus_20: "수익률 +7% 미달 AND KOSPI 대비 Alpha 음수 → 보유수량 30% 청산 검토. 수익률만 미달이고 Alpha 양수면 유지." D_plus_30: "+10% 이상 미달 → 보유수량 50% 청산" D_plus_60: "time_stop 기준 연동 → 잔여 청산 검토" core_time_return_gate: D_plus_30: "+5% 이상 미달 → KOSPI 대비 초과수익 확인 후 재검토" D_plus_60: "+10% 이상 미달 → 보유수량 30% 청산 검토" D_plus_90: "time_stop 연동 → 유지 근거 없으면 50% 청산" benchmark_comparison: "종목 수익률이 동기간 KOSPI 대비 -5%p 이상 열위이면 재검토 트리거. 절대 수익 양수여도 해당." exception: - "실적발표 예정 D-10 이내: gate 적용 연기" - "외국인·기관 20D 순매수 전환 직후: gate 완화 (3거래일 추가 관찰)" prohibition: - "KOSPI 수익률 미확인 시 벤치마크 대비 열위 판단 금지" - "loss_recovery 목적으로 gate 기준 완화 금지" output_columns: ["계좌", "종목명", "진입일", "보유일수", "진입가", "현재가", "현재수익률(%)", "기간_KOSPI수익률(%)", "초과수익(%)", "gate_상태", "조치"]