meta: title: "은퇴자산포트폴리오 — 후보 발굴·지연매매 방지" parent_file: "spec/strategy/entry_gates.yaml" version: "2026-05-15-F11_entry_split" language: "ko-KR" timezone: "Asia/Seoul" role: "canonical" migration_status: "canonical_split_active" anti_late_trade_rule: principle: > 가격·수급·ATR 신호는 주문 트리거가 아니라 위험등급 신호로 우선 사용한다. 이미 큰 폭으로 상승한 종목의 강한 수급은 추격매수 근거가 될 수 없고, 이미 큰 폭으로 하락한 종목의 ATR 이탈은 즉시 투매 근거가 될 수 없다. buy_filter: forbid_chasing: - "20거래일 급등 후 신고가권 신규매수 금지" - "20일선 대비 과도한 이격 발생 시 신규매수 금지" - "기존 보유 섹터와 중복될 경우 신규매수 금지" allow_buy_only_if: - "눌림 후 회복" - "손절폭 대비 기대수익 1.8배 이상" - "포지션 크기와 손실예산이 사전에 확정" sell_filter: no_retroactive_stop: - "진입 전 손절선이 없던 기존 포지션에 사후 ATR 손절을 기계 적용하지 않는다" damaged_position_protocol: - "이미 -10% 이상 손실 포지션은 시장가 투매 금지" - "반등 매도, 시간 손절, 논리 훼손 손절로 분리" - "ETF와 개별주의 손절 기준을 다르게 적용" portfolio_rule: trim_strength_before_weakness: - "현금 확보는 약한 종목 투매보다 강한 종목의 초과비중 일부 익절을 우선 검토" - "단, 장기 코어는 월간 리밸런싱에서만 조정" calculation_gate: formula: "(target_price - entry_price) / max(1, entry_price - stop_price) >= 1.8 (RR 최소 기준)" no_trade_if: ["RR < 1.8", "손실예산 미확정", "보유수량/평단/계좌 원장 미확인"] evidence_gate: requires: - "실체결 기준 수익률과 손실률" - "3~10거래일 후행 성과 검증" - "동일 섹터 중복노출 대비 초과수익" prohibit: - "하루 가격 반응만으로 전면 교체" - "ATR 미확인 상태의 손절가·정수수량 산출" - "강한 종목 수급을 이유로 신고가 추격매수" next_generation_core_satellite_discovery: alias_of: "next_generation_satellite_position_discovery" terminology: "satellite_position은 포트폴리오 보완용 전술·보조 종목이며, core_satellite 시트의 satellite는 우주 업종이 아닌 자산배분 레이블이다." preferred_output_name: "core_satellite 후보 스크리닝" universe_build: source_order: ["KRX 상장상태·거래대금", "Naver/KRX 수급", "Yahoo/KRX 20/60D 상대강도·ATR20", "OpenDART 촉매·리스크"] minimum_liquidity: "20D 평균거래대금 100억원 이상 권장, 50억원 미만 원칙 제외" screening_axes: ["상대강도", "5D/20D 수급", "거래대금 증가", "DART 촉매", "리스크 공시", "기존 보유와의 상관"] grade: alias_of: "recommendation_grade" # [P129] A_watch_to_buy_ready=A, B_watch=B, C_theme_only=C, D_reject=D label_mapping: {A_watch_to_buy_ready: "recommendation_grade.A", B_watch: "recommendation_grade.B", C_theme_only: "recommendation_grade.C", D_reject: "recommendation_grade.D"} A_watch_to_buy_ready: "80점 이상, Price_Status=PRICE_OK, Flow_OK=Y, DART_Risk 없음, ATR20 확인, 돌파 직후가 아니라 확인 또는 눌림 구간 → 조건부 진입 후보" B_watch: "65~79점. 다음 quant_feed 갱신 대기" C_theme_only: "50~64점 또는 핵심 데이터 부족. 관찰만." D_reject: "50점 미만, 상장상태 리스크, 유동성 부족, 공시 리스크, DATA_CONFLICT" output_rule: - "고정 종목 목록·고정 업종 키워드 금지. 공개 스크리닝 통과 종목만 포함." - "통과 종목 없으면 '후보 없음' 표에 검색조건·탈락사유·다음조회일 기재." - "신규 후보는 항상 시범진입 여부와 본진입 여부를 분리해 적는다." - "risk_on 국면의 주도주는 시범진입을 늦게 하지 말고, 대신 수량을 작게 가져간다." - "보고서 제목의 core_satellite는 자산배분 분류를 뜻하며, 항공우주 업종으로 오해될 수 있는 '위성' 단독 표현은 보조 표기만 허용한다." watchlist_analysis_workflow: - "스크리닝 결과 후보 1개 이상일 때만 분석 수행." - "ATR20 없으면 관찰가만 제시. 손절가·정수수량·기대수익비 산출금지 표시." - "신고가 직후 종목은 관찰가보다 위의 가격을 제시하지 않는다." - "다만 risk_on + 20D 수급 양호 + 거래대금 확장 + 종가 고가 마감이면 관찰가가 아니라 시범진입가를 제시할 수 있다."