Fix: PyYAML 5.x composer 에러 해결을 위해 13b_harness_formulas.yaml 내 유니코드 가로선 제거

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