meta: title: "은퇴자산포트폴리오 — 서킷브레이커·거래통제" parent_file: "spec/risk/risk_control.yaml" version: "2026-05-16-F13_kosdaq_strict" language: "ko-KR" timezone: "Asia/Seoul" role: "canonical" migration_status: "canonical_split_active" risk_control: opening_volatility_filter: monitoring_window: "09:00~09:30" trigger: soft_block: "KOSPI 장중 시가 대비 -1% 이상 → 신규 위성 매수 보류" hard_block: "KOSPI 장중 시가 대비 -2% 이상 → 모든 신규 매수 중단 (기존 조건부 주문 포함)" emergency: "KOSPI 시가 대비 -3% + 거래대금 폭발 → 손절 실행 우선. 신규 매수 당일 금지." observation_required: ["09:30 이후 저가 확인", "09:30 이후 반등 거래대금", "V자 반등 또는 추가 하락 여부"] resume_condition: - "09:30~10:00 사이 KOSPI 시가 대비 +0.5% 이상 회복" - "거래대금이 전일 동시간대 대비 급격히 감소하지 않음" prohibition: - "09:00 직후 시장가 주문 금지" - "09:30 이전 신규 진입 지정가 주문 입력 금지" - "장중 급등 직후 신규 추격매수 금지" - "뉴스 첫 반응만 보고 본진입 금지. 종가 확인 전까지는 시범진입 수준만 허용" # [proposal_90 / 2026-05-16] 코스닥 종목 전용 병렬 필터 — 코스닥의 높은 일중 변동성 반영 kosdaq_parallel_filter: applicable: "코스닥 종목 신규 매수 시에만 추가 적용 (KOSPI 필터와 독립 발동)" trigger: soft_block: "KOSDAQ 장중 시가 대비 -1.5% 이상 → 코스닥 종목 신규 매수 보류" hard_block: "KOSDAQ 장중 시가 대비 -2.5% 이상 → 코스닥 종목 모든 신규 매수 중단" emergency: "KOSDAQ 장중 시가 대비 -3.5% + 거래대금 폭발 → 코스닥 보유 위성 손절 우선" resume_condition: - "09:30~10:00 사이 KOSDAQ 시가 대비 +0.7% 이상 회복" - "KOSPI 기준 opening_volatility_filter 블록이 해제된 상태" interaction: rule: "KOSPI 기준 필터와 KOSDAQ 기준 필터 중 더 강한 제한 적용." note: "코스닥 종목이라도 KOSPI 장 전체가 hard_block 상태면 코스닥 필터 별도 확인 불필요." prohibition: - "코스닥 종목 매수 시 KOSDAQ 병렬 필터 미확인 진입 금지" - "코스닥 지수 블록 중 다른 코스닥 종목으로 대체 매수 금지" concentration_brake: threshold: warning: "상위 3종목 합산 비중 65% 이상" hard_block: "상위 3종목 합산 비중 70% 이상" action: warning_시: "신규 A등급 종목 매수 시 기존 상위 종목 트림 우선 검토" hard_block_시: "신규 매수 전면 중단. 새 종목 매수 전 기존 집중 종목 부분 익절 필수." exception: - "삼성전자·SK하이닉스 합산 비중은 special_exception 기준으로 별도 계산" - "ETF와 직접보유가 동일 섹터 노출일 경우 합산 집중도로 계산" leader_concentration_override: trigger: "Leader_Concentration=1 AND Price_Status=PRICE_OK AND Flow_OK=Y AND Flow_Rows>=20 AND ATR20_Status=OK AND DART_Risk=없음" rule: "warning=1 유지, hard_block=0 유지. 신규 추격매수는 금지하되 확인된 시범진입과 본진입은 허용." prohibition: "→ master_prohibitions.P3 (집중도 브레이크 무력화 금지 포함)" weekly_circuit_breaker: measurement: "월요일 시가 → 금요일 종가 기준 포트폴리오 수익률" trigger: caution: "주간 누적 -3% 이하" circuit_break: "주간 누적 -5% 이하" action: caution_시: ["다음 주 신규 위성 매수 50% 감액", "현금 비중 12% 이상 확인"] circuit_break_시: ["다음 주 신규 매수 전면 중단", "보유 위성 time_stop 잔여일 재점검", "cash_floor 15% 이상 확보 확인"] reset_condition: ["다음 주 포트폴리오 수익률 +2% 이상 회복", "VIX caution 수준 하락"] prohibition: "→ master_prohibitions.P3 전역 적용 (서킷브레이커 발동 중 포함)" turnover_control_gate: purpose: "신호가 많아도 과잉매매는 거래비용으로 순수익률을 갉아먹는다. 주간 회전율과 비용 비율로 자동 제한한다." measurement: weekly_turnover_cost_pct: "(해당 주 총 매수금액 + 총 매도금액) × 예상수수료율(0.015%) / 총자산 × 100" threshold: caution: "weekly_turnover_cost_pct >= 0.15% → 이번 주 신규 진입 수량 50% 감액" hard_block: "weekly_turnover_cost_pct >= 0.30% → 이번 주 신규 진입 전면 보류 (손절·익절 실행은 허용)" reset_condition: "다음 월요일 00:00 KST에 자동 초기화" exception: "weekly_circuit_breaker.circuit_break 발동 중 손절 집행은 이 게이트와 관계없이 실행" # [P_C / 2026-05-15] 주간 신규 진입 건수 상한 — 비용률(%) 기준만으로는 소액 고빈도 과매매를 # 통제하지 못하는 공백 해소. 예: 0.05% × 10건 = 0.5%이지만 hard_block은 0.30% 기준이므로 미발동. weekly_trade_count: measurement: "월요일~금요일 신규 진입(매수 체결 기준) 건수. 손절·익절·리밸런싱 축소 매도는 제외." count_unit: "계좌·종목 단위. 동일 종목 분할 매수는 1건으로 합산하지 않고 체결 건수로 계산." threshold: caution: "주간 신규 진입 3건 초과 → 추가 진입은 A등급 ONLY. 수량은 계획의 최솟값(pilot_tranche)만 허용." hard_block: "주간 신규 진입 5건 초과 → 주 내 신규 매수 전면 보류. 손절·익절 실행은 허용." reset_condition: "매주 월요일 00:00 KST 자동 초기화 (weekly_turnover_cost_pct와 동시 초기화)" exception: - "weekly_circuit_breaker 발동 중 손절 집행은 카운트 제외" - "ISA·연금저축 정기 납입 후 의무 투자 집행 1건은 카운트 제외" interaction_with_cost_gate: rule: "weekly_trade_count와 weekly_turnover_cost_pct는 AND 조건으로 동시 적용." priority: "둘 중 더 강한 제한(hard_block)이 우선한다." prohibition: - "turnover_cost 미산출 상태에서 3건 이상 신규 매수 연속 집행 금지" - "비용 회피 목적으로 분할 주문을 하나의 주문으로 합산 계산하지 않는 행위 금지" - "weekly_trade_count.caution 상태에서 B등급 이하 종목 신규 진입 금지" drawdown_recovery_speed_gate: purpose: "낙폭 이후 회복이 느리면 자금이 오래 묶이고 다음 기회를 놓친다. 회복 기한 초과 시 신규 위성을 제한해 손실 확대를 방지한다." measurement: recovery_target: "낙폭 발동 기준 수익률 수준으로 포트폴리오 수익률 복귀" threshold: minus_5_level: trigger: "portfolio.monthly_minus_5 발동일 (월간 -5%) 또는 weekly_circuit_breaker.circuit_break 발동일 (주간 -5%)" deadline: "발동일로부터 15거래일" slow_action: "기한 초과 시 신규 위성 진입 수량 50% 감액. performance_brake 연동." minus_8_level: trigger: "portfolio.monthly_minus_8 발동일 (월간 -8%, portfolio_hard_stop_procedure 연계)" deadline: "발동일로부터 25거래일" slow_action: "기한 초과 시 신규 위성 전면 보류 + risk_budget 50% 감액 (performance_brake 동일 원칙 준용)." reset_condition: "포트폴리오 수익률이 해당 낙폭 기준점 이상 회복 확인 시 자동 해제" exception: "코어 포지션 손절·익절 집행은 이 게이트와 무관하게 실행" prohibition: - "회복 기한 초과 상태에서 고위험 위성 신규 진입 금지" - "→ master_prohibitions.P3 전역 적용 (회복 미완료 중 감액 무력화 포함)" # [P_A / 2026-05-15] 엔캐리 언와인드 전용 방어 모듈 — USD/JPY 조건이 correlation_shock 다단계 조건에 묻혀 # 즉각 발동이 지연되는 구조적 공백을 해소. 2024-08-05 유형 하루 폭락 대비 선행 경보 채널 분리. yen_carry_unwind: purpose: > 엔캐리 청산은 종목 펀더멘털과 무관한 글로벌 유동성 발작이다. correlation_shock의 다단계 조건(KOSPI 이탈·VIX·수급 동반 확인)을 기다리면 이미 하루 만에 -5~-10% 폭락이 발생한 이후다. USD/JPY 급락을 단독 선행 트리거로 분리해 즉각 대응한다. trigger: early_warning: condition: "USD/JPY 2거래일 내 -1.5% 이상 급락 (엔화 급등)" data_source: "macro 탭 USD_JPY_Close 또는 Yahoo Finance USDJPY=X" note: "BOJ 금리 인상 발표·YCC 정책 변경 시 당일 적용" full_alert: condition: "USD/JPY 3거래일 내 -3% 이상 급락 OR early_warning + VIX >= 20 동시 충족" data_source: "macro 탭 USD_JPY_Close, VIX_Close" action: early_warning_시: - "위성 신규매수 즉시 중단" - "중복 ETF 50% 이상 즉각 축소 검토" - "cash_floor 목표를 overheated_or_event_week 수준(10~15%)으로 상향" full_alert_시: - "portfolio_hard_stop_procedure 즉시 준용" - "cash_floor 강제 25% 이상 (risk_off 기준)" - "위성 포지션 70% 이상 1~2회 분할 지정가 축소" - "코어 직접보유는 20일선·5D 수급 동반 이탈 확인 후 부분 축소 검토" relation_to_unified_engine: note: > full_alert 발동 시 unified_engine.trigger_matrix.Systemic 조건 ('USD/JPY 3거래일 내 3% 급락')과 동시 충족으로 간주. Systemic + Portfolio/Correlation 중 1개 이상 → Tier_2 이상 자동 진입. deduplication: "unified_engine Tier 조치와 중복 실행 금지. 더 강한 Tier 조치만 1회 적용." resume_condition: - "USD/JPY 3거래일 연속 안정화 (일간 변동 ±0.5% 이내)" - "VIX 20 이하 하락 확인" - "KOSPI 20일선 회복 확인" prohibition: - "early_warning만으로 전량 청산 금지" - "USD/JPY 단순 일중 변동을 트리거로 오적용 금지 (종가 기준으로만 판정)" - "BOJ 회의 없는 단순 환율 변동에 full_alert 적용 금지" - "엔캐리 해소 후 반등 직후 즉각 위성 재진입 금지 (reentry.system_risk_exit 쿨다운 준용)" # [proposal_51 / 2026-05-15] 현금 가변 운용 공식화 — market_risk_score_based_cash sector_crash_intraday_protocol: purpose: > opening_volatility_filter(장 개시 기준)와 portfolio_hard_stop_procedure(월간 -8% 기준) 사이 공백 구간(섹터 -4~-7% 당일 급락)에 대한 즉각 대응 프로토콜. applicable_sectors: "보유 종목이 속한 주도섹터 OR KOSDAQ 종합 기준" tiers: # [proposal_89 / 2026-05-16] 코스닥 독립 트리거 엄격화 — 코스닥은 코스피 대비 -1%p 낮게 조기 발동 tier_A: condition: "주도섹터 -4% 이상 당일 하락 OR KOSDAQ -3% 이상" action: - "해당 섹터 위성 신규 탐색매수 당일 전면 중단" - "staged_entry_v2 stage_1 신규 진입 중단" - "기존 보유 위성 → existing_position_rule 기준 처리 (아래 참조)" timing: "15:30 종가 확인 후" existing_position_rule: # [proposal_69 / 2026-05-15] tier_A 중 보유 위성 anti_climax 처리 check_target: "위성 포지션 전체 (CSCS < 70인 종목)" action_by_signal_count: signal_2: condition: "anti_climax_buy_gate 신호 합계 = 2개" action: "손절선을 현 평단가(본절) 또는 최근 5D 저점 중 높은 값으로 상향 재설정. 추가 매수 금지." signal_3_plus: condition: "anti_climax_buy_gate 신호 합계 >= 3개" action: "해당 위성 보유수량의 50% 지정가 즉시 매도 (전일종가 -0.5% 이하. 시장가 금지)." signal_1_or_less: action: "손절가 재확인 후 유지. 추가 조치 없음." prohibition: - "tier_A 발동 중 위성 신규 매수 또는 pyramiding 증액 금지" tier_B: condition: "주도섹터 -5% 이상 OR KOSDAQ -4% 이상" action: - "tier_A 조치 모두 실행" - "보유 위성 중 staged_entry_v2 stage_1 물량 전량 청산 (FC 귀속)" - "cash_floor market_risk_score_based_cash MRS +2점 상향 (임시)" - "pyramiding_rule 추가 증액 중단" timing: "당일 장중 또는 15:30 직후" tier_C: condition: "주도섹터 -7% 이상 OR KOSDAQ -6% 이상 (극단 신호)" action: - "tier_B 조치 모두 실행" - "opening_volatility_filter.hard_block 준용: 다음 거래일 신규 매수 전면 중단" - "portfolio_hard_stop_procedure step_1·2 즉시 준용" - "unified_engine.trigger_matrix.Portfolio 발동 여부 확인" timing: "당일 장중 또는 15:30 직후" next_day_resume: tier_A: "다음 거래일 주도섹터 -1% 이내 안정 또는 반등 확인 후 탐색매수 재개" tier_B: "다음 거래일 주도섹터 +0.5% 이상 반등 AND KOSDAQ -1.5% 이내 AND daily_leader_scan >= 4 종목 존재 시" tier_C: "unified_engine.resume_condition 준수 (VIX·KOSPI 안정 등)" interaction: opening_volatility_filter: "sector_crash_intraday_protocol은 종가 기준. opening_volatility_filter는 개시(09:00~09:30) 기준. 독립 발동. 동시 충족 시 더 강한 제한 적용." yen_carry_unwind: "섹터 급락이 엔화 급등과 동시 발생 시 yen_carry_unwind.early_warning + 이 프로토콜 tier_B 이상 동시 발동." output_table: columns: ["섹터/지수", "당일수익률(%)", "트리거단계", "즉시조치", "다음날재개조건"] prohibition: - "섹터 급락 당일 패닉 시장가 전량 청산 금지 — 분할 지정가만 허용" - "급락 당일 V자 반등 기대로 탐색매수 조기 재개 금지" - "tier_A 발동 중 다른 종목 신규 탐색매수 예외 허용 금지"