From d39e6a034d169a10a8a1bcdf4a5c84f8a6ea992e Mon Sep 17 00:00:00 2001 From: kjh2064 Date: Sat, 13 Jun 2026 19:04:54 +0900 Subject: [PATCH] =?UTF-8?q?Fix:=20PyYAML=205.x=20composer=20=EC=97=90?= =?UTF-8?q?=EB=9F=AC=20=ED=95=B4=EA=B2=B0=EC=9D=84=20=EC=9C=84=ED=95=B4=20?= =?UTF-8?q?13b=5Fharness=5Fformulas.yaml=20=EB=82=B4=20=EC=9C=A0=EB=8B=88?= =?UTF-8?q?=EC=BD=94=EB=93=9C=20=EA=B0=80=EB=A1=9C=EC=84=A0=20=EC=A0=9C?= =?UTF-8?q?=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- spec/13b_harness_formulas.yaml | 258 ++++++++++++++++----------------- 1 file changed, 129 insertions(+), 129 deletions(-) diff --git a/spec/13b_harness_formulas.yaml b/spec/13b_harness_formulas.yaml index bd1e629..1e95f15 100644 --- a/spec/13b_harness_formulas.yaml +++ b/spec/13b_harness_formulas.yaml @@ -1,5 +1,5 @@ meta: - title: "은퇴자산포트폴리오 — 하네스 V8 공식 레지스트리 (13b)" + title: "은퇴자산포트폴리오 - 하네스 V8 공식 레지스트리 (13b)" parent_file: "spec/13_formula_registry.yaml" version: "2026-05-25_HARNESS_V8_PROPOSAL51_P1" purpose: > @@ -10,7 +10,7 @@ meta: formula_registry: formulas: - # ── [2026-05-20_HARNESS_V4] HS009 — TP 가격 유효성 검증 ────────────────── + # == [2026-05-20_HARNESS_V4] HS009 - TP 가격 유효성 검증 ================== TP_VALIDITY_CHECK_V1: purpose: > TAKE_PROFIT_LADDER_V2가 산출한 TP 가격이 현재가보다 낮은지 검증. @@ -26,17 +26,17 @@ formula_registry: state_output: field: "tp_state" values: - PENDING: "tp_price > current_price — 아직 도달하지 않음" - TP1_ALREADY_TRIGGERED: "tp1_price <= current_price — 이미 통과" - TP2_ALREADY_TRIGGERED: "tp2_price <= current_price — 이미 통과" - UNKNOWN_NO_CLOSE: "current_price 미확인 — 검증 불가" + PENDING: "tp_price > current_price - 아직 도달하지 않음" + TP1_ALREADY_TRIGGERED: "tp1_price <= current_price - 이미 통과" + TP2_ALREADY_TRIGGERED: "tp2_price <= current_price - 이미 통과" + UNKNOWN_NO_CLOSE: "current_price 미확인 - 검증 불가" prohibition: - "LLM이 tp_price=null인 경우 대체 TP 가격을 임의 산출하는 것 절대 금지" - "INVALID_TP_STALE 상태에서 HTS 주문표에 가격 기재 금지" canonical_ref: "AGENTS.md:Direction H9 (HS009)" version: "2026-05-20_HARNESS_V4" - # ── [2026-05-20_HARNESS_V4] C3 — 수익구간 단계 분류 ────────────────────── + # == [2026-05-20_HARNESS_V4] C3 - 수익구간 단계 분류 ====================== PROFIT_LOCK_STAGE_CLASSIFIER_V1: purpose: > 보유 포지션의 현재 수익률 구간을 분류하여 profit_lock_stage를 결정론적으로 산출. @@ -79,13 +79,13 @@ formula_registry: output: fields: ["profit_lock_stage", "ratchet_stop_price", "ratchet_partial_qty"] prohibition: - - "LLM이 profit_lock_stage를 임의 판정 금지 — 하네스 산출값 그대로 사용" + - "LLM이 profit_lock_stage를 임의 판정 금지 - 하네스 산출값 그대로 사용" - "profit_lock_stage=APEX_SUPER인 종목에 TP 가격 출력 금지" - "APEX_SUPER 구간에서 trailing_stop 미병기 후 '보유 유지'만 서술 금지 (E1 재발 방지)" canonical_ref: "spec/exit/take_profit.yaml:take_profit.profit_lock_ratchet.ratchet_table" version: "2026-05-20_HARNESS_V4" - # ── [2026-05-20_HARNESS_V4] M1 — 국면별 감축 비율 산출 ─────────────────── + # == [2026-05-20_HARNESS_V4] M1 - 국면별 감축 비율 산출 =================== REGIME_TRIM_WEIGHT_V1: purpose: > 시장 국면(market_regime_state) 기반으로 위성·주도주의 감축 비율 범위를 결정론적 산출. @@ -129,7 +129,7 @@ formula_registry: canonical_ref: "AGENTS.md:Direction M1 (REGIME_TRIM_LOCK)" version: "2026-05-20_HARNESS_V4" - # ── [2026-05-20_HARNESS_V4] H3 — 주도주 승자 포지션 보호 게이트 ───────── + # == [2026-05-20_HARNESS_V4] H3 - 주도주 승자 포지션 보호 게이트 ========= SECULAR_LEADER_REGIME_GATE_V1: purpose: > 삼성전자(005930)·SK하이닉스(000660)의 secular_leader_profit_lock 발동 조건을 @@ -185,7 +185,7 @@ formula_registry: canonical_ref: "spec/exit/take_profit.yaml:secular_leader_profit_lock" version: "2026-05-20_HARNESS_V4" - # ── [2026-05-20_HARNESS_V4] M4 — 5억원 은퇴자산 목표 추적 ──────────────── + # == [2026-05-20_HARNESS_V4] M4 - 5억원 은퇴자산 목표 추적 ================ GOAL_RETIREMENT_V1: purpose: > 은퇴자산 5억원 목표 대비 현재 자산의 달성률·잔여액·복리 ETA를 결정론적으로 산출. @@ -226,7 +226,7 @@ formula_registry: canonical_ref: "AGENTS.md:Direction M4" version: "2026-05-20_HARNESS_V4" - # ── [2026-05-20_G1] G1 — 현금 부족액 결정론적 산출 ─────────────────────── + # == [2026-05-20_G1] G1 - 현금 부족액 결정론적 산출 ======================= CASH_SHORTFALL_V1: purpose: > D+2 현금 현황 대비 최소 방어선·목표 현금비율까지 부족액을 GAS가 결정론적으로 산출. @@ -257,12 +257,12 @@ formula_registry: settlement_cash_d2_missing: "shortfall 산출 불가 → DATA_MISSING" prohibition: - "LLM이 '약 N원 필요' 형태로 부족액을 즉석 계산 금지 (HS011)" - - "D+0 즉시현금(immediate_cash_krw) 합산 금지 — D2_ONLY 기준" + - "D+0 즉시현금(immediate_cash_krw) 합산 금지 - D2_ONLY 기준" - "미체결 주문·세금·정산일 조정을 LLM이 임의 적용 금지" canonical_ref: "AGENTS.md:Direction G1" version: "2026-05-20_G1" - # ── [2026-05-20_G2] G2 — 현금 회복 TRIM 계획 결정론적 산출 ───────────────── + # == [2026-05-20_G2] G2 - 현금 회복 TRIM 계획 결정론적 산출 ================= TRIM_PLAN_MIN_CASH_V1: purpose: > 현금 부족액(CASH_SHORTFALL_V1) 해소를 위한 종목별 TRIM 계획을 H2 매도우선순위 기반으로 @@ -299,7 +299,7 @@ formula_registry: canonical_ref: "AGENTS.md:Direction G2" version: "2026-05-20_G2" - # ── [2026-05-20_APEX_V1] A1 — 뒷북 매수 방지 선행 알파 점수 ───────────── + # == [2026-05-20_APEX_V1] A1 - 뒷북 매수 방지 선행 알파 점수 ============= ALPHA_LEAD_SCORE_V1: purpose: > 주도 섹터·상대강도·수급가속·거래대금·과열도를 결합해 선행 파일럿 진입 가능성을 @@ -572,7 +572,7 @@ formula_registry: canonical_ref: "spec/13_formula_registry.yaml:TICK_NORMALIZER_V1" version: "2026-05-20_APEX_V1" - # ── [2026-05-20_K1] K1 — 분할 매수 트랜치 엔진 ────────────────────────── + # == [2026-05-20_K1] K1 - 분할 매수 트랜치 엔진 ========================== STAGED_ENTRY_TRANCHE_V1: purpose: > 파일럿(T1) → 돌파확인(T2) → 눌림재진입(T3) 순서로 매수 비중을 3단계로 분할. @@ -586,11 +586,11 @@ formula_registry: - {field: "profit_pct", unit: "percent"} - {field: "close_vs_ma20_pct", unit: "percent"} tranche_phases: - WAIT_PILOT_SETUP: "진입 조건 미충족 — 매수 금지" - TRANCHE_1_PILOT: "신규 파일럿 30% — PILOT_ALLOWED이며 포지션 없음" - TRANCHE_2_ADD_ON: "본진입 추가 30% — CONFIRMED_ADD_ON + 기보유" - TRANCHE_3_PULLBACK_ADD: "눌림 추가 40% — MA20 ±2% + 수익>3% + ADD_ON" - HOLD_CURRENT: "현 포지션 유지 — 추가 매수 조건 미충족" + WAIT_PILOT_SETUP: "진입 조건 미충족 - 매수 금지" + TRANCHE_1_PILOT: "신규 파일럿 30% - PILOT_ALLOWED이며 포지션 없음" + TRANCHE_2_ADD_ON: "본진입 추가 30% - CONFIRMED_ADD_ON + 기보유" + TRANCHE_3_PULLBACK_ADD: "눌림 추가 40% - MA20 ±2% + 수익>3% + ADD_ON" + HOLD_CURRENT: "현 포지션 유지 - 추가 매수 조건 미충족" output: fields: - {field: "tranche_phase", unit: "enum"} @@ -599,11 +599,11 @@ formula_registry: prohibition: - "LLM이 tranche_phase를 임의로 TRANCHE_2·TRANCHE_3으로 승격 금지" - "WAIT_PILOT_SETUP·HOLD_CURRENT 상태에서 current_tranche_allowed_pct > 0 출력 금지" - - "T1→T2→T3 순서 건너뜀 금지 — CONFIRMED_ADD_ON 없이 TRANCHE_3 진입 금지" + - "T1→T2→T3 순서 건너뜀 금지 - CONFIRMED_ADD_ON 없이 TRANCHE_3 진입 금지" canonical_ref: "AGENTS.md:Direction K1" version: "2026-05-20_K1" - # ── [2026-05-20_K2] K2 — 반등 대기 분할 매도 체계 ─────────────────────── + # == [2026-05-20_K2] K2 - 반등 대기 분할 매도 체계 ======================= K2_STAGED_REBOUND_SELL_V1: purpose: > 현금확보 매도(OVERSOLD_REBOUND_SELL 스타일)를 즉시매도(50%) + 반등대기(50%)로 분할해 @@ -641,7 +641,7 @@ formula_registry: canonical_ref: "AGENTS.md:Direction K2" version: "2026-05-20_K2" - # ── [2026-05-20_K3] K3 — 국면·섹터 연계 H2 동적 우선순위 ──────────────── + # == [2026-05-20_K3] K3 - 국면·섹터 연계 H2 동적 우선순위 ================ K3_REGIME_SELL_PRIORITY_V1: purpose: > H2 정적 순위에 시장 국면(regime) 신호를 오버레이하여 동적 우선순위를 부여한다. @@ -685,13 +685,13 @@ formula_registry: canonical_ref: "AGENTS.md:Direction K3" version: "2026-05-20_K3" - # ── [2026-05-20_L1] L1 — 섹터 로테이션 모멘텀 추적 ──────────────────── + # == [2026-05-20_L1] L1 - 섹터 로테이션 모멘텀 추적 ==================== SECTOR_ROTATION_MOMENTUM_V1: purpose: > sectorFlowRadar의 rank/prevRank/prevRankW2를 기반으로 각 섹터의 rank_delta를 계산하고 RISING/STABLE/FADING/TOPPING_OUT 모멘텀 상태를 분류한다. FADING(-15)/TOPPING_OUT(-10) 섹터 종목에 ALPHA_LEAD_SCORE_V1 페널티를 적용한다. - 결과는 sector_rotation_momentum_json으로 고착화 — LLM 재산출 금지. + 결과는 sector_rotation_momentum_json으로 고착화 - LLM 재산출 금지. inputs: - {field: "sector", unit: "string"} - {field: "rank", unit: "integer", note: "현재 주 섹터 로테이션 순위"} @@ -723,7 +723,7 @@ formula_registry: canonical_ref: "AGENTS.md:Direction L1" version: "2026-05-20_L1" - # ── [2026-05-20_L4] L4 — 분배 선행경보 (신고점수축 / 급등약류) ────────── + # == [2026-05-20_L4] L4 - 분배 선행경보 (신고점수축 / 급등약류) ========== PRE_DISTRIBUTION_EARLY_WARNING_V1: purpose: > DISTRIBUTION_RISK_SCORE_V1에 두 가지 선행경보 신호를 추가한다. @@ -747,7 +747,7 @@ formula_registry: output: field: "pre_distribution_warning" values: - EARLY_WARNING: "신고점수축 또는 급등약류 신호 발생 — 분배 선행경보" + EARLY_WARNING: "신고점수축 또는 급등약류 신호 발생 - 분배 선행경보" NONE: "선행경보 신호 없음" prohibition: - "LLM이 pre_distribution_warning=EARLY_WARNING 종목에 신규 BUY를 즉시 실행 금지" @@ -755,7 +755,7 @@ formula_registry: canonical_ref: "AGENTS.md:Direction L4" version: "2026-05-20_L4" - # ── [2026-05-20_L2] L2 — ATR 기반 자동 트레일링 손절 ─────────────────── + # == [2026-05-20_L2] L2 - ATR 기반 자동 트레일링 손절 =================== RATCHET_TRAILING_AUTO_V1: purpose: > 수익 구간(PROFIT_LOCK_20/30, APEX_TRAILING)에서 ATR20 기반 자동 트레일링 손절가를 산출한다. @@ -781,7 +781,7 @@ formula_registry: canonical_ref: "AGENTS.md:Direction L2" version: "2026-05-20_L2" - # ── [2026-05-20_L3] L3 — 국면별 동적 Heat Gate ────────────────────────── + # == [2026-05-20_L3] L3 - 국면별 동적 Heat Gate ========================== DYNAMIC_HEAT_GATE_V1: purpose: > marketRegime에 따라 Heat Gate 임계값을 동적으로 조정한다. @@ -812,7 +812,7 @@ formula_registry: canonical_ref: "AGENTS.md:Direction L3" version: "2026-05-20_L3" - # ── [2026-05-20_M1] M1 — 연속 손절 자동 매수 축소 ────────────────────── + # == [2026-05-20_M1] M1 - 연속 손절 자동 매수 축소 ====================== DRAWDOWN_GUARD_V1: purpose: > 연속 손절 횟수(consecutive_losses)에 따라 신규 매수 비중을 자동 축소한다. @@ -835,7 +835,7 @@ formula_registry: canonical_ref: "AGENTS.md:Direction M1" version: "2026-05-20_M1" - # ── [2026-05-20_M2] M2 — 포트폴리오 가중평균 베타 관리 ───────────────── + # == [2026-05-20_M2] M2 - 포트폴리오 가중평균 베타 관리 ================= PORTFOLIO_BETA_GATE_V1: purpose: > 보유 종목 가중평균 베타(beta_proxy = ret5d/kospiRet5d)를 산출하고 @@ -863,7 +863,7 @@ formula_registry: canonical_ref: "AGENTS.md:Direction M2" version: "2026-05-20_M2" - # ── [2026-05-20_M3] M3 — 분할 익절 수량 자동화 ───────────────────────── + # == [2026-05-20_M3] M3 - 분할 익절 수량 자동화 ========================= TP_QUANTITY_LADDER_V1: purpose: > TP1/TP2/TP3 도달 시 매도할 수량을 GAS에서 자동 산출해 고착화한다. @@ -889,7 +889,7 @@ formula_registry: canonical_ref: "AGENTS.md:Direction M3" version: "2026-05-20_M3" - # ── [2026-05-20_M4] M4 — 이벤트 리스크 신규 매수 홀드 ────────────────── + # == [2026-05-20_M4] M4 - 이벤트 리스크 신규 매수 홀드 ================== EVENT_RISK_HOLD_GATE_V1: purpose: > 이벤트 홀드 기간(Event_Hold_Days <= 5) 또는 DART 리스크 플래그가 있는 종목에 @@ -911,12 +911,12 @@ formula_registry: canonical_ref: "AGENTS.md:Direction M4" version: "2026-05-20_M4" - # ── [2026-05-20_M5] M5 — 섹터 편중도 한도 ────────────────────────────── + # == [2026-05-20_M5] M5 - 섹터 편중도 한도 ============================== SECTOR_CONCENTRATION_LIMIT_V1: purpose: > 단일 섹터 ≥40%(RISK_OFF:35%) 시 해당 섹터 추가 매수 차단. 상위 2개 섹터 합산 ≥65%(RISK_OFF:55%) 시 WARN_TOP2. - 포트폴리오 섹터 분산을 GAS가 결정론적으로 산출 — LLM 임의 완화 금지. + 포트폴리오 섹터 분산을 GAS가 결정론적으로 산출 - LLM 임의 완화 금지. inputs: - {field: "weight_pct", unit: "pct"} - {field: "sector", unit: "string"} @@ -934,7 +934,7 @@ formula_registry: canonical_ref: "AGENTS.md:Direction M5" version: "2026-05-20_M5" - # ── [2026-05-20_N1] N1 — 국면별 포지션 사이즈 스케일 ───────────────────── + # == [2026-05-20_N1] N1 - 국면별 포지션 사이즈 스케일 ===================== POSITION_SIZE_REGIME_SCALE_V1: purpose: > 국면에 따라 ATR 기반 신규 매수 수량(atrQty)에 스케일 배수를 적용한다. @@ -945,14 +945,14 @@ formula_registry: output: field: "regime_size_scale" schema: - regime_size_scale: "0.25~1.2 배수 — atrQty에 곱해지는 국면 스케일" + regime_size_scale: "0.25~1.2 배수 - atrQty에 곱해지는 국면 스케일" prohibition: - "regime_size_scale 값을 LLM이 임의 변경 금지" - "매수 수량 산출 시 반드시 GAS 확정 regime_size_scale 사용" canonical_ref: "AGENTS.md:Direction N1" version: "2026-05-20_N1" - # ── [2026-05-20_N2] N2 — 거래량 돌파 확인 게이트 ───────────────────────── + # == [2026-05-20_N2] N2 - 거래량 돌파 확인 게이트 ========================= VOLUME_BREAKOUT_CONFIRM_V1: purpose: > 52주 신고가 97% 이상 부근에서 진입 시 당일 거래량이 5일 평균 거래량×1.2 미만이면 @@ -976,7 +976,7 @@ formula_registry: canonical_ref: "AGENTS.md:Direction N2" version: "2026-05-20_N2" - # ── [2026-05-20_N3] N3 — 손절가 적정성 검증 ───────────────────────────── + # == [2026-05-20_N3] N3 - 손절가 적정성 검증 ============================= STOP_PRICE_ADEQUACY_V1: purpose: > 보유 종목의 수동 손절가가 ATR 기반 권고 손절가 대비 너무 넓게 설정되었는지 검증한다. @@ -1007,7 +1007,7 @@ formula_registry: canonical_ref: "AGENTS.md:Direction N3" version: "2026-05-20_N3" - # ── [2026-05-20_N4] N4 — 장기 보유 재검토 플래그 ───────────────────────── + # == [2026-05-20_N4] N4 - 장기 보유 재검토 플래그 ========================= HOLDING_STALE_REVIEW_V1: purpose: > account_snapshot의 entry_date 기준으로 보유 기간을 산출한다. @@ -1031,7 +1031,7 @@ formula_registry: canonical_ref: "AGENTS.md:Direction N4" version: "2026-05-20_N4" - # ── [2026-05-20_N5] N5 — 국면별 현금 최소 비율 상향 ───────────────────── + # == [2026-05-20_N5] N5 - 국면별 현금 최소 비율 상향 ===================== REGIME_CASH_UPLIFT_V1: purpose: > MRS 기반 cash_floor보다 더 높은 현금 최소 비율이 국면(regime)상 요구될 때 @@ -1047,14 +1047,14 @@ formula_registry: NEUTRAL: 0 output: field: "regime_cash_uplift_min_pct" - note: "max(mrs_cash_min_pct, regime_min_pct) — 실제 적용된 현금 최소 비율" + note: "max(mrs_cash_min_pct, regime_min_pct) - 실제 적용된 현금 최소 비율" prohibition: - "regime_cash_uplift_min_pct를 LLM이 임의 낮추기 금지" - "BELOW_FLOOR 상태에서 매수 신호 생성 금지" canonical_ref: "AGENTS.md:Direction N5" version: "2026-05-20_N5" - # ── [2026-05-20_O1] O1 — 개별 종목 비중 상한 ───────────────────────────── + # == [2026-05-20_O1] O1 - 개별 종목 비중 상한 ============================= SINGLE_POSITION_WEIGHT_CAP_V1: purpose: > 개별 종목의 포트폴리오 비중(weight_pct)이 국면별 상한을 초과하면 OVERWEIGHT_TRIM. @@ -1076,7 +1076,7 @@ formula_registry: canonical_ref: "AGENTS.md:Direction O1" version: "2026-05-20_O1" - # ── [2026-05-20_O2] O2 — 반도체 클러스터 합산 비중 게이트 ───────────────── + # == [2026-05-20_O2] O2 - 반도체 클러스터 합산 비중 게이트 ================= SEMICONDUCTOR_CLUSTER_GATE_V1: purpose: > 005930(삼성전자) + 000660(SK하이닉스) 합산 비중이 시장 국면별 상한을 초과하면 CLUSTER_BLOCK. @@ -1101,7 +1101,7 @@ formula_registry: canonical_ref: "AGENTS.md:Direction O2" version: "2026-05-20_O2" - # ── [2026-05-20_O3] O3 — 포트폴리오 고점 대비 낙폭 게이트 ────────────────── + # == [2026-05-20_O3] O3 - 포트폴리오 고점 대비 낙폭 게이트 ================== PORTFOLIO_DRAWDOWN_GATE_V1: purpose: > 총자산(total_asset_krw)의 역대 고점(settings.portfolio_peak_krw) 대비 낙폭을 산출한다. @@ -1125,7 +1125,7 @@ formula_registry: canonical_ref: "AGENTS.md:Direction O3" version: "2026-05-20_O3" - # ── [2026-05-20_O4] O4 — 최근 승률 하락 매수 축소 게이트 ──────────────────── + # == [2026-05-20_O4] O4 - 최근 승률 하락 매수 축소 게이트 ==================== WIN_LOSS_STREAK_GUARD_V1: purpose: > 최근 30거래 승률(win_rate_30)이 임계값 이하로 하락하면 신규 매수 비중을 자동 축소한다. @@ -1144,7 +1144,7 @@ formula_registry: output: fields: win_loss_streak_state: "EDGE_OK/EDGE_WEAK/EDGE_DEGRADED/EDGE_CRITICAL/INSUFFICIENT_HISTORY" - win_loss_streak_buy_scale: "0.25/0.50/0.75/1.0 — atrQty에 곱해지는 배수" + win_loss_streak_buy_scale: "0.25/0.50/0.75/1.0 - atrQty에 곱해지는 배수" win_loss_streak_win_rate_pct: "최근 30거래 승률 %" prohibition: - "win_loss_streak_buy_scale를 LLM이 임의 복원 금지" @@ -1152,7 +1152,7 @@ formula_registry: canonical_ref: "AGENTS.md:Direction O4" version: "2026-05-20_O4" - # ── [2026-05-20_O5] O5 — 동시 보유 종목 수 상한 ──────────────────────────── + # == [2026-05-20_O5] O5 - 동시 보유 종목 수 상한 ============================ POSITION_COUNT_LIMIT_V1: purpose: > 동시 보유 종목 수가 국면별 상한을 초과하면 POSITION_COUNT_BLOCK. @@ -1175,7 +1175,7 @@ formula_registry: canonical_ref: "AGENTS.md:Direction O5" version: "2026-05-20_O5" - # ── [2026-05-20_P1] P1 — 손절가 이탈 즉시 경보 ───────────────────────── + # == [2026-05-20_P1] P1 - 손절가 이탈 즉시 경보 ========================= STOP_BREACH_ALERT_V1: purpose: > 보유 종목 중 close <= stop_price인 종목을 즉시 경보한다. @@ -1197,7 +1197,7 @@ formula_registry: canonical_ref: "AGENTS.md:Direction P1" version: "2026-05-20_P1" - # ── [2026-05-20_P2] P2 — 익절가 도달 즉각 수량 연계 ──────────────────── + # == [2026-05-20_P2] P2 - 익절가 도달 즉각 수량 연계 ==================== TP_TRIGGER_ALERT_V1: purpose: > 보유 종목 중 close >= tp1_price 또는 close >= tp2_price인 종목을 감지한다. @@ -1218,7 +1218,7 @@ formula_registry: canonical_ref: "AGENTS.md:Direction P2" version: "2026-05-20_P2" - # ── [2026-05-20_P3] P3 — Heat 편중도 경보 ─────────────────────────────── + # == [2026-05-20_P3] P3 - Heat 편중도 경보 =============================== HEAT_CONCENTRATION_ALERT_V1: purpose: > 단일 종목의 Heat(=(avgCost-stopPrice)×qty)가 전체 totalHeatKrw의 50% 이상이면 @@ -1240,7 +1240,7 @@ formula_registry: canonical_ref: "AGENTS.md:Direction P3" version: "2026-05-20_P3" - # ── [2026-05-20_P4] P4 — 국면 전환 경보 ───────────────────────────────── + # == [2026-05-20_P4] P4 - 국면 전환 경보 ================================= REGIME_TRANSITION_ALERT_V1: purpose: > 직전 실행 국면(settings.prev_market_regime) vs 현재 marketRegime를 비교한다. @@ -1260,7 +1260,7 @@ formula_registry: canonical_ref: "AGENTS.md:Direction P4" version: "2026-05-20_P4" - # ── [2026-05-20_P5] P5 — 포트폴리오 건전성 종합 점수 ──────────────────── + # == [2026-05-20_P5] P5 - 포트폴리오 건전성 종합 점수 ==================== PORTFOLIO_HEALTH_SCORE_V1: purpose: > O1~P4까지 모든 게이트 상태를 집계해 단일 건전성 레이블을 산출한다. @@ -1343,7 +1343,7 @@ formula_registry: - "score<40 -> PASS" version: "2026-05-20_CORE_SAT_TIMING_V1" - # ── [2026-05-20_H6] H6 — 가짜 매도 신호 차단 홀드 게이트 ───────────────── + # == [2026-05-20_H6] H6 - 가짜 매도 신호 차단 홀드 게이트 ================= ANTI_WHIPSAW_HOLD_GATE_V1: purpose: > 연속 매도 신호 5일 이상 + 기관·외국인 순매수 조합을 감지해 가짜 매도(whipsaw)를 @@ -1387,7 +1387,7 @@ formula_registry: canonical_ref: "engine_harness_upgrade_proposal_result.txt:ANTI_WHIPSAW_HOLD_GATE_V1" version: "2026-05-20_HARNESS_H6" - # ── [2026-05-20_H7] H7 — 4경로 결정론적 현금확보 라우터 ─────────────────── + # == [2026-05-20_H7] H7 - 4경로 결정론적 현금확보 라우터 =================== SMART_CASH_RAISE_V2: purpose: > 현금 부족 상황에서 포트폴리오·종목 상태에 따라 4가지 경로(ROUTE_A~D) 중 하나를 @@ -1456,7 +1456,7 @@ formula_registry: canonical_ref: "engine_harness_upgrade_proposal_result.txt:SMART_CASH_RAISE_V2" version: "2026-05-23_HARNESS_V5_PROPOSAL46" - # ── [2026-05-23_PROPOSAL46] PA1 — 정반합 사전 예측 알파 엔진 ───────────── + # == [2026-05-23_PROPOSAL46] PA1 - 정반합 사전 예측 알파 엔진 ============= PREDICTIVE_ALPHA_ENGINE_V1: purpose: > 正(매수 모멘텀) + 反(분배/과열 신호)를 합산한 방향성 신뢰도(合)를 결정론적으로 산출. @@ -1525,7 +1525,7 @@ formula_registry: canonical_ref: "AGENTS.md:Direction PA1, temp/request_result.txt:proposal_46" version: "2026-05-23_PROPOSAL46" - # ── [2026-05-23_PROPOSAL46] PA2 — 뒷박 방지 3중 게이트 V2 ────────────────── + # == [2026-05-23_PROPOSAL46] PA2 - 뒷박 방지 3중 게이트 V2 ================== ANTI_LATE_ENTRY_GATE_V2: purpose: > 기존 ANTI_CHASING_VELOCITY_V1(당일 속도만 체크)의 허점 보완. @@ -1575,11 +1575,11 @@ formula_registry: prohibition: - "BLOCK 상태에서 BUY/STAGED_BUY/ADD_ON 출력 금지" - "entry_grade=F 자동 입력 시 PATTERN_BLACKLIST 카운트 +1 강제" - - "ANTI_CHASING_VELOCITY_V1(V1) 단독 인용 금지 — 이 V2가 V1을 완전 대체" + - "ANTI_CHASING_VELOCITY_V1(V1) 단독 인용 금지 - 이 V2가 V1을 완전 대체" canonical_ref: "AGENTS.md:Direction A2 (V2로 업그레이드)" version: "2026-05-23_PROPOSAL46" - # ── [2026-05-23_PROPOSAL46] PA3 — 현금확보 매도 세련화 엔진 V2 ───────────── + # == [2026-05-23_PROPOSAL46] PA3 - 현금확보 매도 세련화 엔진 V2 ============= CASH_PRESERVATION_SELL_ENGINE_V2: purpose: > K2(50/50 분할) + C1(4단계 폭포수) + C2(타이밍 결정)를 단일 엔진으로 통합. @@ -1651,7 +1651,7 @@ formula_registry: canonical_ref: "AGENTS.md:Direction K2/C1/C2, temp/request_result.txt:proposal_46#1-3" version: "2026-05-23_PROPOSAL46" - # ── [2026-05-23_PROPOSAL46] PA4 — 미시/거시/국제정세 동기화 하네스 ────────── + # == [2026-05-23_PROPOSAL46] PA4 - 미시/거시/국제정세 동기화 하네스 ========== MACRO_EVENT_SYNCHRONIZER_V1: purpose: > 외국인 순매도 일수·USD/KRW·FOMC 일정·국내 CPI·VIX 등 거시 변수를 @@ -1708,20 +1708,20 @@ formula_registry: fomc_days_remaining: "integer or null" prohibition: - "MACRO_CRITICAL 상태에서 포지션 증가 서술 금지 (Direction D2[10])" - - "LLM이 macro_risk_score를 임의 계산 금지 — 하네스 출력만 인용" + - "LLM이 macro_risk_score를 임의 계산 금지 - 하네스 출력만 인용" - "external_context_json 데이터를 주문 판단에 혼입 금지 (G3)" canonical_ref: "AGENTS.md:Direction G3/ME1, temp/request_result.txt:proposal_46#1-4" version: "2026-05-23_PROPOSAL46" - # ── [2026-05-23_PROPOSAL46] PA5 — 데이터정합성/방향성/일관성 검증기 V2 ─────── + # == [2026-05-23_PROPOSAL46] PA5 - 데이터정합성/방향성/일관성 검증기 V2 ======= CONSISTENCY_VALIDATOR_V2: purpose: > 기존 validate_harness_context.py(키 존재 여부만)를 12개 논리 검증 항목으로 확장. - 일관성 점수 < 90%이면 보고서 생성 자체 BLOCK — 오염 데이터 분석 원천 차단. + 일관성 점수 < 90%이면 보고서 생성 자체 BLOCK - 오염 데이터 분석 원천 차단. DETERMINISTIC_ROUTING_ENGINE_V1의 Step 2(pre-flight)에서 가장 먼저 실행. inputs: - {field: "settlement_cash_d2_krw", unit: "KRW", note: "CV_08 현금 경로 검증"} - - {field: "harness_context", unit: "json", note: "전체 harness_context 객체 — CV_01~CV_12 검증 원천"} + - {field: "harness_context", unit: "json", note: "전체 harness_context 객체 - CV_01~CV_12 검증 원천"} checks: CV_01: name: "sell_priority 방향 일관성" @@ -1786,7 +1786,7 @@ formula_registry: canonical_ref: "AGENTS.md:Direction D1(Step 2), temp/request_result.txt:proposal_46#1-5" version: "2026-05-23_PROPOSAL46" - # ── [2026-05-24_PROPOSAL50] EJCE-V1 — 전문가 3관점 합의 게이트 ───────────── + # == [2026-05-24_PROPOSAL50] EJCE-V1 - 전문가 3관점 합의 게이트 ============= EXPERT_JUDGMENT_CONSENSUS_ENGINE_V1: purpose: > Analyst(기술적 관점)·Trader(실행 타이밍)·Quant(리스크 수치) 3관점 중 @@ -1794,9 +1794,9 @@ formula_registry: buy_permission_json.buy_permission_state=ALLOW여도 NO_BUY 종목 BUY 절대 차단. inputs: - {field: "ticker", unit: "string"} - - {field: "df", unit: "object — market data feed"} - - {field: "paeRow", unit: "object — PAE output row"} - - {field: "hApex", unit: "object — harness apex context"} + - {field: "df", unit: "object - market data feed"} + - {field: "paeRow", unit: "object - PAE output row"} + - {field: "hApex", unit: "object - harness apex context"} output: field: "ejce_json" schema: @@ -1814,7 +1814,7 @@ formula_registry: canonical_ref: "AGENTS.md:Direction EJ1" version: "2026-05-24_PROPOSAL50" - # ── [2026-05-24_PROPOSAL50] SCRS-V2 — 현금확보 최적 매도조합 ───────────── + # == [2026-05-24_PROPOSAL50] SCRS-V2 - 현금확보 최적 매도조합 ============= SMART_CASH_RECOVERY_SELL_ENGINE_V2: purpose: > 현금부족(cashShortfallInfo) 상황에서 value_damage_score 최소화 조합을 @@ -1824,7 +1824,7 @@ formula_registry: - {field: "holdings", unit: "array"} - {field: "dfMap", unit: "object"} - {field: "cashShortfallInfo", unit: "object"} - - {field: "h2", unit: "object — regime layer"} + - {field: "h2", unit: "object - regime layer"} output: field: "scrs_v2_json" schema: @@ -1839,7 +1839,7 @@ formula_registry: canonical_ref: "AGENTS.md:Direction C3" version: "2026-05-24_PROPOSAL50" - # ── [2026-05-24_PROPOSAL50] MRAG-V2 — 거시 국면 적응 게이트 ───────────── + # == [2026-05-24_PROPOSAL50] MRAG-V2 - 거시 국면 적응 게이트 ============= MACRO_REGIME_ADAPTIVE_GATE_V2: purpose: > L1(미시)·L2(거시)·L3(글로벌)·L4(이벤트) 4레이어 각 0~25점 합산 @@ -1847,9 +1847,9 @@ formula_registry: position_size_scale을 결정론적으로 동적 조정. ME1과 MRAG-V2 중 더 엄격한 값을 effective_heat_gate_threshold로 확정. inputs: - - {field: "macroJson", unit: "object — macro event data"} - - {field: "mesResult", unit: "object — MACRO_EVENT_SYNCHRONIZER_V1 output"} - - {field: "hApex", unit: "object — harness apex context"} + - {field: "macroJson", unit: "object - macro event data"} + - {field: "mesResult", unit: "object - MACRO_EVENT_SYNCHRONIZER_V1 output"} + - {field: "hApex", unit: "object - harness apex context"} output: field: "mrag_v2_json" schema: @@ -1871,17 +1871,17 @@ formula_registry: canonical_ref: "AGENTS.md:Direction ME2" version: "2026-05-24_PROPOSAL50" - # ── [2026-05-24_PROPOSAL50] M5 V1.1 — 반도체 집중 비중 강제 감축 ───────── + # == [2026-05-24_PROPOSAL50] M5 V1.1 - 반도체 집중 비중 강제 감축 ========= MANDATORY_REDUCTION_PLAN_V1: purpose: > 반도체 클러스터 비중이 cluster_limit * 2.0 초과 시 4주 분할 감축 계획을 결정론적으로 생성. RS_BROKEN→ETF→APEX_SUPER 우선순위로 주당 매도수량 배정. LLM이 "시장 보면서 결정" 임의 유보 금지. inputs: - - {field: "semiconductorClusterGate", unit: "object — cluster gate result"} + - {field: "semiconductorClusterGate", unit: "object - cluster gate result"} - {field: "holdings", unit: "array"} - {field: "dfMap", unit: "object"} - - {field: "h3", unit: "object — cash floor layer"} + - {field: "h3", unit: "object - cash floor layer"} - {field: "totalAsset", unit: "KRW integer"} output: field: "mandatory_reduction_json" @@ -1900,14 +1900,14 @@ formula_registry: canonical_ref: "AGENTS.md:Direction A2 (M5 V1.1)" version: "2026-05-24_PROPOSAL50" - # ── [2026-05-24_PROPOSAL50] DSLE-V1 — 결정론적 서빙 잠금 ───────────────── + # == [2026-05-24_PROPOSAL50] DSLE-V1 - 결정론적 서빙 잠금 ================= DETERMINISTIC_SERVING_LOCK_ENGINE_V1: purpose: > 11개 스테이지 토큰 및 numeric_generation_allowed=0을 통해 LLM이 가격·수량·수익률 등 모든 숫자를 자체 생성하는 것을 완전 차단. LLM 역할을 NARRATE_HARNESS_OUTPUT·SYNTHESIZE_RISK_CONTEXT·PRESENT_SCENARIO로 한정. inputs: - - {field: "hApex", unit: "object — harness apex context"} + - {field: "hApex", unit: "object - harness apex context"} - {field: "capturedAtIso", unit: "ISO8601 string"} - {field: "now", unit: "Date object"} output: @@ -1927,20 +1927,20 @@ formula_registry: canonical_ref: "AGENTS.md:Direction D3" version: "2026-05-24_PROPOSAL50" - # ── [2026-05-24_PROPOSAL50] HS007 — 조건부 접속사 Hard-Lock ───────────── + # == [2026-05-24_PROPOSAL50] HS007 - 조건부 접속사 Hard-Lock ============= VALIDATE_ORDER_CONDITION_V1: purpose: > 주문 조건 텍스트에 다중 조건 접속사('또는', '동시 충족', '실패 시' 등)가 포함되면 INVALID_MULTI_CONDITION 반환. HTS 자동주문은 단일 지정가만 허용. inputs: - - {field: "order_condition_text", unit: "string — 주문 조건 텍스트"} + - {field: "order_condition_text", unit: "string - 주문 조건 텍스트"} output: field: "order_condition_validation" schema: valid: "boolean" status: "OK | INVALID_MULTI_CONDITION" matched_conjunctions: "array of strings" - resolution: "string — 단일 조건 기재 안내" + resolution: "string - 단일 조건 기재 안내" formula_id: "VALIDATE_ORDER_CONDITION_V1" prohibition: - "INVALID_MULTI_CONDITION 판정된 행을 HTS 주문표에 포함 금지" @@ -1948,14 +1948,14 @@ formula_registry: canonical_ref: "AGENTS.md:Direction 0 (HS007)" version: "2026-05-24_PROPOSAL50" - # ── [2026-05-24_PROPOSAL50] H10 — 그림자 원장(Shadow Ledger) ───────────── + # == [2026-05-24_PROPOSAL50] H10 - 그림자 원장(Shadow Ledger) ============= SHADOW_LEDGER_V1: purpose: > BLOCKED/INVALID 블루프린트를 HTS 주문표에서 제외하되, 차단 사유 및 산출 지표를 투명하게 보존. 사용자의 사후 평가·오버라이드를 지원. inputs: - - {field: "blueprints", unit: "array — order_blueprint_json"} - - {field: "dfMap", unit: "object — 종목별 data feed map"} + - {field: "blueprints", unit: "array - order_blueprint_json"} + - {field: "dfMap", unit: "object - 종목별 data feed map"} output: field: "shadow_ledger_json" schema: @@ -1971,21 +1971,21 @@ formula_registry: stop_loss_calc: "산출 손절가 (KRW)" take_profit_calc: "산출 익절가 (KRW)" base_qty_calc: "이론 수량 (주)" - override_possible: "true — 사용자 오버라이드 가능" + override_possible: "true - 사용자 오버라이드 가능" prohibition: - "BLOCKED 종목의 산출 지표를 null 처리하거나 은폐 금지 (HS010 위반)" - "Shadow Ledger 종목을 HTS 주문표에 포함 금지" canonical_ref: "AGENTS.md:Direction H10 (HS010_REVISED)" version: "2026-05-24_PROPOSAL50" - # ── [2026-05-24_PROPOSAL50] D2 — LLM 12가지 금지행동 잠금 ───────────────── + # == [2026-05-24_PROPOSAL50] D2 - LLM 12가지 금지행동 잠금 ================= LLM_SERVING_CONSTRAINT_V1: purpose: > LLM의 역할을 하네스 출력 복사·해설·위험 합성으로 엄격히 제한. 12가지 금지행동 체크리스트를 보고서 조립 직전 GAS가 평가하여 위반 가능성이 있으면 INVALID_LLM_OVERRIDE 태그를 반환. inputs: - - {field: "hApex", unit: "object — harness apex context (전체 하네스 결과)"} + - {field: "hApex", unit: "object - harness apex context (전체 하네스 결과)"} output: field: "llm_serving_constraint_json" schema: @@ -2001,7 +2001,7 @@ formula_registry: canonical_ref: "AGENTS.md:Direction D2" version: "2026-05-24_PROPOSAL50" - # ── [2026-05-24_PROPOSAL50] H6 — 거래대금 급증 과열신호 ───────────────── + # == [2026-05-24_PROPOSAL50] H6 - 거래대금 급증 과열신호 ================= AVG_TRADE_VALUE_SIGNAL_V1: purpose: > secular_leader(005930·000660) PROFIT_LOCK_STAGE_20 구간에서 @@ -2009,9 +2009,9 @@ formula_registry: 4개 과열신호 합산 판정에 반영하여 APEX_SUPER 구간 부분익절 허용 여부를 결정. inputs: - {field: "ticker", unit: "string"} - - {field: "avg_trade_val_5d", unit: "KRW — 5일 평균 거래대금"} - - {field: "avg_trade_val_20d", unit: "KRW — 20일 평균 거래대금"} - - {field: "profit_lock_stage", unit: "string — PROFIT_LOCK_STAGE_20 여부 확인"} + - {field: "avg_trade_val_5d", unit: "KRW - 5일 평균 거래대금"} + - {field: "avg_trade_val_20d", unit: "KRW - 20일 평균 거래대금"} + - {field: "profit_lock_stage", unit: "string - PROFIT_LOCK_STAGE_20 여부 확인"} expressions: ratio_5d_vs_20d: "avg_trade_val_5d / avg_trade_val_20d" overheat_triggered: "ratio_5d_vs_20d >= 3.0" @@ -2020,7 +2020,7 @@ formula_registry: field: "avg_trade_val_signal_json" schema: ticker: "종목 코드" - applicable: "boolean — secular_leader AND STAGE_20 여부" + applicable: "boolean - secular_leader AND STAGE_20 여부" signal: "OVERHEAT_TRADE_VALUE | NORMAL | NOT_APPLICABLE" ratio_5d_vs_20d: "number" overheat_triggered: "boolean" @@ -2032,16 +2032,16 @@ formula_registry: canonical_ref: "AGENTS.md:Direction H6" version: "2026-05-24_PROPOSAL50" - # ── [PROPOSAL51] P0-B — 매도 주문 3중 가격 검증 ───────────────────────────── + # == [PROPOSAL51] P0-B - 매도 주문 3중 가격 검증 ============================= SELL_PRICE_SANITY_V2: purpose: > buildOrderBlueprint_ 산출 매도/STOP_LOSS 주문에 대해 3조건 가격 역전을 검증. validation_status를 인라인 재기록하여 EXPORT_GATE가 자동 차단. LLM이 가격 역전 주문을 HTS에 입력하는 사고를 원천 차단. inputs: - - {field: "limit_price", unit: "KRW — 지정가"} - - {field: "stop_price", unit: "KRW — 손절가"} - - {field: "auto_trailing_stop", unit: "KRW — profit_preservation 자동 추적 손절가"} + - {field: "limit_price", unit: "KRW - 지정가"} + - {field: "stop_price", unit: "KRW - 손절가"} + - {field: "auto_trailing_stop", unit: "KRW - profit_preservation 자동 추적 손절가"} checks: CHECK_1: "limit_price < final_stop → INVALID_PRICE_INVERSION" CHECK_2: "stop_price < auto_trailing_stop → INVALID_TRAILING_STOP_BREACH" @@ -2050,17 +2050,17 @@ formula_registry: field: "spsv2_verdict" values: SPSV2_PASS: "3조건 모두 통과" - INVALID_PRICE_INVERSION: "지정가 < 최종 손절가 — 역전" - INVALID_TRAILING_STOP_BREACH: "손절가 < auto_trailing_stop — 추적 손절 위반" - INVALID_ZERO_PRICE: "지정가=0 — 미확정 가격" - NOT_SELL_SKIP: "SELL/STOP_LOSS 외 주문 — 검증 스킵" + INVALID_PRICE_INVERSION: "지정가 < 최종 손절가 - 역전" + INVALID_TRAILING_STOP_BREACH: "손절가 < auto_trailing_stop - 추적 손절 위반" + INVALID_ZERO_PRICE: "지정가=0 - 미확정 가격" + NOT_SELL_SKIP: "SELL/STOP_LOSS 외 주문 - 검증 스킵" prohibition: - "SPSV2 검증 전 Export Gate 실행 금지" - "INVALID 상태 주문의 HTS 입력 절대 금지" gs_function: "calcSellPriceSanityV2_" version: "2026-05-25_PROPOSAL51" - # ── [PROPOSAL51] P1-A — Export Gate V2 ────────────────────────────────────── + # == [PROPOSAL51] P1-A - Export Gate V2 ====================================== EXPORT_GATE_V2: purpose: > EXPORT_READY / REVIEW_ONLY / PENDING_EXPORT 3단계 분류. @@ -2076,22 +2076,22 @@ formula_registry: CHECK_7: "portfolio_health_score 숫자형 확인" CHECK_8: "SEMICONDUCTOR_CLUSTER_SYNC 정합성 확인" tiers: - EXPORT_READY: "모든 체크 PASS — HTS 입력 허용" - REVIEW_ONLY: "WARN 체크 존재, FAIL 없음 — 검토 후 진행" - PENDING_EXPORT: "FAIL 체크 존재 — HTS 입력 금지" + EXPORT_READY: "모든 체크 PASS - HTS 입력 허용" + REVIEW_ONLY: "WARN 체크 존재, FAIL 없음 - 검토 후 진행" + PENDING_EXPORT: "FAIL 체크 존재 - HTS 입력 금지" gs_function: "calcExportGate_" version: "2026-05-25_PROPOSAL51" - # ── [PROPOSAL51] P0-C — 반도체 클러스터 단일 소스 동기화 ───────────────────── + # == [PROPOSAL51] P0-C - 반도체 클러스터 단일 소스 동기화 ===================== SEMICONDUCTOR_CLUSTER_SYNC_V1: purpose: > SEMICONDUCTOR_CLUSTER_GATE_V1 결과 ↔ MANDATORY_REDUCTION_PLAN_V1 is_mandatory 정합성 보장. combined_pct > cap_pct * 2 → is_mandatory=true 강제. 단일 소스(클러스터 게이트)가 의무 감축 여부를 결정. inputs: - - {field: "cluster_pct", unit: "% — mandatory_reduction_json.cluster_pct"} - - {field: "cluster_limit_pct", unit: "% — mandatory_reduction_json.cluster_limit_pct"} - - {field: "is_mandatory", unit: "boolean — 교정 전 값"} + - {field: "cluster_pct", unit: "% - mandatory_reduction_json.cluster_pct"} + - {field: "cluster_limit_pct", unit: "% - mandatory_reduction_json.cluster_limit_pct"} + - {field: "is_mandatory", unit: "boolean - 교정 전 값"} expression: "cluster_pct > cluster_limit_pct * 2 ? is_mandatory=true : is_mandatory=false" output: field: "cluster_sync_result_json" @@ -2103,11 +2103,11 @@ formula_registry: gs_function: "syncSemiconductorCluster_" version: "2026-05-25_PROPOSAL51" - # ── [PROPOSAL51] P2-B — 사전 분배 레이더 V2 ───────────────────────────────── + # == [PROPOSAL51] P2-B - 사전 분배 레이더 V2 ================================= PROACTIVE_SELL_RADAR_V2: purpose: > 8가지 신호로 분배(설거지) 3일 전 조기 감지 → CRITICAL/WARNING/WATCH/CLEAR 분류. - DISTRIBUTION_SELL_DETECTOR V1.1 (사후 확인) 보완 — 사전 예측 기능. + DISTRIBUTION_SELL_DETECTOR V1.1 (사후 확인) 보완 - 사전 예측 기능. signals: SIG_1: "고가 2% 이내 + 거래량 30% 수축 (weight=2.0)" SIG_2: "기관 5일 순매도 전환 (weight=2.0)" @@ -2118,14 +2118,14 @@ formula_registry: SIG_7: "RSI 70이상 + 5일 수익률 음수 (weight=1.5)" SIG_8: "auto_trailing_stop 2% 이내 근접 (weight=2.0)" levels: - CRITICAL: "weighted_sum >= 5.0 — 즉시 매도 검토" - WARNING: "weighted_sum >= 3.0 — 감축 계획 수립" - WATCH: "weighted_sum >= 1.5 — 주의 모니터링" - CLEAR: "weighted_sum < 1.5 — 정상" + CRITICAL: "weighted_sum >= 5.0 - 즉시 매도 검토" + WARNING: "weighted_sum >= 3.0 - 감축 계획 수립" + WATCH: "weighted_sum >= 1.5 - 주의 모니터링" + CLEAR: "weighted_sum < 1.5 - 정상" gs_function: "calcProactiveSellRadarV2_" version: "2026-05-25_PROPOSAL51" - # ── [PROPOSAL51] P2-A — 뒷박 차단 게이트 V3 ──────────────────────────────── + # == [PROPOSAL51] P2-A - 뒷박 차단 게이트 V3 ================================ ANTI_LATE_ENTRY_GATE_V3: purpose: > V2의 3게이트(velocity_1d/velocity_5d/distribution_ws) + GATE_4(PAE) + GATE_5(블랙리스트) → @@ -2144,18 +2144,18 @@ formula_registry: gs_function: "applyAlegGate4And5Impl_" version: "2026-05-25_PROPOSAL51" - # ── [PROPOSAL51] P0-D — 5계층 가격 단일화 잠금 ─────────────────────────── + # == [PROPOSAL51] P0-D - 5계층 가격 단일화 잠금 =========================== PRICE_HIERARCHY_LOCK_V1: purpose: > 동일 종목의 가격을 5계층으로 분리 잠금. LAYER_1(주문가)만 HTS 지정가로 사용. LAYER_5(참고방어가)가 LAYER_1 위치에 나타나면 - INVALID_LAYER_VIOLATION — 표간 가격 혼재 완전 차단. + INVALID_LAYER_VIOLATION - 표간 가격 혼재 완전 차단. layers: - LAYER_1: "order_blueprint_json.limit_price — HTS 주문표 지정가 전용" - LAYER_2: "prices_json.stop_price / tp1_price / tp2_price — 손절/익절 원장" - LAYER_3: "profit_preservation_json.auto_trailing_stop — LAYER_2 손절가 하한 보정용" - LAYER_4: "scrs_v2_json.rebound_trigger_price — SCRS-V2 반등대기 트리거 전용" - LAYER_5: "proposal_reference.reference_defense_price — WATCH 감시 원장 참고방어가 전용" + LAYER_1: "order_blueprint_json.limit_price - HTS 주문표 지정가 전용" + LAYER_2: "prices_json.stop_price / tp1_price / tp2_price - 손절/익절 원장" + LAYER_3: "profit_preservation_json.auto_trailing_stop - LAYER_2 손절가 하한 보정용" + LAYER_4: "scrs_v2_json.rebound_trigger_price - SCRS-V2 반등대기 트리거 전용" + LAYER_5: "proposal_reference.reference_defense_price - WATCH 감시 원장 참고방어가 전용" violation_types: INVALID_LAYER_VIOLATION: "LAYER_5==LAYER_1 또는 LAYER_4==LAYER_2" LAYER_PROXIMITY_WARNING: "LAYER_5와 LAYER_1이 5% 이내 근접" @@ -2164,7 +2164,7 @@ formula_registry: gs_function: "applyPriceHierarchyLockAll_" version: "2026-05-25_PROPOSAL51" - # ── [PROPOSAL51] P1-B — 데이터 완성도 필드충족률 게이트 ────────────────── + # == [PROPOSAL51] P1-B - 데이터 완성도 필드충족률 게이트 ================== DATA_QUALITY_GATE_V2: purpose: > 핵심 8개 카테고리(prediction/trade_quality/pattern/stop_loss/cash/sell_engine/cluster/alpha_eval)의 @@ -2189,7 +2189,7 @@ formula_registry: gs_function: "calcDataQualityGateV2_" version: "2026-05-25_PROPOSAL51" - # ── [PROPOSAL51] P1-C — 현금회복 금액 3분리 표시 잠금 ─────────────────── + # == [PROPOSAL51] P1-C - 현금회복 금액 3분리 표시 잠금 =================== CASH_RECOVERY_DISPLAY_LOCK_V1: purpose: > 현금회복 금액을 min_required / optimal_combo / reference_total 3분리 표시. @@ -2197,7 +2197,7 @@ formula_registry: reference_total_krw는 "주문 아님" 레이블 강제. display_rules: SECTION_CASH_RECOVERY: "min_required_krw + optimal_combo_krw만 표시 (SCRS-V2 즉시매도 합계)" - SECTION_REFERENCE_TRIM: "reference_total_krw — '참고용 전체 후보 누적 — 주문 아님'" + SECTION_REFERENCE_TRIM: "reference_total_krw - '참고용 전체 후보 누적 - 주문 아님'" consistency_checks: UNCOVERED: "optimal_combo < min_required → CASH_SHORTFALL_UNCOVERED" OVER_SELL: "optimal_combo > min_required*2 → OVER_SELL_WARNING" @@ -2299,7 +2299,7 @@ formula_registry: gs_function: "calcRoutingDecisionExplainLockV1_" version: "2026-05-25_PROPOSAL54" - # ─── Phase-4~5 신규 하네스 게이트 매핑 (2026-05-28) ─────────────────────── + # === Phase-4~5 신규 하네스 게이트 매핑 (2026-05-28) ======================= TRADE_QUALITY_FROM_T5_V1: purpose: > @@ -2500,7 +2500,7 @@ formula_registry: canonical_ref: "ENGINE_AUDIT_V1 / spec/28_imputed_data_exposure_contract.yaml" version: "2026-05-31_ENGINE_AUDIT_V1" - # ── 파이프라인 orphan 공식 일괄 등록 (orphan reconciliation 2026-06-03) ────── + # == 파이프라인 orphan 공식 일괄 등록 (orphan reconciliation 2026-06-03) ====== ANTI_LATE_ENTRY_PULLBACK_GATE_V4: purpose: >