Merge pull request 'Fix: PyYAML 5.x composer 에러 해결 (유니코드 가로선 제거)' (#22) from feature/wbs-gas-lib-versioning into main
Reviewed-on: http://192.168.123.100:8418/KimJaeHyun/myfinance/pulls/22
This commit is contained in:
+129
-129
@@ -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: >
|
||||
|
||||
Reference in New Issue
Block a user