416da59607
Coverage improvement: 24.07% (39 files) → 66.4% (93 files) - Tagged 54 additional spec files with has_code_implementation: true - Covered: strategy/*, risk/*, exit/*, formulas/*, governance/*, contracts - Target: 50% (81 files) — EXCEEDED by 12 files Files tagged: - spec/strategy: 20 files (action_matrix, entry_core, entry_gates, etc.) - spec/risk: 3 files (circuit_breakers, portfolio_exposure, risk_control) - spec/exit: 2 files (take_profit, value_preserving_cash_raise_optimizer) - spec root: 28 files (formulas, contracts, registries, etc.) - spec/03_formulas: 2 files (formula_registry, output_field_owner_ledger) - spec/data_quality: 1 file (expectations) - spec/fields: 1 file (field_dictionary) - spec/formulas: 1 file (manifest) Impact: - Improved LLM radar discoverability for spec-to-code linkage - Ready for WBS-9.6 (LLM document optimization phase) Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
4013 lines
155 KiB
YAML
4013 lines
155 KiB
YAML
meta:
|
||
title: 은퇴자산포트폴리오 - 하네스 V8 공식 레지스트리 (13b)
|
||
parent_file: spec/13_formula_registry.yaml
|
||
version: 2026-05-25_HARNESS_V8_PROPOSAL51_P1
|
||
purpose: 'GAS buildHarnessContext_ 단계에서 결정론적으로 산출되는 하네스 전용 공식. LLM이 직접 계산하거나 재판단해서는
|
||
안 되는 고착화 결과들이다. 13_formula_registry.yaml 파일 크기 초과로 분리 관리.
|
||
|
||
'
|
||
has_code_implementation: true
|
||
code_path:
|
||
- spec\13b_harness_formulas.yaml
|
||
formula_registry:
|
||
formulas:
|
||
TP_VALIDITY_CHECK_V1:
|
||
purpose: 'TAKE_PROFIT_LADDER_V2가 산출한 TP 가격이 현재가보다 낮은지 검증. 현재가 >= TP 이면 해당 티어는
|
||
이미 통과된 것으로 판정하고 null을 반환. prices_lock=true가 무효 가격을 고착화하는 역설을 GAS 단계에서 차단.
|
||
|
||
'
|
||
inputs:
|
||
- field: tp_price
|
||
unit: KRW_per_share
|
||
- field: current_price
|
||
unit: KRW_per_share
|
||
expression: 'tp_price > current_price ? tp_price : null'
|
||
output:
|
||
field: tp_validated_price
|
||
unit: KRW_per_share_or_null
|
||
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 미확인 - 검증 불가
|
||
prohibition:
|
||
- LLM이 tp_price=null인 경우 대체 TP 가격을 임의 산출하는 것 절대 금지
|
||
- INVALID_TP_STALE 상태에서 HTS 주문표에 가격 기재 금지
|
||
canonical_ref: AGENTS.md:Direction H9 (HS009)
|
||
version: 2026-05-20_HARNESS_V4
|
||
PROFIT_LOCK_STAGE_CLASSIFIER_V1:
|
||
purpose: '보유 포지션의 현재 수익률 구간을 분류하여 profit_lock_stage를 결정론적으로 산출. LLM이 "이미 +51%니까
|
||
profit_lock 단계"를 임의 판단하는 것을 하네스에서 선점. spec/exit/take_profit.yaml:profit_lock_ratchet.ratchet_table
|
||
완전 구현.
|
||
|
||
'
|
||
inputs:
|
||
- field: average_cost
|
||
unit: KRW_per_share
|
||
- field: current_price
|
||
unit: KRW_per_share
|
||
- field: atr20
|
||
unit: KRW_per_share
|
||
optional: true
|
||
- field: quantity
|
||
unit: shares
|
||
- field: highest_close
|
||
unit: KRW_per_share
|
||
optional: true
|
||
note: APEX_SUPER trailing_stop 산출용. 미제공 시 current_price 대체.
|
||
derived_fields:
|
||
profit_pct: (current_price - average_cost) / average_cost * 100
|
||
rules:
|
||
- if: profit_pct >= 50
|
||
profit_lock_stage: APEX_SUPER
|
||
ratchet_stop: max(average_cost * 1.35, highest_close_or_current - atr20 *
|
||
1.5)
|
||
trailing_stop: max(average_cost * 1.35, highest_close_or_current - atr20 *
|
||
1.5)
|
||
ratchet_partial_qty: floor(quantity * 0.10)
|
||
tp_ladder_action: 강제 10% 익절 권고
|
||
apex_super_alert: REQUIRED
|
||
llm_obligation: APEX_SUPER_ALERT 필수 출력. trailing_stop 병기 의무. '보유 유지' 단독 서술
|
||
절대 금지.
|
||
- if: profit_pct >= 30
|
||
profit_lock_stage: PROFIT_LOCK_STAGE_30
|
||
ratchet_stop: average_cost * 1.20
|
||
ratchet_partial_qty: floor(quantity * 0.35)
|
||
- if: profit_pct >= 20
|
||
profit_lock_stage: PROFIT_LOCK_STAGE_20
|
||
ratchet_stop: average_cost * 1.10
|
||
ratchet_partial_qty: floor(quantity * 0.25)
|
||
- if: profit_pct >= 10
|
||
profit_lock_stage: PROFIT_LOCK_STAGE_10
|
||
ratchet_stop: average_cost * 1.00
|
||
ratchet_partial_qty: 0
|
||
- if: profit_pct < 10
|
||
profit_lock_stage: NORMAL
|
||
ratchet_stop: STOP_PRICE_CORE_V1 result
|
||
ratchet_partial_qty: 0
|
||
output:
|
||
fields:
|
||
- profit_lock_stage
|
||
- ratchet_stop_price
|
||
- ratchet_partial_qty
|
||
prohibition:
|
||
- 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
|
||
REGIME_TRIM_WEIGHT_V1:
|
||
purpose: '시장 국면(market_regime_state) 기반으로 위성·주도주의 감축 비율 범위를 결정론적 산출. LLM이 "조정기엔
|
||
5~10%" 같은 주관적 감축 비율을 제시하는 것을 하네스에서 선점. 국면이 같으면 동일 입력에서 항상 동일 trim_pct_range가
|
||
나와야 함.
|
||
|
||
'
|
||
inputs:
|
||
- field: market_regime_state
|
||
unit: enum
|
||
rules:
|
||
ADVANCE:
|
||
applicable_regimes:
|
||
- RISK_ON
|
||
- SECULAR_LEADER_RISK_ON
|
||
satellite_trim_pct_range:
|
||
- 0
|
||
- 5
|
||
leader_trim_pct_range:
|
||
- 0
|
||
- 0
|
||
priority_order: HOLD_ALL > 약한위성_5%이하 > 중복ETF
|
||
new_buy_gate: ALLOWED_IF_HEAT_PASS
|
||
PULLBACK_IN_UPTREND:
|
||
applicable_regimes:
|
||
- LEADER_CONCENTRATION
|
||
- NEUTRAL
|
||
satellite_trim_pct_range:
|
||
- 5
|
||
- 10
|
||
leader_trim_pct_range:
|
||
- 0
|
||
- 5
|
||
priority_order: 약한위성 > 중복ETF > 주도주소량헤지
|
||
new_buy_gate: BLOCKED
|
||
DISTRIBUTION:
|
||
applicable_regimes:
|
||
- RISK_OFF_CANDIDATE
|
||
satellite_trim_pct_range:
|
||
- 10
|
||
- 25
|
||
leader_trim_pct_range:
|
||
- 5
|
||
- 10
|
||
priority_order: 중복ETF > 약한위성 > 주도주이익잠금
|
||
new_buy_gate: BLOCKED
|
||
BREAKDOWN:
|
||
applicable_regimes:
|
||
- RISK_OFF
|
||
- EVENT_SHOCK
|
||
satellite_trim_pct_range:
|
||
- 25
|
||
- 50
|
||
leader_trim_pct_range:
|
||
- 10
|
||
- 25
|
||
priority_order: 코어보호해제 > 전종목감축검토
|
||
new_buy_gate: HARD_BLOCKED
|
||
output:
|
||
fields:
|
||
- phase
|
||
- satellite_trim_pct_min
|
||
- satellite_trim_pct_max
|
||
- leader_trim_pct_min
|
||
- leader_trim_pct_max
|
||
- priority_order
|
||
- new_buy_gate
|
||
missing_policy:
|
||
market_regime_state: UNKNOWN phase. satellite/leader trim = 0. new_buy_gate
|
||
= BLOCKED.
|
||
prohibition:
|
||
- LLM이 regime_trim_guidance_json 외의 감축 비율을 임의 제시 금지
|
||
- regime_trim_lock=true이면 LLM의 국면 재판정 금지
|
||
canonical_ref: AGENTS.md:Direction M1 (REGIME_TRIM_LOCK)
|
||
version: 2026-05-20_HARNESS_V4
|
||
SECULAR_LEADER_REGIME_GATE_V1:
|
||
purpose: '삼성전자(005930)·SK하이닉스(000660)의 secular_leader_profit_lock 발동 조건을 결정론적으로
|
||
판정. LLM이 "수급이 좋으니까 secular_leader 규칙 적용"이라고 임의 판단하는 것을 하네스에서 선점. spec/exit/take_profit.yaml:secular_leader_profit_lock.activation_required_all
|
||
완전 구현.
|
||
|
||
'
|
||
applicable_to:
|
||
- 005930
|
||
- '000660'
|
||
inputs:
|
||
- field: ticker
|
||
unit: string
|
||
- field: market_regime_state
|
||
unit: enum
|
||
- field: quantity
|
||
unit: shares
|
||
note: holding_quantity from account_snapshot
|
||
- field: close_price
|
||
unit: KRW_per_share
|
||
- field: ma20
|
||
unit: KRW_per_share
|
||
- field: flow_ok
|
||
unit: enum
|
||
note: Y/N
|
||
- field: frg_5d_krw
|
||
unit: KRW
|
||
optional: true
|
||
note: 외국인 5D 순매수금액
|
||
- field: inst_5d_krw
|
||
unit: KRW
|
||
optional: true
|
||
note: 기관 5D 순매수금액
|
||
- field: atr20
|
||
unit: KRW_per_share
|
||
optional: true
|
||
activation_required_all:
|
||
- ticker IN [005930, 000660]
|
||
- market_regime_state == SECULAR_LEADER_RISK_ON
|
||
- holding_quantity > 0 (account_snapshot CAPTURE_READ_OK)
|
||
- close_price > ma20
|
||
- flow_ok == Y AND (frg_5d > 0 OR inst_5d > 0)
|
||
deactivation_any:
|
||
- anti_climax_gate_total >= 3
|
||
- frg_5d < 0 AND inst_5d < 0 (5D 동반 순매도)
|
||
- close_price <= ma20
|
||
- market_regime_state != SECULAR_LEADER_RISK_ON
|
||
output:
|
||
fields:
|
||
- secular_leader_gate_active
|
||
- secular_leader_gate_status
|
||
- secular_leader_gate_reasons
|
||
status_values:
|
||
ACTIVE: 모든 활성화 조건 충족. secular_leader_profit_lock 규칙 적용.
|
||
DEACTIVATED: 비활성화 조건 1개 이상 발동. take_profit.core.leadership 규칙으로 복귀.
|
||
ACTIVATION_FAIL: 활성화 조건 미충족 (데이터 부재 포함).
|
||
NOT_APPLICABLE: 대상 종목 아님 (005930·000660 외).
|
||
tp1_adjustment_by_stage:
|
||
PROFIT_LOCK_STAGE_10:
|
||
action: tp1_state=DEFERRED_SECULAR_LEADER, tp1_price=null
|
||
rationale: 수급 훼손 없는 한 +10% 매도 금지. 본절 상향만.
|
||
PROFIT_LOCK_STAGE_20:
|
||
action: 과열신호 < 2이면 tp1_state=DEFERRED_SECULAR_LEADER_OVERHEAT_PENDING
|
||
rationale: 과열 2개 미만 시 부분익절 보류.
|
||
PROFIT_LOCK_STAGE_30:
|
||
action: tp1_state=TRAILING_STOP_PRIORITY_SECULAR_LEADER (tp1 참고용 유지)
|
||
rationale: trailing_stop 기반 관리 전환. 30~40% 단계 익절.
|
||
APEX_SUPER:
|
||
action: tp1_state=TRAILING_STOP_PRIORITY_SECULAR_LEADER
|
||
rationale: 래칫 stop 관리 우선. 전량익절 금지. trailing_stop 필수 병기.
|
||
prohibition:
|
||
- secular_leader_gate_active=true 구간에서 LLM이 임의로 tp1 매도 신호 생성 금지
|
||
- 하네스가 null로 전달한 tp1_price를 LLM이 복원하는 행위 절대 금지
|
||
- NOT_APPLICABLE 종목에 이 규칙 적용 금지
|
||
canonical_ref: spec/exit/take_profit.yaml:secular_leader_profit_lock
|
||
version: 2026-05-20_HARNESS_V4
|
||
GOAL_RETIREMENT_V1:
|
||
purpose: '은퇴자산 5억원 목표 대비 현재 자산의 달성률·잔여액·복리 ETA를 결정론적으로 산출. LLM이 "이 추세면 언제 달성
|
||
가능하다"고 임의 추정하는 것을 하네스에서 선점. net_expectancy_30(30일 순기대 수익률%)을 복리 기준으로 사용.
|
||
|
||
'
|
||
inputs:
|
||
- field: total_asset_krw
|
||
unit: KRW
|
||
note: buildHarnessContext_ 집계값
|
||
- field: net_expectancy_30
|
||
unit: percent
|
||
optional: true
|
||
note: Bayesian 성과 계산기 출력. 없으면 ETA=DATA_MISSING.
|
||
constants:
|
||
GOAL_KRW: 500000000
|
||
derived_fields:
|
||
goal_achievement_pct: total_asset_krw / GOAL_KRW * 100
|
||
goal_remaining_krw: max(0, GOAL_KRW - total_asset_krw)
|
||
goal_eta_months: ceil(ln(GOAL_KRW / total_asset_krw) / ln(1 + net_expectancy_30
|
||
/ 100))
|
||
expression:
|
||
achievement_pct: round(total_asset_krw / GOAL_KRW * 1000) / 10
|
||
eta_months: 'net_expectancy_30 > 0 ? ceil(ln(GOAL_KRW/asset) / ln(1 + r))
|
||
: null'
|
||
eta_label: ACHIEVED | YYYY-MM | DATA_MISSING
|
||
status: 'total_asset_krw >= GOAL_KRW ? ACHIEVED : IN_PROGRESS'
|
||
output:
|
||
fields:
|
||
- field: goal_asset_krw
|
||
unit: KRW
|
||
value: 500000000
|
||
- field: goal_current_asset_krw
|
||
unit: KRW
|
||
- field: goal_achievement_pct
|
||
unit: percent
|
||
- field: goal_remaining_krw
|
||
unit: KRW
|
||
- field: goal_eta_months
|
||
unit: months_or_null
|
||
- field: goal_eta_label
|
||
unit: string
|
||
- field: goal_monthly_growth_pct
|
||
unit: percent_or_null
|
||
- field: goal_status
|
||
unit: enum
|
||
missing_policy:
|
||
net_expectancy_30: goal_eta_months=null, goal_eta_label=DATA_MISSING
|
||
total_asset_krw_zero: goal_achievement_pct=0, goal_remaining_krw=GOAL_KRW
|
||
prohibition:
|
||
- LLM이 goal_achievement_pct·goal_remaining_krw·goal_eta_label을 재계산 금지 (HS011)
|
||
- LLM이 '이 속도라면 N개월 후 달성'을 GOAL_RETIREMENT_V1 외 임의 계산으로 제시 금지
|
||
- 목표 달성 압박을 이유로 heat_gate·cash_floor·stop_loss 규칙 우회 금지
|
||
canonical_ref: AGENTS.md:Direction M4
|
||
version: 2026-05-20_HARNESS_V4
|
||
CASH_SHORTFALL_V1:
|
||
purpose: 'D+2 현금 현황 대비 최소 방어선·목표 현금비율까지 부족액을 GAS가 결정론적으로 산출. LLM이 "약 N원 필요"
|
||
즉석 계산을 하면 D+2/D+0 혼용·미체결 누락·세금 미반영 등으로 호출마다 결과가 달라지는 금전적 오판 위험 발생.
|
||
|
||
'
|
||
inputs:
|
||
- field: settlement_cash_d2_krw
|
||
unit: KRW
|
||
- field: total_asset_krw
|
||
unit: KRW
|
||
- field: cash_floor_min_pct
|
||
unit: percent
|
||
- field: mrs_score
|
||
unit: score_0_100
|
||
constants:
|
||
TARGET_CASH_BASE_PCT: 5
|
||
TARGET_CASH_MRS_WEIGHT: 15
|
||
MRS_DIVISOR: 10
|
||
expressions:
|
||
cash_current_pct_d2: round(settlement_cash_d2_krw / total_asset_krw * 100,
|
||
2)
|
||
cash_target_pct: max(TARGET_CASH_BASE_PCT + (mrs_score / MRS_DIVISOR) * TARGET_CASH_MRS_WEIGHT,
|
||
cash_floor_min_pct)
|
||
cash_shortfall_min_krw: max(0, round(total_asset_krw * cash_floor_min_pct
|
||
/ 100 - settlement_cash_d2_krw))
|
||
cash_shortfall_target_krw: max(0, round(total_asset_krw * cash_target_pct
|
||
/ 100 - settlement_cash_d2_krw))
|
||
output:
|
||
fields:
|
||
- field: cash_current_pct_d2
|
||
unit: percent
|
||
- field: cash_target_pct
|
||
unit: percent
|
||
- field: cash_shortfall_min_krw
|
||
unit: KRW
|
||
- field: cash_shortfall_target_krw
|
||
unit: KRW
|
||
missing_policy:
|
||
total_asset_krw_zero: cash_current_pct_d2=0, 모든 shortfall=0
|
||
settlement_cash_d2_missing: shortfall 산출 불가 → DATA_MISSING
|
||
prohibition:
|
||
- LLM이 '약 N원 필요' 형태로 부족액을 즉석 계산 금지 (HS011)
|
||
- D+0 즉시현금(immediate_cash_krw) 합산 금지 - D2_ONLY 기준
|
||
- 미체결 주문·세금·정산일 조정을 LLM이 임의 적용 금지
|
||
canonical_ref: AGENTS.md:Direction G1
|
||
version: 2026-05-20_G1
|
||
TRIM_PLAN_MIN_CASH_V1:
|
||
purpose: '현금 부족액(CASH_SHORTFALL_V1) 해소를 위한 종목별 TRIM 계획을 H2 매도우선순위 기반으로 GAS가
|
||
사전 결정. LLM이 임의로 종목·수량·순서를 선택하면 매도우선순위 규칙이 무력화됨.
|
||
|
||
'
|
||
inputs:
|
||
- field: sell_candidates_json
|
||
unit: list
|
||
note: H2 매도후보 순위 배열
|
||
- field: sell_quantities_json
|
||
unit: list
|
||
note: H3 사전 산출 매도수량
|
||
- field: close_price
|
||
unit: KRW_per_share
|
||
note: holdings.close
|
||
- field: cash_shortfall_min_krw
|
||
unit: KRW
|
||
note: G1 CASH_SHORTFALL_V1 산출값
|
||
expressions:
|
||
estimated_sell_krw: sell_qty × close_price (정수)
|
||
accumulated_krw: 누적 합산 estimated_sell_krw
|
||
covers_shortfall: accumulated_krw >= cash_shortfall_min_krw
|
||
output:
|
||
fields:
|
||
- field: trim_plan_to_min_cash_json
|
||
unit: json_array
|
||
output_schema:
|
||
rank: H2 순위
|
||
ticker: 종목 코드
|
||
name: 종목명
|
||
tier: H2 tier
|
||
sell_qty: H3 매도수량 (정수 | CAPTURE_REQUIRED | NO_HOLDING | null)
|
||
estimated_sell_krw: 예상 매도금액 (KRW)
|
||
accumulated_krw: 누적 예상 매도금액 (KRW)
|
||
covers_shortfall: 부족액 해소 여부 (boolean)
|
||
missing_policy:
|
||
no_sell_signal: sell_qty=null, estimated_sell_krw=0
|
||
capture_required: sell_qty='CAPTURE_REQUIRED', estimated_sell_krw=0
|
||
close_price_zero: estimated_sell_krw=0
|
||
prohibition:
|
||
- LLM이 H2 순위 외 종목을 임의로 현금 회복 후보로 선정 금지 (HS011)
|
||
- LLM이 수량·순서를 재계산하거나 재정렬 금지
|
||
- CAPTURE_REQUIRED 행을 실행 가능 주문으로 간주 금지
|
||
canonical_ref: AGENTS.md:Direction G2
|
||
version: 2026-05-20_G2
|
||
ALPHA_LEAD_SCORE_V1:
|
||
purpose: '주도 섹터·상대강도·수급가속·거래대금·과열도를 결합해 선행 파일럿 진입 가능성을 0~100 점수와 상태로 확정한다. 이미
|
||
과열된 추격매수는 점수가 높아도 차단한다.
|
||
|
||
'
|
||
inputs: []
|
||
input_groups:
|
||
required:
|
||
- sector_rotation_rank
|
||
- sector_rotation_rank_delta_5d
|
||
- stock_rs_ratio_5d
|
||
- stock_rs_ratio_20d
|
||
- frg_inst_flow_accel_5d_vs_20d
|
||
- avg_trade_value_5d
|
||
- close_vs_ma20_pct
|
||
- val_surge_pct
|
||
- dart_risk_status
|
||
gates:
|
||
pilot_allowed: score >= 75 AND 0 <= close_vs_ma20_pct <= 6 AND val_surge_pct
|
||
< 40
|
||
watch_only: 55 <= score < 75
|
||
blocked_late_chase: close_vs_ma20_pct > 10 OR val_surge_pct >= 60 OR dart_risk_status
|
||
!= OK
|
||
output:
|
||
field: alpha_lead_json
|
||
unit: json_array
|
||
output_schema:
|
||
ticker: 종목 코드
|
||
alpha_lead_score: 0~100
|
||
lead_entry_state: PILOT_ALLOWED | WATCH_ONLY | BLOCKED_LATE_CHASE | DATA_MISSING
|
||
allowed_tranche_pct: 0 | 20 | 30
|
||
blocked_reason_codes: array
|
||
prohibition:
|
||
- blocked_late_chase 상태에서 LLM이 뉴스·테마를 이유로 BUY 승격 금지
|
||
- pilot_allowed여도 계획수량 30% 초과 금지
|
||
canonical_ref: proposals/2026-05-20_APEX_ALPHA_PRESERVATION_EXECUTION_HARNESS_V1.md
|
||
version: 2026-05-20_APEX_V1
|
||
FOLLOW_THROUGH_CONFIRM_V1:
|
||
purpose: '돌파 이후 1~3거래일 내 가격 유지·거래대금 과열 완화·수급 유지 여부를 확인해 본진입, 대기, 실패를 결정론적으로
|
||
분류한다.
|
||
|
||
'
|
||
inputs: []
|
||
input_groups:
|
||
required:
|
||
- breakout_day_close
|
||
- current_close
|
||
- ma5
|
||
- ma20
|
||
- volume_vs_5d
|
||
- frg_inst_flow_3d
|
||
- intraday_low_recovery_pct
|
||
states:
|
||
CONFIRMED_ADD_ON: 돌파 가격 유지 + 거래대금 과열 완화 + 수급 유지
|
||
FAILED_BREAKOUT: 돌파 이탈 또는 외국인/기관 동반 매도
|
||
WAIT_PULLBACK: 가격은 유지되나 거래대금 과열 또는 눌림 미확인
|
||
output:
|
||
field: follow_through_json
|
||
unit: json_array
|
||
prohibition:
|
||
- WAIT_PULLBACK을 LLM이 본진입 허용으로 승격 금지
|
||
- FAILED_BREAKOUT 후 물타기 금지
|
||
canonical_ref: proposals/2026-05-20_APEX_ALPHA_PRESERVATION_EXECUTION_HARNESS_V1.md
|
||
version: 2026-05-20_APEX_V1
|
||
DISTRIBUTION_RISK_SCORE_V1:
|
||
purpose: '가격 유지 또는 상승 중 스마트머니 이탈, 거래대금 둔화, 윗꼬리, 낮은 flow_credit, 섹터 대비 상대약세를
|
||
결합해 설거지·분산 위험을 0~100으로 산출한다.
|
||
|
||
'
|
||
related_formula: 'spec/13_formula_registry.yaml:DISTRIBUTION_SELL_DETECTOR_V1과
|
||
별개의 독립 공식이다(2026-06-22 역할 분리 확정, governance/gas_logic_migration_ledger_v1.yaml
|
||
F12/F13). 이 공식(점수식, BUY/STAGED_BUY/ADD_ON 차단 게이트)과 SELL_DETECTOR(6신호 카운트,
|
||
PRE_DISTRIBUTION_EARLY_WARNING 정밀도 보완)는 입력·출력·목적이 다르며 하나가 다른 하나의 중복이 아니다 —
|
||
둘 다 유지한다.
|
||
|
||
'
|
||
inputs: []
|
||
input_groups:
|
||
required:
|
||
- price_above_ma20
|
||
- frg_5d_sh
|
||
- inst_5d_sh
|
||
- frg_20d_sh
|
||
- inst_20d_sh
|
||
- volume_5d_vs_20d
|
||
- close_location_value
|
||
- upper_wick_ratio
|
||
- flow_credit
|
||
- ret5d_vs_sector
|
||
components:
|
||
smart_money_outflow: 30
|
||
volume_fade_after_surge: 20
|
||
upper_wick_distribution: 15
|
||
flow_credit_low: 20
|
||
sector_relative_lag: 15
|
||
gates:
|
||
BLOCK_BUY: score >= 70
|
||
TRIM_REVIEW: 55 <= score < 70
|
||
PASS: score < 55
|
||
output:
|
||
field: distribution_risk_json
|
||
unit: json_array
|
||
prohibition:
|
||
- BLOCK_BUY 상태에서 BUY/STAGED_BUY/ADD_ON 출력 금지
|
||
- 분산 위험이 높아도 과매도 매도는 SMART_CASH_RAISE_PLAN_V1을 거쳐 실행
|
||
canonical_ref: spec/exit/proactive_exit_radar.yaml
|
||
version: 2026-05-20_APEX_V1
|
||
PROFIT_PRESERVATION_STATE_V1:
|
||
purpose: '수익률, ATR, 고점 대비 하락, 수급 훼손, 분산 위험을 이용해 수익 보호 단계를 분류하고 래칫·트레일링·부분 이익잠금
|
||
적용 여부를 잠근다.
|
||
|
||
'
|
||
inputs: []
|
||
input_groups:
|
||
required:
|
||
- profit_pct
|
||
- atr20_pct
|
||
- highest_price_since_entry
|
||
- current_close
|
||
- ma20
|
||
- frg_inst_flow_5d
|
||
- distribution_risk_score
|
||
states:
|
||
NORMAL: profit_pct < 8
|
||
BREAKEVEN_RATCHET: profit_pct >= 8 OR current_close >= average_cost + atr20
|
||
PROFIT_LOCK_10: profit_pct >= 10
|
||
PROFIT_LOCK_20: profit_pct >= 20
|
||
PROFIT_LOCK_30: profit_pct >= 30
|
||
APEX_TRAILING: profit_pct >= 30 AND trend_intact
|
||
output:
|
||
field: profit_preservation_json
|
||
unit: json_array
|
||
prohibition:
|
||
- 수익 보호 상태를 LLM이 장기 전망으로 해제 금지
|
||
- 래칫 가격은 PROFIT_LOCK_RATCHET_V1/TRAILING_STOP_PRICE_V1/TICK_NORMALIZER_V1 결과만
|
||
허용
|
||
canonical_ref: spec/13_formula_registry.yaml:PROFIT_LOCK_RATCHET_V1
|
||
version: 2026-05-20_APEX_V1
|
||
SMART_CASH_RAISE_PLAN_V1:
|
||
purpose: 'cash_shortfall을 해소하되 가격 훼손을 줄이기 위해 즉시 매도수량, 반등 대기수량, 최대 일일 매도수량, 실행
|
||
스타일을 결정론적으로 배정한다.
|
||
|
||
'
|
||
inputs: []
|
||
input_groups:
|
||
required:
|
||
- cash_shortfall_min_krw
|
||
- cash_shortfall_target_krw
|
||
- sell_candidates_json
|
||
- current_price
|
||
- atr20
|
||
- rsi14
|
||
- bb_position
|
||
- ma20_distance_pct
|
||
- avg_trade_value_5d
|
||
- distribution_risk_score
|
||
- profit_preservation_state
|
||
execution_styles:
|
||
URGENT_LIQUIDITY_TRIM: cash_floor_status=HARD_BLOCK AND not oversold
|
||
OVERSOLD_REBOUND_SELL: rsi14 < 35 OR bb_position < 20 OR close < ma20 - 8%
|
||
DISTRIBUTION_EXIT: distribution_risk_score >= 70
|
||
PROFIT_PROTECT_TRIM: profit_preservation_state IN [PROFIT_LOCK_20, PROFIT_LOCK_30]
|
||
output:
|
||
field: cash_raise_plan_json
|
||
unit: json_array
|
||
prohibition:
|
||
- OVERSOLD_REBOUND_SELL에서 즉시 매도수량 cap 초과 금지
|
||
- 코어 주도주는 tier 1~8 후보 소진 전 현금확보 1순위 금지
|
||
canonical_ref: spec/risk/portfolio_exposure.yaml:sell_priority_engine
|
||
version: 2026-05-20_APEX_V1
|
||
REBOUND_SELL_TRIGGER_V1:
|
||
purpose: 과매도 현금확보 후보의 잔여 매도를 반등 조건 충족 시점으로 지연한다.
|
||
inputs: []
|
||
input_groups:
|
||
required:
|
||
- current_price
|
||
- prior_close
|
||
- intraday_vwap
|
||
- ma5
|
||
- rsi14
|
||
- volume_vs_5d
|
||
- atr20
|
||
trigger_any:
|
||
- current_price >= prior_close + 0.5 * atr20
|
||
- current_price > intraday_vwap AND rsi14 recovers above 40
|
||
- current_price >= ma5 AND volume_vs_5d >= 0.8
|
||
output:
|
||
field: rebound_sell_trigger_json
|
||
unit: json_array
|
||
prohibition:
|
||
- trigger_state 미충족 잔여수량을 LLM이 즉시 매도로 승격 금지
|
||
canonical_ref: proposals/2026-05-20_APEX_ALPHA_PRESERVATION_EXECUTION_HARNESS_V1.md
|
||
version: 2026-05-20_APEX_V1
|
||
EXECUTION_QUALITY_GUARD_V1:
|
||
purpose: 주문금액/거래대금/스프레드/변동성을 이용해 체결 품질과 분할 필요 여부를 검증한다.
|
||
inputs: []
|
||
input_groups:
|
||
required:
|
||
- avg_trade_value_5d
|
||
- order_amount_krw
|
||
- spread_pct
|
||
- tick_size
|
||
- intraday_volatility_pct
|
||
rules:
|
||
max_order_vs_adv: order_amount_krw <= avg_trade_value_5d * 0.03
|
||
split_required: order_amount_krw > avg_trade_value_5d * 0.01
|
||
market_order_ban: 항상 시장가 금지. 비상 hard stop 예외도 하네스 명시 필요
|
||
reprice_limit: 불리한 방향 2회 이상 추격 정정 금지
|
||
output:
|
||
field: execution_quality_json
|
||
unit: json_array
|
||
prohibition:
|
||
- execution_quality_status != PASS이면 HTS 주문표 PASS 금지
|
||
canonical_ref: spec/05_position_sizing.yaml:liquidity_constraint
|
||
version: 2026-05-20_APEX_V1
|
||
BUY_PERMISSION_MATRIX_V1:
|
||
purpose: POSITION_SIZE_V1 이전에 매수 허가 상태와 최대 tranche를 확정한다.
|
||
inputs: []
|
||
required_pass_all:
|
||
- cash_floor_status=PASS
|
||
- heat_gate_status != BLOCK_NEW_BUY
|
||
- distribution_risk_score < 55
|
||
- alpha_lead_score >= 75 OR follow_through_state=CONFIRMED_ADD_ON
|
||
- expected_edge >= floor
|
||
output:
|
||
field: buy_permission_json
|
||
unit: json_array
|
||
states:
|
||
- ALLOW_PILOT
|
||
- ALLOW_ADD_ON
|
||
- WATCH
|
||
- BLOCKED
|
||
prohibition:
|
||
- BUY_PERMISSION_MATRIX_V1 != ALLOW_*이면 buy_qty_inputs_json.final_qty는 null
|
||
canonical_ref: spec/05_position_sizing.yaml:pre_permission_gate
|
||
version: 2026-05-20_APEX_V1
|
||
SELL_QUANTITY_ALLOCATOR_V1:
|
||
purpose: 현금 부족액, 매도우선순위, 실행스타일, cap을 반영해 정수 매도수량을 확정한다.
|
||
inputs: []
|
||
input_groups:
|
||
required:
|
||
- cash_shortfall_krw
|
||
- sell_priority_rank
|
||
- holding_quantity
|
||
- current_price
|
||
- execution_style
|
||
- max_daily_qty_pct
|
||
- immediate_qty_cap_pct
|
||
output:
|
||
field: smart_sell_quantities_json
|
||
unit: json_array
|
||
output_schema:
|
||
immediate_sell_qty: integer_or_null
|
||
staged_sell_qty: integer_or_null
|
||
rebound_wait_qty: integer_or_null
|
||
expected_cash_recovered_krw: KRW
|
||
prohibition:
|
||
- LLM이 Sell_Ratio_Pct × holding_quantity를 직접 계산해 대체 금지
|
||
canonical_ref: spec/00_execution_contract.yaml:signal_quantity_separation
|
||
version: 2026-05-20_APEX_V1
|
||
LIMIT_PRICE_POLICY_V1:
|
||
purpose: 매수/매도 지정가를 실행 스타일별로 산출하고 TICK_NORMALIZER_V1을 강제 적용한다.
|
||
inputs: []
|
||
sell_styles:
|
||
normal_trim: min(current_price, prior_close * 0.998)
|
||
rebound_sell: rebound_trigger_price 근처 지정가
|
||
distribution_exit: current_price - 0.25 * ATR20 범위 내 방어 지정가
|
||
profit_protect: current_price 또는 trailing_stop 상단 기준
|
||
buy_styles:
|
||
pilot: close * 1.002 상한, chase cap 적용
|
||
pullback: ma20 * 1.003 또는 close * 1.002 중 낮은 값
|
||
add_on: follow_through_confirm 후 previous entry 대비 0.5~1.0% 상한
|
||
output:
|
||
field: limit_price_policy_json
|
||
unit: json_array
|
||
post_process: TICK_NORMALIZER_V1
|
||
prohibition:
|
||
- 심리적 가격·차트 지지선으로 limit_price 대체 금지
|
||
- TICK_OK 태그 없는 가격은 HTS 출력 금지
|
||
canonical_ref: spec/13_formula_registry.yaml:TICK_NORMALIZER_V1
|
||
version: 2026-05-20_APEX_V1
|
||
STAGED_ENTRY_TRANCHE_V1:
|
||
purpose: '파일럿(T1) → 돌파확인(T2) → 눌림재진입(T3) 순서로 매수 비중을 3단계로 분할. LLM이 한 번에 전량 매수를
|
||
지시하거나 PILOT_ALLOWED → ADD_ON 단계를 건너뛰는 것을 차단. buy_permission_json의 tranche_phase를
|
||
GAS가 확정하고 LLM은 복사만 한다.
|
||
|
||
'
|
||
inputs:
|
||
- field: alpha_lead_score
|
||
unit: score_0_100
|
||
- field: lead_entry_state
|
||
unit: enum
|
||
- field: follow_through_state
|
||
unit: enum
|
||
- field: holding_quantity
|
||
unit: shares
|
||
- 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: 현 포지션 유지 - 추가 매수 조건 미충족
|
||
output:
|
||
fields:
|
||
- field: tranche_phase
|
||
unit: enum
|
||
- field: current_tranche_allowed_pct
|
||
unit: percent
|
||
- field: next_tranche_condition
|
||
unit: string
|
||
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 진입 금지
|
||
canonical_ref: AGENTS.md:Direction K1
|
||
version: 2026-05-20_K1
|
||
K2_STAGED_REBOUND_SELL_V1:
|
||
purpose: '현금확보 매도(OVERSOLD_REBOUND_SELL 스타일)를 즉시매도(50%) + 반등대기(50%)로 분할해 주식가치
|
||
훼손을 최소화하면서 현금 수요를 충족한다. 즉시매도 예상금액 × 2가 shortfall을 충당하지 못할 때만 비상 전량 매도(emergency_full_sell=true)를
|
||
허용.
|
||
|
||
'
|
||
inputs:
|
||
- field: base_sell_qty
|
||
unit: shares
|
||
note: H3 SELL_QUANTITY_ALLOCATOR_V1 산출
|
||
- field: close
|
||
unit: KRW_per_share
|
||
- field: cash_shortfall_min_krw
|
||
unit: KRW
|
||
note: G1 CASH_SHORTFALL_V1 산출
|
||
- field: profit_preservation_state
|
||
unit: enum
|
||
- field: execution_style
|
||
unit: enum
|
||
note: OVERSOLD_REBOUND_SELL 이외 스타일은 미적용
|
||
expressions:
|
||
half_qty: floor(base_sell_qty / 2)
|
||
half_expected_krw: half_qty × close
|
||
emergency_full_sell: cash_shortfall_min_krw > 0 AND half_expected_krw × 2
|
||
< cash_shortfall_min_krw
|
||
immediate_sell_qty: 'emergency_full_sell ? base_sell_qty : half_qty'
|
||
rebound_wait_qty: 'emergency_full_sell ? 0 : max(0, base_sell_qty - half_qty)'
|
||
oversold_cap_qty: floor(holding_qty × cap_pct/100)
|
||
cap_pct_by_profit_state:
|
||
PROFIT_LOCK_30: 40
|
||
APEX_TRAILING: 40
|
||
PROFIT_LOCK_20: 35
|
||
PROFIT_LOCK_10: 30
|
||
default: 50
|
||
output:
|
||
fields:
|
||
- field: immediate_sell_qty
|
||
unit: shares
|
||
- field: rebound_wait_qty
|
||
unit: shares
|
||
- field: emergency_full_sell
|
||
unit: boolean
|
||
- field: rebound_trigger_price
|
||
unit: KRW_per_share
|
||
note: prevClose + 0.5×ATR20 tick-normalized
|
||
prohibition:
|
||
- rebound_wait_qty > 0인 물량을 반등 트리거 미충족 상태에서 즉시 매도 금지
|
||
- emergency_full_sell=false에서 rebound_wait_qty를 LLM이 즉시매도로 전환 금지
|
||
- OVERSOLD_REBOUND_SELL 외 스타일에 이 규칙 적용 금지
|
||
canonical_ref: AGENTS.md:Direction K2
|
||
version: 2026-05-20_K2
|
||
K3_REGIME_SELL_PRIORITY_V1:
|
||
purpose: 'H2 정적 순위에 시장 국면(regime) 신호를 오버레이하여 동적 우선순위를 부여한다. EVENT_SHOCK에서는 KOSPI
|
||
고베타 종목이, RISK_ON에서는 섹터 상대약세 종목이 우선 정리된다. H2 원래 rank는 변경하지 않고 regime_priority_adjustment(-3~0)와
|
||
final_regime_rank을 추가한다.
|
||
|
||
'
|
||
inputs:
|
||
- field: h2_candidates
|
||
unit: list
|
||
note: H2 매도후보 배열 (rank/tier/score)
|
||
- field: market_regime_state
|
||
unit: enum
|
||
- field: ret5d
|
||
unit: percent
|
||
- field: kospi_ret5d
|
||
unit: percent
|
||
- field: frg_5d
|
||
unit: KRW
|
||
- field: inst_5d
|
||
unit: KRW
|
||
- field: flow_credit
|
||
unit: score_0_1
|
||
- field: ac_gate
|
||
unit: string
|
||
adjustment_rules:
|
||
RISK_OFF_EVENT_SHOCK:
|
||
high_beta_proxy_gt_1_3: -3
|
||
dual_outflow: -2
|
||
above_beta_proxy_gt_1: -1
|
||
RISK_OFF_CANDIDATE:
|
||
flow_credit_lt_0_30: -2
|
||
flow_credit_lt_0_45: -1
|
||
RISK_ON_SECULAR_LEADER:
|
||
sector_lag_gt_3pct: -2
|
||
duplicate_etf: -2
|
||
LEADER_CONCENTRATION_NEUTRAL:
|
||
anti_climax_gate: -1
|
||
output:
|
||
field: regime_adjusted_sell_priority_json
|
||
unit: json_array
|
||
output_schema:
|
||
rank: H2 원래 순위
|
||
final_regime_rank: 국면 조정 후 최종 순위
|
||
regime_priority_adjustment: 조정값 (음수=우선 상향)
|
||
adjustment_reason: 조정 근거 코드
|
||
regime_applied: 적용된 국면 상태
|
||
prohibition:
|
||
- LLM이 regime_adjusted_sell_priority_json을 임의로 재정렬 금지
|
||
- sell_priority_lock=true이면 LLM이 final_regime_rank도 번복 금지
|
||
- H2 tier 경계를 넘는 순위 이동 금지 (tier 1 → tier 2 크로스 불가)
|
||
canonical_ref: AGENTS.md:Direction K3
|
||
version: 2026-05-20_K3
|
||
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 재산출 금지.
|
||
|
||
'
|
||
inputs:
|
||
- field: sector
|
||
unit: string
|
||
- field: rank
|
||
unit: integer
|
||
note: 현재 주 섹터 로테이션 순위
|
||
- field: prev_rank_w1
|
||
unit: integer
|
||
note: 1주 전 순위
|
||
- field: prev_rank_w2
|
||
unit: integer
|
||
note: 2주 전 순위
|
||
derived_fields:
|
||
rank_delta_w1: rank - prev_rank_w1 (양수=순위 하락=약화)
|
||
rank_delta_w2: rank - prev_rank_w2
|
||
momentum_states:
|
||
RISING: rank_delta_w1 <= -2 (순위 상승 → 로테이션 유입)
|
||
STABLE: 변화 없음 또는 소폭 등락
|
||
TOPPING_OUT: rank <= 3 AND rank_delta_w1 >= 1 (상위권이지만 하락 전환)
|
||
FADING: rank_delta_w1 >= 2 AND rank_delta_w2 >= 2 (연속 순위 하락)
|
||
alpha_lead_penalty:
|
||
FADING: -15
|
||
TOPPING_OUT: -10
|
||
output:
|
||
field: sector_rotation_momentum_json
|
||
unit: json_array
|
||
output_schema:
|
||
sector: 섹터명
|
||
rank: 현재 순위
|
||
rank_delta_w1: 1주 delta (양수=하락)
|
||
rank_delta_w2: 2주 delta
|
||
momentum_state: RISING/STABLE/TOPPING_OUT/FADING
|
||
prohibition:
|
||
- LLM이 sector_rotation_momentum_json을 재정렬·재산출 금지
|
||
- sector_rotation_momentum_lock=true이면 LLM이 momentum_state를 번복 금지
|
||
canonical_ref: AGENTS.md:Direction L1
|
||
version: 2026-05-20_L1
|
||
PRE_DISTRIBUTION_EARLY_WARNING_V1:
|
||
purpose: 'DISTRIBUTION_RISK_SCORE_V1에 두 가지 선행경보 신호를 추가한다. (1) 신고점 근접 + 거래량 수축:
|
||
분배 직전 전형 패턴 (score +12) (2) 5일 급등(+5% 이상) + 수급 약화(flowCredit<0.45): 급등 후 설거지
|
||
위험 (score +10) 기존 BLOCK_BUY/TRIM_REVIEW 임계값(70/55)을 낮추지 않고 신호 누적으로 조기 반영.
|
||
|
||
'
|
||
inputs:
|
||
- field: close
|
||
unit: KRW_per_share
|
||
- field: high52w
|
||
unit: KRW_per_share
|
||
note: 미제공 시 MA20×1.15 대체
|
||
- field: volume
|
||
unit: shares
|
||
- field: avg_volume_5d
|
||
unit: shares
|
||
- field: ret5d
|
||
unit: pct
|
||
- field: flow_credit
|
||
unit: 0~1
|
||
signals:
|
||
new_high_volume_contraction:
|
||
condition: (close >= high52w×0.97 OR close > MA20×1.15) AND volume < avgVol5d×0.80
|
||
score: 12
|
||
surge_weak_flow:
|
||
condition: ret5d >= 5 AND flow_credit < 0.45
|
||
score: 10
|
||
output:
|
||
field: pre_distribution_warning
|
||
values:
|
||
EARLY_WARNING: 신고점수축 또는 급등약류 신호 발생 - 분배 선행경보
|
||
NONE: 선행경보 신호 없음
|
||
prohibition:
|
||
- LLM이 pre_distribution_warning=EARLY_WARNING 종목에 신규 BUY를 즉시 실행 금지
|
||
- 선행경보 무시하고 '아직 BLOCK_BUY 아니니 OK' 판단 금지
|
||
canonical_ref: AGENTS.md:Direction L4
|
||
version: 2026-05-20_L4
|
||
RATCHET_TRAILING_AUTO_V1:
|
||
purpose: '수익 구간(PROFIT_LOCK_20/30, APEX_TRAILING)에서 ATR20 기반 자동 트레일링 손절가를 산출한다.
|
||
기존 ratchet_stop(하드 래칫)과 비교해 더 유리한(높은) 값을 auto_trailing_stop으로 고착화. LLM이 "익절
|
||
후 홀드" 판단에서 임의로 손절가를 낮추는 것을 구조적으로 차단.
|
||
|
||
'
|
||
inputs:
|
||
- field: highest_price_since_entry
|
||
unit: KRW_per_share
|
||
- field: stop_price
|
||
unit: KRW_per_share
|
||
note: 기존 ratchet_stop
|
||
- field: atr20
|
||
unit: KRW_per_share
|
||
- field: profit_preservation_state
|
||
unit: enum
|
||
expression: 'PROFIT_LOCK_20: auto_trailing_stop = max(ratchet_stop, highest_close
|
||
- 1.5×ATR20); PROFIT_LOCK_30 / APEX_TRAILING: auto_trailing_stop = max(ratchet_stop,
|
||
highest_close - 2.0×ATR20); 이외: auto_trailing_stop = null 최종값은 KRX 호가단위로 floor
|
||
정규화 (tickNormalize_)
|
||
|
||
'
|
||
output:
|
||
field: auto_trailing_stop
|
||
unit: KRW_per_share_or_null
|
||
description: ATR 트레일링 손절가. null이면 해당 수익 구간 아님. LLM이 이 값보다 낮은 손절가 제시 금지.
|
||
prohibition:
|
||
- LLM이 auto_trailing_stop보다 낮은 손절가를 손절 원장에 기재 금지
|
||
- profit_lock 구간에서 ATR 조건 없이 임의로 홀드 연장하는 서술 금지
|
||
canonical_ref: AGENTS.md:Direction L2
|
||
version: 2026-05-20_L2
|
||
DYNAMIC_HEAT_GATE_V1:
|
||
purpose: 'marketRegime에 따라 Heat Gate 임계값을 동적으로 조정한다. EVENT_SHOCK 국면에서는 임계값을
|
||
크게 낮춰 신규 매수를 강하게 억제하고, RISK_ON/SECULAR_LEADER 국면에서는 임계값을 높여 매수 여지를 확장한다. 고착화된
|
||
HEAT_HARD_BLOCK_PCT=10% 단일값을 국면 감응형으로 대체.
|
||
|
||
'
|
||
inputs:
|
||
- field: total_heat_pct
|
||
unit: pct
|
||
- field: market_regime
|
||
unit: string
|
||
thresholds_by_regime:
|
||
EVENT_SHOCK:
|
||
hard_block: 5.0
|
||
halve: 3.5
|
||
RISK_OFF:
|
||
hard_block: 7.0
|
||
halve: 5.0
|
||
NEUTRAL:
|
||
hard_block: 10.0
|
||
halve: 7.0
|
||
RISK_ON:
|
||
hard_block: 12.0
|
||
halve: 8.5
|
||
SECULAR_LEADER_RISK_ON:
|
||
hard_block: 13.0
|
||
halve: 9.0
|
||
expression: "heatThresholds = calcDynamicHeatThresholds_(marketRegime); heatGate\
|
||
\ = total_heat_pct >= heatThresholds.hardBlock ? BLOCK_NEW_BUY\n :\
|
||
\ total_heat_pct >= heatThresholds.halve ? HALVE_NEW_BUY_QUANTITY\n \
|
||
\ : ALLOW_CONTINUE\n"
|
||
output:
|
||
field: heat_gate_threshold_pct
|
||
unit: pct
|
||
description: 현재 국면에서 적용된 hard_block 임계값 (GAS 산출, LLM 변경 금지)
|
||
prohibition:
|
||
- LLM이 heat_gate_threshold_pct를 임의로 재계산하거나 무시 금지
|
||
- heat_gate_status=BLOCK_NEW_BUY이면 LLM이 BUY 액션을 복원 금지
|
||
canonical_ref: AGENTS.md:Direction L3
|
||
version: 2026-05-20_L3
|
||
DRAWDOWN_GUARD_V1:
|
||
purpose: '연속 손절 횟수(consecutive_losses)에 따라 신규 매수 비중을 자동 축소한다. bayesian_multiplier=0(>=5회)
|
||
위에 추가 방어층. 2~4회 구간에서도 조기 축소.
|
||
|
||
'
|
||
inputs:
|
||
- field: consecutive_losses
|
||
unit: integer
|
||
thresholds:
|
||
'>=5':
|
||
state: NO_BUY
|
||
buy_scale: 0.0
|
||
'>=3':
|
||
state: REDUCE_BUY
|
||
buy_scale: 0.5
|
||
'>=2':
|
||
state: CAUTION_BUY
|
||
buy_scale: 0.75
|
||
0-1:
|
||
state: NORMAL
|
||
buy_scale: 1.0
|
||
output:
|
||
fields:
|
||
drawdown_guard_state: NO_BUY/REDUCE_BUY/CAUTION_BUY/NORMAL
|
||
drawdown_buy_scale: atrQty 곱셈 배수 (0~1.0). GAS 적용 후 고착화
|
||
drawdown_consecutive_losses: 현재 연속 손절 횟수
|
||
prohibition:
|
||
- LLM이 drawdown_buy_scale을 무시하고 정상 수량 제시 금지
|
||
- drawdown_guard_state=NO_BUY이면 BUY 주문 수량 0 또는 주문 생성 금지
|
||
canonical_ref: AGENTS.md:Direction M1
|
||
version: 2026-05-20_M1
|
||
PORTFOLIO_BETA_GATE_V1:
|
||
purpose: '보유 종목 가중평균 베타(beta_proxy = ret5d/kospiRet5d)를 산출하고 국면별 상한과 비교해 OVER_BETA/WARN_BETA/PASS를
|
||
결정한다. OVER_BETA 시 고베타 종목 TRIM 우선 조정.
|
||
|
||
'
|
||
inputs:
|
||
- field: weight_pct
|
||
unit: pct
|
||
- field: ret5d
|
||
unit: pct
|
||
- field: kospi_ret5d
|
||
unit: pct
|
||
- field: market_regime
|
||
unit: enum
|
||
beta_limits_by_regime:
|
||
EVENT_SHOCK:
|
||
over: 0.7
|
||
warn: 0.5
|
||
RISK_OFF:
|
||
over: 0.8
|
||
warn: 0.6
|
||
NEUTRAL:
|
||
over: 1.0
|
||
warn: 0.8
|
||
RISK_ON:
|
||
over: 1.3
|
||
warn: 1.0
|
||
SECULAR_LEADER_RISK_ON:
|
||
over: 1.5
|
||
warn: 1.2
|
||
output:
|
||
fields:
|
||
portfolio_beta: 가중평균 베타 (GAS 산출)
|
||
portfolio_beta_gate: OVER_BETA/WARN_BETA/PASS/INSUFFICIENT_DATA
|
||
portfolio_beta_gate_json: per-holding 베타 상세
|
||
prohibition:
|
||
- portfolio_beta_gate=OVER_BETA이면 고베타 종목 신규 BUY 금지
|
||
- LLM이 beta 값을 임의 재계산 금지
|
||
canonical_ref: AGENTS.md:Direction M2
|
||
version: 2026-05-20_M2
|
||
TP_QUANTITY_LADDER_V1:
|
||
purpose: 'TP1/TP2/TP3 도달 시 매도할 수량을 GAS에서 자동 산출해 고착화한다. 수동 입력(tp1_qty>0) 우선 사용,
|
||
없으면 보유수량의 33%/33%/34% 자동 분배. LLM이 익절 수량을 임의로 결정하는 것을 구조적으로 차단.
|
||
|
||
'
|
||
inputs:
|
||
- field: holding_qty
|
||
unit: shares
|
||
- field: tp1_price
|
||
unit: KRW_per_share
|
||
- field: tp1_qty
|
||
unit: shares
|
||
note: 수동 입력 우선
|
||
- field: tp2_price
|
||
unit: KRW_per_share
|
||
- field: tp2_qty
|
||
unit: shares
|
||
- field: tp3_qty
|
||
unit: shares
|
||
output:
|
||
field: tp_quantity_ladder_json
|
||
schema:
|
||
tp1_qty: TP1 도달 시 매도 수량 (수동/AUTO_33PCT)
|
||
tp2_qty: TP2 도달 시 매도 수량
|
||
tp3_qty: TP3/잔량 수량
|
||
qty_source: MANUAL/AUTO_33PCT/NO_HOLDING
|
||
prohibition:
|
||
- tp_quantity_ladder_lock=true이면 LLM이 익절 수량을 임의 변경 금지
|
||
- TP 가격 도달 시 tp_quantity_ladder_json의 수량을 반드시 사용
|
||
canonical_ref: AGENTS.md:Direction M3
|
||
version: 2026-05-20_M3
|
||
EVENT_RISK_HOLD_GATE_V1:
|
||
purpose: '이벤트 홀드 기간(Event_Hold_Days <= 5) 또는 DART 리스크 플래그가 있는 종목에 신규 매수 홀드 게이트를
|
||
적용한다. Event_Hold_Days 컬럼이 없으면 DART_Risk=''Y'' 또는 DART_Status를 대체 기준으로 사용.
|
||
|
||
'
|
||
inputs:
|
||
- field: event_hold_days
|
||
unit: integer_or_null
|
||
note: Event_Hold_Days 컬럼
|
||
- field: dart_risk
|
||
unit: string
|
||
note: Y/N 또는 상태 문자열
|
||
output:
|
||
field: event_risk_json
|
||
schema:
|
||
event_hold_gate: EVENT_HOLD/PASS
|
||
event_hold_days: 남은 홀드 일수 (null=컬럼 없음)
|
||
dart_risk: true/false
|
||
reason: event_hold_days_le5:N / dart_risk / no_event_risk
|
||
prohibition:
|
||
- event_hold_gate=EVENT_HOLD인 종목에 신규 BUY 주문 생성 금지
|
||
- 이벤트 홀드를 LLM이 임의 해제 금지
|
||
canonical_ref: AGENTS.md:Direction M4
|
||
version: 2026-05-20_M4
|
||
SECTOR_CONCENTRATION_LIMIT_V1:
|
||
purpose: '단일 섹터 ≥40%(RISK_OFF:35%) 시 해당 섹터 추가 매수 차단. 상위 2개 섹터 합산 ≥65%(RISK_OFF:55%)
|
||
시 WARN_TOP2. 포트폴리오 섹터 분산을 GAS가 결정론적으로 산출 - LLM 임의 완화 금지.
|
||
|
||
'
|
||
inputs:
|
||
- field: weight_pct
|
||
unit: pct
|
||
- field: sector
|
||
unit: string
|
||
- field: market_regime
|
||
unit: enum
|
||
thresholds_by_regime:
|
||
EVENT_SHOCK_RISK_OFF:
|
||
single_block: 35
|
||
top2_warn: 55
|
||
OTHER:
|
||
single_block: 40
|
||
top2_warn: 65
|
||
output:
|
||
fields:
|
||
sector_concentration_gate: BLOCK_SECTOR/WARN_TOP2/PASS
|
||
sector_concentration_json: 섹터별 weight_pct 및 gate 상태
|
||
prohibition:
|
||
- sector_concentration_gate=BLOCK_SECTOR인 섹터 종목에 추가 BUY 금지
|
||
- LLM이 섹터 편중도를 임의로 재계산하거나 한도를 완화 금지
|
||
canonical_ref: AGENTS.md:Direction M5
|
||
version: 2026-05-20_M5
|
||
POSITION_SIZE_REGIME_SCALE_V1:
|
||
purpose: '국면에 따라 ATR 기반 신규 매수 수량(atrQty)에 스케일 배수를 적용한다. M1(DrawdownGuard) 이후
|
||
독립적으로 곱해지는 방어/공격 층. EVENT_SHOCK:0.25, RISK_OFF:0.5, NEUTRAL:1.0, RISK_ON:1.1,
|
||
SECULAR_LEADER_RISK_ON:1.2
|
||
|
||
'
|
||
inputs:
|
||
- field: market_regime
|
||
unit: enum
|
||
output:
|
||
field: regime_size_scale
|
||
schema:
|
||
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
|
||
VOLUME_BREAKOUT_CONFIRM_V1:
|
||
purpose: '52주 신고가 97% 이상 부근에서 진입 시 당일 거래량이 5일 평균 거래량×1.2 미만이면 UNCONFIRMED_BREAKOUT으로
|
||
alpha_lead_score에서 10점 차감. 거래량 미확인 신고가 뒷박을 방지한다.
|
||
|
||
'
|
||
inputs:
|
||
- field: high52w
|
||
unit: KRW_per_share
|
||
- field: close
|
||
unit: KRW_per_share
|
||
- field: volume
|
||
unit: shares_integer
|
||
- field: avg_volume_5d
|
||
unit: shares_float
|
||
threshold:
|
||
near_new_high_pct: 97
|
||
vol_confirm_multiplier: 1.2
|
||
score_penalty: -10
|
||
late_chase_risk_add: 15
|
||
output:
|
||
field: alpha_lead_json
|
||
note: reason_codes에 unconfirmed_breakout_volume 추가
|
||
prohibition:
|
||
- 거래량 미확인 신고가 부근 종목에 PILOT_ALLOWED 부여 금지
|
||
canonical_ref: AGENTS.md:Direction N2
|
||
version: 2026-05-20_N2
|
||
STOP_PRICE_ADEQUACY_V1:
|
||
purpose: '보유 종목의 수동 손절가가 ATR 기반 권고 손절가 대비 너무 넓게 설정되었는지 검증한다. manual_stop < recommended_stop×0.60
|
||
→ STOP_CRITICAL manual_stop < recommended_stop×0.85 → STOP_WIDE recommended_stop
|
||
= max(avgCost×0.92, avgCost - ATR20×multiplier), tickNormalize 적용
|
||
|
||
'
|
||
inputs:
|
||
- field: stop_price
|
||
unit: KRW_per_share
|
||
- field: average_cost
|
||
unit: KRW_per_share
|
||
- field: atr20
|
||
unit: KRW_per_share
|
||
thresholds:
|
||
critical_ratio: 0.6
|
||
wide_ratio: 0.85
|
||
atr_multiplier_high_vol: 2.0
|
||
atr_multiplier_normal: 1.5
|
||
high_vol_threshold_pct: 8.0
|
||
output:
|
||
field: stop_adequacy_json
|
||
schema:
|
||
ticker: 종목코드
|
||
manual_stop: 수동 손절가
|
||
recommended_stop: ATR 기반 권고 손절가 (tick 정규화)
|
||
stop_gap_pct: gap = (recommended - manual) / recommended × 100
|
||
adequacy_status: PASS/STOP_WIDE/STOP_CRITICAL/INSUFFICIENT_DATA
|
||
prohibition:
|
||
- stop_adequacy_json을 LLM이 임의 수정 금지
|
||
- STOP_CRITICAL 종목에 추가 매수 신호 생성 금지
|
||
canonical_ref: AGENTS.md:Direction N3
|
||
version: 2026-05-20_N3
|
||
HOLDING_STALE_REVIEW_V1:
|
||
purpose: 'account_snapshot의 entry_date 기준으로 보유 기간을 산출한다. >60일: STALE_POSITION
|
||
(근거 재검토 의무), >30일: REVIEW_SOON, <=30일: FRESH entry_date 컬럼이 없으면 ENTRY_DATE_MISSING.
|
||
|
||
'
|
||
inputs:
|
||
- field: entry_date
|
||
unit: ISO_date_string
|
||
thresholds:
|
||
stale_days: 60
|
||
review_days: 30
|
||
output:
|
||
field: holding_stale_json
|
||
schema:
|
||
ticker: 종목코드
|
||
entry_date: 진입일 (ISO)
|
||
holding_days: 보유 일수
|
||
stale_status: STALE_POSITION/REVIEW_SOON/FRESH/ENTRY_DATE_MISSING
|
||
prohibition:
|
||
- holding_stale_json을 LLM이 임의 산출 금지
|
||
- STALE_POSITION 종목 보유 유지 시 근거 재확인 의무 (LLM 자동 승인 금지)
|
||
canonical_ref: AGENTS.md:Direction N4
|
||
version: 2026-05-20_N4
|
||
REGIME_CASH_UPLIFT_V1:
|
||
purpose: 'MRS 기반 cash_floor보다 더 높은 현금 최소 비율이 국면(regime)상 요구될 때 cashFloorInfo.minPct를
|
||
상향 오버라이드하고 cashShortfallInfo를 재산출한다. EVENT_SHOCK→20%, RISK_OFF→15%, RISK_ON→5%
|
||
(MRS값보다 낮으면 MRS값 유지).
|
||
|
||
'
|
||
inputs:
|
||
- field: market_regime
|
||
unit: enum
|
||
- field: cash_floor_min_pct
|
||
unit: pct
|
||
thresholds_by_regime:
|
||
EVENT_SHOCK: 20
|
||
RISK_OFF: 15
|
||
RISK_ON: 5
|
||
NEUTRAL: 0
|
||
output:
|
||
field: regime_cash_uplift_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
|
||
SINGLE_POSITION_WEIGHT_CAP_V1:
|
||
purpose: '개별 종목의 포트폴리오 비중(weight_pct)이 국면별 상한을 초과하면 OVERWEIGHT_TRIM. M5(섹터 편중)와
|
||
독립적인 종목 단위 비중 하드 캡. NEUTRAL/RISK_ON:20%, EVENT_SHOCK/RISK_OFF:15%
|
||
|
||
'
|
||
inputs:
|
||
- field: weight_pct
|
||
unit: pct
|
||
- field: market_regime
|
||
unit: enum
|
||
thresholds_by_regime:
|
||
EVENT_SHOCK_RISK_OFF:
|
||
cap_pct: 15
|
||
OTHER:
|
||
cap_pct: 20
|
||
output:
|
||
fields:
|
||
single_position_weight_gate: OVERWEIGHT_TRIM/PASS
|
||
single_position_weight_json: 종목별 weight_pct vs cap_pct 상태
|
||
prohibition:
|
||
- OVERWEIGHT_TRIM 종목에 추가 매수 신호 생성 금지
|
||
- LLM이 비중 상한을 임의 완화 금지
|
||
canonical_ref: AGENTS.md:Direction O1
|
||
version: 2026-05-20_O1
|
||
SEMICONDUCTOR_CLUSTER_GATE_V1:
|
||
purpose: '005930(삼성전자) + 000660(SK하이닉스) 합산 비중이 시장 국면별 상한을 초과하면 CLUSTER_BLOCK.
|
||
두 종목이 같은 메모리 사이클에서 동반 하락하는 상관 리스크 통제. EVENT_SHOCK/RISK_OFF: ≥20%, NEUTRAL/RISK_ON:
|
||
≥25%, SECULAR_LEADER_RISK_ON: ≥35%, CONCENTRATED_LEADER_ADVANCE(CLA): ≥60%
|
||
→ CLUSTER_BLOCK
|
||
|
||
'
|
||
inputs:
|
||
- field: weight_pct
|
||
unit: pct
|
||
- field: market_regime
|
||
unit: enum
|
||
thresholds_by_regime:
|
||
EVENT_SHOCK_RISK_OFF:
|
||
cap_pct: 20
|
||
NEUTRAL_RISK_ON:
|
||
cap_pct: 25
|
||
SECULAR_LEADER_RISK_ON:
|
||
cap_pct: 35
|
||
CONCENTRATED_LEADER_ADVANCE:
|
||
cap_pct: 60
|
||
output:
|
||
fields:
|
||
semiconductor_cluster_gate: CLUSTER_BLOCK/PASS
|
||
semiconductor_cluster_json: 클러스터 합산 비중 및 종목별 비중
|
||
prohibition:
|
||
- CLUSTER_BLOCK 상태에서 005930 또는 000660 추가 매수 금지
|
||
- LLM이 하네스/국면별 클러스터 한도를 임의 상향 또는 하향 금지
|
||
canonical_ref: AGENTS.md:Direction O2
|
||
version: 2026-05-20_O2
|
||
PORTFOLIO_DRAWDOWN_GATE_V1:
|
||
purpose: '총자산(total_asset_krw)의 역대 고점(settings.portfolio_peak_krw) 대비 낙폭을 산출한다.
|
||
-15% → DRAWDOWN_CAUTION(신규 매수 보류 권고) -20% → DRAWDOWN_FORCE_RISK_OFF(신규 매수
|
||
전면 차단 권고) 현재 자산이 고점 초과 시 GAS가 settings에 새 고점을 자동 기록.
|
||
|
||
'
|
||
inputs:
|
||
- field: total_asset_krw
|
||
unit: KRW
|
||
- field: portfolio_peak_krw
|
||
unit: KRW
|
||
note: settings 시트 자동 갱신
|
||
thresholds:
|
||
caution_pct: 15
|
||
force_off_pct: 20
|
||
output:
|
||
fields:
|
||
portfolio_drawdown_gate: DRAWDOWN_FORCE_RISK_OFF/DRAWDOWN_CAUTION/PASS/INSUFFICIENT_DATA
|
||
portfolio_drawdown_pct: 현재 낙폭 % (양수=낙폭)
|
||
portfolio_peak_krw: 적용된 고점 자산 (원)
|
||
prohibition:
|
||
- DRAWDOWN_FORCE_RISK_OFF 상태에서 신규 매수 BUY 주문 생성 금지
|
||
- portfolio_peak_krw를 LLM이 임의 설정 금지
|
||
canonical_ref: AGENTS.md:Direction O3
|
||
version: 2026-05-20_O3
|
||
WIN_LOSS_STREAK_GUARD_V1:
|
||
purpose: '최근 30거래 승률(win_rate_30)이 임계값 이하로 하락하면 신규 매수 비중을 자동 축소한다. M1(연속 손절
|
||
횟수)과 독립적인 전체 승률 축 방어층. EDGE_CRITICAL(<30%):scale=0.25, EDGE_DEGRADED(<40%):scale=0.50,
|
||
EDGE_WEAK(<45%):scale=0.75, EDGE_OK(>=45%):scale=1.0 trades_used<10 → INSUFFICIENT_HISTORY(scale=1.0)
|
||
|
||
'
|
||
inputs:
|
||
- field: win_rate_30
|
||
unit: ratio_0_to_1
|
||
- field: trades_used
|
||
unit: integer
|
||
thresholds:
|
||
edge_critical: 0.3
|
||
edge_degraded: 0.4
|
||
edge_weak: 0.45
|
||
min_trades: 10
|
||
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_win_rate_pct: 최근 30거래 승률 %
|
||
prohibition:
|
||
- win_loss_streak_buy_scale를 LLM이 임의 복원 금지
|
||
- EDGE_CRITICAL 상태에서 atr_qty 수동 상향 금지
|
||
canonical_ref: AGENTS.md:Direction O4
|
||
version: 2026-05-20_O4
|
||
POSITION_COUNT_LIMIT_V1:
|
||
purpose: '동시 보유 종목 수가 국면별 상한을 초과하면 POSITION_COUNT_BLOCK. 과다 분산으로 인한 집중 모니터링
|
||
불가 및 Total Heat 과소 추정 방지. NEUTRAL/RISK_ON:10종목, EVENT_SHOCK/RISK_OFF:6종목
|
||
|
||
'
|
||
inputs:
|
||
- field: market_regime
|
||
unit: enum
|
||
- field: holding_qty
|
||
unit: integer
|
||
note: 보유 종목 수 (holdings.length)
|
||
thresholds_by_regime:
|
||
EVENT_SHOCK_RISK_OFF:
|
||
max_count: 6
|
||
OTHER:
|
||
max_count: 10
|
||
output:
|
||
fields:
|
||
position_count_gate: POSITION_COUNT_BLOCK/PASS
|
||
position_count: 현재 보유 종목 수
|
||
position_count_max: 국면별 최대 허용 종목 수
|
||
prohibition:
|
||
- POSITION_COUNT_BLOCK 상태에서 신규 BUY 주문 생성 금지
|
||
- LLM이 position_count_max를 임의 상향 금지
|
||
canonical_ref: AGENTS.md:Direction O5
|
||
version: 2026-05-20_O5
|
||
STOP_BREACH_ALERT_V1:
|
||
purpose: '보유 종목 중 close <= stop_price인 종목을 즉시 경보한다. close <= stop_price →
|
||
BREACH_IMMEDIATE_EXIT (정규 게이트값=BREACH) close <= stop_price × 1.03 → STOP_APPROACHING (게이트=APPROACHING)
|
||
현재 stopBreach 필드를 하네스 레벨 gate로 올린 것.
|
||
|
||
'
|
||
inputs:
|
||
- field: close
|
||
unit: KRW_per_share
|
||
- field: stop_price
|
||
unit: KRW_per_share
|
||
thresholds:
|
||
approaching_ratio: 1.03
|
||
output:
|
||
fields:
|
||
stop_breach_gate: BREACH/APPROACHING/PASS
|
||
stop_breach_alert_json: 종목별 경보 상태·gap_pct 배열
|
||
prohibition:
|
||
- stop_breach_gate=BREACH 종목에 추가 매수 또는 HOLD 서술 금지
|
||
- stop_breach_alert_json을 LLM이 임의 수정 금지
|
||
canonical_ref: AGENTS.md:Direction P1
|
||
version: 2026-05-20_P1
|
||
TP_TRIGGER_ALERT_V1:
|
||
purpose: '보유 종목 중 close >= tp1_price 또는 close >= tp2_price인 종목을 감지한다. tp_quantity_ladder_json과
|
||
연계해 즉각 매도 수량을 확정론적으로 제공한다. tp_trigger_gate=TRIGGERED이면 해당 종목의 tp_qty를 LLM이
|
||
임의 변경 금지.
|
||
|
||
'
|
||
inputs:
|
||
- field: close
|
||
unit: KRW_per_share
|
||
- field: tp1_price
|
||
unit: KRW_per_share
|
||
- field: tp2_price
|
||
unit: KRW_per_share
|
||
- field: tp_quantity_ladder_json
|
||
unit: json
|
||
output:
|
||
fields:
|
||
tp_trigger_gate: TRIGGERED/PASS
|
||
tp_trigger_alert_json: 트리거된 종목·tp_qty 배열
|
||
prohibition:
|
||
- TRIGGERED 종목의 매도 수량을 LLM이 tp1_qty/tp2_qty 외 값으로 변경 금지
|
||
- TP 가격 도달 여부를 LLM이 재계산 금지
|
||
canonical_ref: AGENTS.md:Direction P2
|
||
version: 2026-05-20_P2
|
||
HEAT_CONCENTRATION_ALERT_V1:
|
||
purpose: '단일 종목의 Heat(=(avgCost-stopPrice)×qty)가 전체 totalHeatKrw의 50% 이상이면 HEAT_CONCENTRATED
|
||
경보. 해당 종목 급락 시 total_heat_pct가 급변해 다른 게이트가 무력화되는 구조적 리스크를 사전 차단.
|
||
|
||
'
|
||
inputs:
|
||
- field: average_cost
|
||
unit: KRW_per_share
|
||
- field: stop_price
|
||
unit: KRW_per_share
|
||
- field: total_heat_pct
|
||
unit: pct
|
||
note: total_heat_krw 기준
|
||
threshold:
|
||
concentration_pct: 50
|
||
output:
|
||
fields:
|
||
heat_concentration_gate: HEAT_CONCENTRATED/PASS/INSUFFICIENT_DATA
|
||
heat_concentration_json: 종목별 heat_krw·heat_share_pct
|
||
prohibition:
|
||
- HEAT_CONCENTRATED 종목에 추가 매수 신호 생성 금지
|
||
- heat_share_pct를 LLM이 임의 계산 금지
|
||
canonical_ref: AGENTS.md:Direction P3
|
||
version: 2026-05-20_P3
|
||
REGIME_TRANSITION_ALERT_V1:
|
||
purpose: '직전 실행 국면(settings.prev_market_regime) vs 현재 marketRegime를 비교한다. UPGRADE(완화):
|
||
RISK_OFF→NEUTRAL 등, DOWNGRADE(긴축): NEUTRAL→RISK_OFF 등 LATERAL_SHIFT: 동급 국면
|
||
변경, NO_CHANGE: 변동 없음. 국면 전환 시 영향 받는 게이트 목록을 affected_gates에 자동 생성.
|
||
|
||
'
|
||
inputs:
|
||
- field: market_regime
|
||
unit: enum
|
||
- field: portfolio_peak_krw
|
||
unit: KRW
|
||
note: settings 시트
|
||
output:
|
||
fields:
|
||
regime_transition_type: UPGRADE/DOWNGRADE/LATERAL_SHIFT/NO_CHANGE
|
||
regime_transition_json: 전환 상세 (prev/current/affected_gates)
|
||
prohibition:
|
||
- DOWNGRADE 국면에서 기존 포지션 규모 자동 유지 서술 금지
|
||
- LLM이 regime_transition_type을 임의 판단 금지
|
||
canonical_ref: AGENTS.md:Direction P4
|
||
version: 2026-05-20_P4
|
||
PORTFOLIO_HEALTH_SCORE_V1:
|
||
purpose: 'O1~P4까지 모든 게이트 상태를 집계해 단일 건전성 레이블을 산출한다. CRITICAL 게이트 ≥1개, 또는 CAUTION
|
||
≥3개 → CRITICAL CAUTION 1~2개 → CAUTION, 0개 → HEALTHY score = max(0, 100 - critical×30
|
||
- caution×10) 보고서 첫 줄에 반드시 표시. LLM이 개별 게이트 확인 없이 이 레이블로 우선 판단.
|
||
|
||
'
|
||
inputs:
|
||
- field: heat_gate_status
|
||
unit: enum
|
||
- field: cash_floor_status
|
||
unit: enum
|
||
- field: portfolio_drawdown_gate
|
||
unit: enum
|
||
- field: stop_breach_gate
|
||
unit: enum
|
||
- field: tp_trigger_gate
|
||
unit: enum
|
||
output:
|
||
fields:
|
||
portfolio_health_label: HEALTHY/CAUTION/CRITICAL
|
||
portfolio_health_score: 0~100 점수
|
||
portfolio_health_critical_count: CRITICAL 상태 게이트 수
|
||
portfolio_health_caution_count: CAUTION 상태 게이트 수
|
||
portfolio_health_blocked_json: 게이트별 severity 상세
|
||
prohibition:
|
||
- 보고서 시작 전에 portfolio_health_label을 반드시 표시
|
||
- CRITICAL 레이블이면 보고서 본문 이전에 '긴급 주의' 섹션 필수
|
||
- LLM이 health_score를 재계산하거나 임의로 CRITICAL→CAUTION 완화 금지
|
||
canonical_ref: AGENTS.md:Direction P5
|
||
version: 2026-05-20_P5
|
||
BUY_TIMING_SUITABILITY_V1:
|
||
purpose: core_satellite 후보 품질과 실제 매수 타이밍을 분리한다.
|
||
inputs:
|
||
- field: candidate_quality_grade
|
||
unit: enum
|
||
- field: entry_mode_gate
|
||
unit: enum
|
||
- field: timing_score_entry
|
||
unit: score_0_100
|
||
- field: timing_score_exit
|
||
unit: score_0_100
|
||
- field: expected_edge
|
||
unit: ratio
|
||
optional: true
|
||
- field: liquidity_status
|
||
unit: enum
|
||
- field: spread_status
|
||
unit: enum
|
||
output:
|
||
field: execution_recommendation_state
|
||
unit: enum
|
||
gates:
|
||
- timing_score_exit >= 50 -> BUY_BLOCKED_T1_EXIT_RISK
|
||
- entry_mode_gate != PASS -> WATCH_TIMING_SETUP
|
||
- candidate_quality_grade=A AND entry_mode_gate=PASS AND timing_score_entry>=75
|
||
-> BUY_PILOT_ALLOWED
|
||
missing_policy: 핵심 입력 누락 시 CANDIDATE_ONLY. LLM이 BUY로 승격 금지.
|
||
version: 2026-05-20_CORE_SAT_TIMING_V1
|
||
T1_FORCED_SELL_RISK_V1:
|
||
purpose: 오늘 매수하면 다음 거래일 손절·매도검토가 발생할 위험을 0~100점으로 산출한다.
|
||
inputs:
|
||
- field: sell_action
|
||
unit: enum
|
||
- field: sell_validation
|
||
unit: enum
|
||
- field: timing_score_exit
|
||
unit: score_0_100
|
||
- field: rw_partial
|
||
unit: count
|
||
- field: distribution_risk_score
|
||
unit: score_0_100
|
||
optional: true
|
||
- field: late_chase_risk_score
|
||
unit: score_0_100
|
||
optional: true
|
||
- field: rsi14
|
||
unit: points
|
||
optional: true
|
||
- field: disparity
|
||
unit: pct
|
||
optional: true
|
||
- field: val_surge_pct
|
||
unit: pct
|
||
optional: true
|
||
- field: ret5d
|
||
unit: pct
|
||
optional: true
|
||
- field: dart_risk
|
||
unit: string
|
||
optional: true
|
||
output:
|
||
field: t1_forced_sell_risk_score
|
||
unit: score_0_100
|
||
expression: min(100, sell_action_active*40 + timing_exit_ge_50*25 + rw_ge_2*25
|
||
+ distribution_ge_70*30 + late_chase_ge_70*25 + overheated*20 + surge_after_runup*15
|
||
+ dart_risk*30)
|
||
gates:
|
||
- score>=70 -> BUY_BLOCKED_T1_EXIT_RISK
|
||
- 50<=score<70 -> WATCH_ONLY_T1_RISK
|
||
- score<50 -> PASS
|
||
version: 2026-05-20_CORE_SAT_TIMING_V1
|
||
SELL_CONFLICT_AWARE_RECOMMENDATION_V1:
|
||
purpose: 매도·현금확보·NO_ADD 게이트와 충돌하는 신규 core_satellite 매수 추천을 차단한다.
|
||
inputs:
|
||
- field: final_action
|
||
unit: enum
|
||
- field: sell_action
|
||
unit: enum
|
||
- field: cash_preserve_style
|
||
unit: enum
|
||
- field: allowed_action
|
||
unit: enum
|
||
output:
|
||
field: sell_conflict_score
|
||
unit: score_0_100
|
||
expression: min(100, sell_signal_active*55 + cash_preserve_active*20 + no_add_gate*20)
|
||
gates:
|
||
- score>=70 -> BUY_BLOCKED_SELL_CONFLICT
|
||
- 40<=score<70 -> SELL_OR_TRIM_FIRST
|
||
- score<40 -> PASS
|
||
version: 2026-05-20_CORE_SAT_TIMING_V1
|
||
ANTI_WHIPSAW_HOLD_GATE_V1:
|
||
purpose: '연속 매도 신호 5일 이상 + 기관·외국인 순매수 조합을 감지해 가짜 매도(whipsaw)를 차단한다. WHIPSAW_SUSPECTED이면
|
||
당일 매도를 1거래일 홀드시키고, 다음날 재평가. 설거지(distribution sell) 패턴과 구별해 실제 분산매도인지 재확인.
|
||
|
||
'
|
||
inputs:
|
||
- field: consecutive_sell_signals_5d
|
||
unit: count
|
||
note: 최근 5일간 연속 매도 신호 수
|
||
- field: vol_surge_pct
|
||
unit: pct
|
||
note: 당일 거래량/avg_vol_5d - 1 (0 이상)
|
||
- field: institutional_flow_5d
|
||
unit: KRW
|
||
note: 기관 5일 누적 순매수 (양수=순매수)
|
||
- field: foreign_flow_5d
|
||
unit: KRW
|
||
note: 외국인 5일 누적 순매수 (양수=순매수)
|
||
- field: sector_relative_strength_5d
|
||
unit: ratio
|
||
note: 섹터 5일 상대강도, 100=시장동률
|
||
scoring:
|
||
whipsaw_score_components:
|
||
- condition: consecutive_sell_signals_5d >= 5
|
||
score: 20
|
||
note: 연속 매도신호 누적
|
||
- condition: institutional_flow_5d > 0
|
||
score: 30
|
||
note: 기관 순매수 중 매도신호 = 의심
|
||
- condition: foreign_flow_5d > 0
|
||
score: 20
|
||
note: 외인 순매수 중 매도신호 = 의심
|
||
- condition: sector_relative_strength_5d > 100
|
||
score: 15
|
||
note: 섹터 강세 중 매도신호 = 의심
|
||
- condition: vol_surge_pct >= 50
|
||
score: -25
|
||
note: 대규모 거래량 = 실제 매도 가능성
|
||
- condition: vol_surge_pct >= 100
|
||
score: -20
|
||
note: 거래량 폭증 추가 패널티
|
||
base_score: 0
|
||
states:
|
||
WHIPSAW_SUSPECTED: whipsaw_score >= 30
|
||
CONFIRMED_SELL: whipsaw_score < 10
|
||
INCONCLUSIVE: 10 <= whipsaw_score < 30
|
||
hold_policy:
|
||
WHIPSAW_SUSPECTED: 1거래일 매도 연기. 다음 거래일 재평가 필수.
|
||
CONFIRMED_SELL: 매도 진행 허용
|
||
INCONCLUSIVE: 50% 수량만 매도 허용. 나머지 1거래일 후 재평가.
|
||
output:
|
||
fields:
|
||
anti_whipsaw_gate: WHIPSAW_SUSPECTED/CONFIRMED_SELL/INCONCLUSIVE
|
||
anti_whipsaw_score: 0~100 점수
|
||
anti_whipsaw_hold_days: 0 또는 1 (홀드 일수)
|
||
anti_whipsaw_json: 상태·점수·홀드 사유 JSON
|
||
prohibition:
|
||
- WHIPSAW_SUSPECTED 상태에서 당일 전량 매도 신호 생성 금지
|
||
- anti_whipsaw_score를 LLM이 임의 계산 금지
|
||
- anti_whipsaw_gate를 LLM이 재판단하거나 우회 금지
|
||
harness_lock: true
|
||
llm_override: forbidden
|
||
canonical_ref: engine_harness_upgrade_proposal_result.txt:ANTI_WHIPSAW_HOLD_GATE_V1
|
||
version: 2026-05-20_HARNESS_H6
|
||
SMART_CASH_RAISE_V2:
|
||
purpose: '현금 부족 상황에서 포트폴리오·종목 상태에 따라 4가지 경로(ROUTE_A~D) 중 하나를 결정론적으로 선택한다. 임의
|
||
전량매도·즉흥 트림을 차단하고 주식가치 훼손을 최소화하면서 반등 수익을 보존하는 구조화된 현금확보를 보장한다.
|
||
|
||
'
|
||
inputs:
|
||
- field: position_class
|
||
unit: enum
|
||
note: CORE/SATELLITE
|
||
- field: rsi14
|
||
unit: points
|
||
- field: profit_lock_stage
|
||
unit: enum
|
||
note: PROFIT_LOCK_STAGE_CLASSIFIER_V1 결과
|
||
- field: secular_leader_gate
|
||
unit: enum
|
||
note: SECULAR_LEADER_REGIME_GATE_V1 결과
|
||
- field: emergency_full_sell
|
||
unit: bool
|
||
note: 긴급 전량매도 플래그 (인간 승인 필수)
|
||
- field: cash_shortfall_krw
|
||
unit: KRW
|
||
note: 필요 현금 부족분
|
||
- field: stop_breach_gate
|
||
unit: enum
|
||
note: STOP_BREACH_ALERT_V1 결과
|
||
route_selection:
|
||
priority_order:
|
||
- ROUTE_D
|
||
- ROUTE_A
|
||
- ROUTE_B
|
||
- ROUTE_C
|
||
- ROUTE_E
|
||
routes:
|
||
ROUTE_D:
|
||
label: 긴급 전량매도
|
||
trigger: emergency_full_sell=true OR stop_breach_gate=BREACH
|
||
action: 전량 매도. 즉시 실행.
|
||
qty_formula: full_qty
|
||
rebound_wait_pct: 0
|
||
note: 반드시 인간 승인 또는 stop 트리거 자동 발동만 허용
|
||
ROUTE_A:
|
||
label: 위성 비중 트림
|
||
trigger: position_class=SATELLITE AND rsi14 >= 35
|
||
action: 보유수량의 33~50% 즉시 트림. 나머지 유지.
|
||
qty_formula: ROUND(qty * 0.33 ~ 0.50)
|
||
rebound_wait_pct: 0
|
||
note: 과매도 아닌 위성 종목 비중 축소. 반등 대기 없음.
|
||
ROUTE_B:
|
||
label: 과매도 종목 분할 매도
|
||
trigger: rsi14 < 35
|
||
action: 50% 즉시 매도 + 50% rebound_trigger_price 도달 시 매도
|
||
qty_formula: K2_STAGED_REBOUND_SELL_V1 공식 적용
|
||
rebound_trigger_formula: prevClose + 0.5 × ATR20
|
||
rebound_wait_pct: 50
|
||
note: 과매도 반등 수익 보존. K2와 동일 로직 재사용.
|
||
ROUTE_C:
|
||
label: 코어 익절 잠금
|
||
trigger: position_class=CORE AND profit_lock_stage IN [PROFIT_LOCK_STAGE_20,PROFIT_LOCK_STAGE_30]
|
||
AND secular_leader_gate=PASS
|
||
action: PROFIT_LOCK_STAGE_CLASSIFIER_V1 지정 수량만 매도. 잔여 HOLD.
|
||
qty_formula: profit_lock_qty (PROFIT_LOCK_STAGE_CLASSIFIER_V1 계산값)
|
||
rebound_wait_pct: 0
|
||
note: 코어 시큘러 리더는 최소 매도. 익절 수량 외 강제 매도 금지.
|
||
ROUTE_E:
|
||
label: 일반 현금부족 단계적 매도
|
||
trigger: cash_shortfall_krw > 0 AND stop_breach_gate != BREACH AND rsi14
|
||
>= 35 AND ROUTE_A~D 조건 미해당
|
||
action: H2 sell_priority 순서로 SELL_WATERFALL_ENGINE_V1 Stage 1→2→3 실행.
|
||
qty_formula: SELL_WATERFALL_ENGINE_V1 stage1_qty (prevClose 지정가 기준)
|
||
rebound_wait_pct: 50
|
||
note: 비상 아닌 일반 현금부족 전용 폴백 경로. ROUTE_A~D 조건 미충족 시 실행.
|
||
output:
|
||
fields:
|
||
smart_cash_raise_route: ROUTE_A/ROUTE_B/ROUTE_C/ROUTE_D/NO_ACTION
|
||
smart_cash_raise_qty: 결정론적 매도 수량 (주)
|
||
smart_cash_raise_json: 경로·수량·사유·rebound_wait_pct 상세 JSON
|
||
prohibition:
|
||
- smart_cash_raise_route를 LLM이 임의 선택 금지
|
||
- smart_cash_raise_qty를 LLM이 재계산 금지
|
||
- ROUTE_D는 emergency_full_sell=true 또는 stop_breach_gate=BREACH 외 발동 금지
|
||
- ROUTE_C에서 profit_lock_qty 이상 매도 서술 금지
|
||
- 현금 부족 시 코어 시큘러 리더 전량 매도 권고 금지
|
||
harness_lock: true
|
||
llm_override: forbidden
|
||
canonical_ref: engine_harness_upgrade_proposal_result.txt:SMART_CASH_RAISE_V2
|
||
version: 2026-05-23_HARNESS_V5_PROPOSAL46
|
||
PREDICTIVE_ALPHA_ENGINE_V1:
|
||
purpose: '正(매수 모멘텀) + 反(분배/과열 신호)를 합산한 방향성 신뢰도(合)를 결정론적으로 산출. LLM이 "분위기가 좋으니까"
|
||
BUY 권고하는 구조를 3계층 점수로 대체. T+5 피드백 루프로 예측 정확도를 자동 추적하여 45.59% → 70%+ 목표.
|
||
|
||
'
|
||
inputs:
|
||
- field: close
|
||
unit: KRW_per_share
|
||
- field: ma20
|
||
unit: KRW_per_share
|
||
- field: flow_credit
|
||
unit: ratio_0_1
|
||
- field: rs_verdict
|
||
unit: enum
|
||
- field: brt_verdict
|
||
unit: enum
|
||
- field: volume_ratio_5d
|
||
unit: ratio
|
||
- field: rsi14
|
||
unit: score_0_100
|
||
- field: velocity_1d
|
||
unit: percent
|
||
- field: distribution_signals_count
|
||
unit: integer
|
||
- field: foreign_sell_consecutive_days
|
||
unit: integer
|
||
- field: usd_krw
|
||
unit: KRW
|
||
optional: true
|
||
- field: days_since_entry
|
||
unit: integer
|
||
optional: true
|
||
- field: profit_pct
|
||
unit: percent
|
||
optional: true
|
||
thesis_score:
|
||
max: 100
|
||
components:
|
||
pullback_entry:
|
||
condition: close > ma20 AND close < ma20 * 1.03
|
||
score: 20
|
||
flow_strong:
|
||
condition: flow_credit >= 0.55
|
||
score: 20
|
||
rs_leader:
|
||
condition: rs_verdict = LEADER
|
||
score: 15
|
||
volume_confirm:
|
||
condition: volume_ratio_5d >= 1.2
|
||
score: 15
|
||
rsi_healthy:
|
||
condition: rsi14 BETWEEN 45 AND 65
|
||
score: 15
|
||
brt_leader:
|
||
condition: brt_verdict = LEADER
|
||
score: 15
|
||
antithesis_score:
|
||
max: 100
|
||
components:
|
||
chase_risk:
|
||
condition: velocity_1d >= 3.0
|
||
score: 25
|
||
distribution:
|
||
condition: distribution_signals_count >= 2
|
||
score: 20
|
||
rsi_overbought:
|
||
condition: rsi14 >= 75
|
||
score: 20
|
||
foreign_sell:
|
||
condition: foreign_sell_consecutive_days >= 5
|
||
score: 15
|
||
usd_krw_weak:
|
||
condition: usd_krw >= 1480
|
||
score: 10
|
||
stale_position:
|
||
condition: days_since_entry >= 60 AND profit_pct < 5
|
||
score: 10
|
||
synthesis:
|
||
direction_confidence: thesis_score - antithesis_score
|
||
verdicts:
|
||
STRONG_BUY_SIGNAL:
|
||
condition: direction_confidence >= 40
|
||
MODERATE_BUY_SIGNAL:
|
||
condition: direction_confidence >= 20
|
||
HOLD_NEUTRAL:
|
||
condition: direction_confidence >= -10
|
||
TRIM_SIGNAL:
|
||
condition: direction_confidence >= -30
|
||
EXIT_SIGNAL:
|
||
condition: direction_confidence < -30
|
||
feedback_loop:
|
||
metric: prediction_accuracy_rate
|
||
storage: monthly_history sheet
|
||
auto_adjust:
|
||
antithesis_weight_up: accuracy < 60% → ANTITHESIS 가중치 +10%
|
||
thesis_weight_up: accuracy > 75% → THESIS 가중치 +5%
|
||
output:
|
||
field: predictive_alpha_json
|
||
schema:
|
||
direction_confidence: integer (-100 ~ +100)
|
||
thesis_score: integer (0 ~ 100)
|
||
antithesis_score: integer (0 ~ 100)
|
||
synthesis_verdict: enum
|
||
prediction_confidence_pct: percent
|
||
thesis_breakdown: array
|
||
antithesis_breakdown: array
|
||
prohibition:
|
||
- synthesis_verdict 없이 신규 BUY 서술 금지 (Direction PA1)
|
||
- LLM이 thesis/antithesis 점수를 직접 계산 금지
|
||
- direction_confidence 재계산 또는 번복 금지
|
||
canonical_ref: AGENTS.md:Direction PA1, temp/request_result.txt:proposal_46
|
||
version: 2026-05-23_PROPOSAL46
|
||
ANTI_LATE_ENTRY_GATE_V2:
|
||
purpose: '기존 ANTI_CHASING_VELOCITY_V1(당일 속도만 체크)의 허점 보완. 2~3일 연속 급등 후 당일 잠시
|
||
쉬는 경우도 5일 누적 속도 GATE_2로 차단. 분배 신호 GATE_3을 추가해 3중 AND 게이트 구성.
|
||
|
||
'
|
||
inputs:
|
||
- field: velocity_1d
|
||
unit: percent
|
||
note: (close-prevClose)/prevClose*100
|
||
- field: velocity_5d
|
||
unit: percent
|
||
note: (close-close_5d)/close_5d*100
|
||
- field: distribution_signals_count
|
||
unit: integer
|
||
note: DISTRIBUTION_SELL_DETECTOR_V1 결과
|
||
- field: pre_distribution_warning
|
||
unit: enum
|
||
optional: true
|
||
- field: flow_credit
|
||
unit: ratio_0_1
|
||
optional: true
|
||
- field: ma20
|
||
unit: KRW_per_share
|
||
optional: true
|
||
gate_1_velocity_1d:
|
||
BLOCK_CHASE: velocity_1d >= 3.0%
|
||
PULLBACK_WAIT: velocity_1d >= 1.5%
|
||
PASS: velocity_1d < 1.5%
|
||
gate_2_velocity_5d:
|
||
BLOCK_CHASE_5D: velocity_5d >= 8.0%
|
||
PULLBACK_WAIT_5D: velocity_5d >= 5.0%
|
||
PASS: velocity_5d < 5.0%
|
||
gate_3_distribution:
|
||
BLOCK_DISTRIBUTION: distribution_signals_count >= 2 (weighted_sum >= 3.0)
|
||
PULLBACK_WAIT_DIST: pre_distribution_warning = EARLY_WARNING
|
||
PASS: otherwise
|
||
final_gate_logic:
|
||
logic: AND
|
||
BLOCK: gate_1=BLOCK OR gate_2=BLOCK OR gate_3=BLOCK
|
||
PULLBACK_WAIT: any PULLBACK_WAIT (BLOCK 없을 때)
|
||
PASS: gate_1=PASS AND gate_2=PASS AND gate_3=PASS
|
||
entry_grade:
|
||
A: velocity_1d < 0.5% AND pullback_zone AND flow_credit > 0.55
|
||
B: velocity_1d < 1.5% AND close near MA20
|
||
C: PULLBACK_WAIT 통과 진입
|
||
D: velocity_5d > 5% 이지만 gate_1 PASS
|
||
F: BLOCK 우회 진입 → PATTERN_BLACKLIST_AUTO_V1 카운트 자동 +1
|
||
output:
|
||
field: anti_late_entry_json
|
||
schema:
|
||
gate1_status: BLOCK_CHASE | PULLBACK_WAIT | PASS
|
||
gate2_status: BLOCK_CHASE_5D | PULLBACK_WAIT_5D | PASS
|
||
gate3_status: BLOCK_DISTRIBUTION | PULLBACK_WAIT_DIST | PASS
|
||
final_gate_status: BLOCK | PULLBACK_WAIT | PASS
|
||
entry_grade: A | B | C | D | F
|
||
block_reason: string
|
||
velocity_1d: percent
|
||
velocity_5d: percent
|
||
prohibition:
|
||
- BLOCK 상태에서 BUY/STAGED_BUY/ADD_ON 출력 금지
|
||
- entry_grade=F 자동 입력 시 PATTERN_BLACKLIST 카운트 +1 강제
|
||
- ANTI_CHASING_VELOCITY_V1(V1) 단독 인용 금지 - 이 V2가 V1을 완전 대체
|
||
canonical_ref: AGENTS.md:Direction A2 (V2로 업그레이드)
|
||
version: 2026-05-23_PROPOSAL46
|
||
CASH_PRESERVATION_SELL_ENGINE_V2:
|
||
purpose: 'K2(50/50 분할) + C1(4단계 폭포수) + C2(타이밍 결정)를 단일 엔진으로 통합. 현금이 급해도 과매도 구간
|
||
전량 즉시 청산 방지 + 반등 시 추가 수익 포착. value_preservation_score < 50이면 SELL_VALUE_DAMAGE_WARNING
|
||
경보 발령.
|
||
|
||
'
|
||
inputs:
|
||
- field: rsi14
|
||
unit: score_0_100
|
||
- field: atr20
|
||
unit: KRW_per_share
|
||
- field: prev_close
|
||
unit: KRW_per_share
|
||
- field: ma20
|
||
unit: KRW_per_share
|
||
optional: true
|
||
- field: base_qty
|
||
unit: shares
|
||
note: H3 SELL_QUANTITY_ALLOCATOR 산출
|
||
- field: stop_loss_price
|
||
unit: KRW_per_share
|
||
- field: cash_shortfall_min_krw
|
||
unit: KRW
|
||
note: CASH_SHORTFALL_V1 산출
|
||
- field: distribution_signals_count
|
||
unit: integer
|
||
optional: true
|
||
- field: emergency_full_sell
|
||
unit: boolean
|
||
optional: true
|
||
note: K2 산출값
|
||
- field: oversold_gate
|
||
unit: enum
|
||
optional: true
|
||
execution_style_decision:
|
||
OVERSOLD_REBOUND_SELL: oversold_gate=OVERSOLD AND rsi14 < 30
|
||
EMERGENCY_FULL_EXIT: emergency_full_sell=true
|
||
STAGED_WATERFALL: otherwise
|
||
quantity_formulas:
|
||
OVERSOLD_REBOUND_SELL:
|
||
immediate_qty: floor(base_qty * 0.50)
|
||
rebound_wait_qty: base_qty - immediate_qty
|
||
rebound_trigger: TICK_NORMALIZER_V1(prev_close + 0.5 * atr20)
|
||
deadline_days: 3
|
||
deadline_action: 미체결 3영업일 후 prev_close 지정가로 자동 전환
|
||
STAGED_WATERFALL:
|
||
stage1_qty: floor(base_qty * 0.50)
|
||
stage2_qty: base_qty - stage1_qty
|
||
stage2_deadline: 5 영업일 초과 시 EMERGENCY 전환
|
||
EMERGENCY_FULL_EXIT:
|
||
sell_qty: base_qty
|
||
order_type: MARKET
|
||
rebound_scenario:
|
||
immediate_sell_krw: immediate_qty * prev_close
|
||
rebound_upside_krw: rebound_wait_qty * rebound_trigger
|
||
downside_risk_krw: rebound_wait_qty * stop_loss_price
|
||
risk_reward_ratio: (rebound_upside_krw - immediate_sell_krw) / max(1, immediate_sell_krw
|
||
- downside_risk_krw)
|
||
low_rr_alert: risk_reward_ratio < 1.0 → emergency_full_sell 검토 권고
|
||
value_preservation_score:
|
||
base: 100
|
||
deductions:
|
||
full_sell_oversold:
|
||
condition: immediate_qty=base_qty AND rsi14 < 30
|
||
deduct: 30
|
||
price_below_prev:
|
||
condition: limit_price < prev_close * 0.97
|
||
deduct: 20
|
||
distribution_high:
|
||
condition: distribution_signals_count >= 3
|
||
deduct: 15
|
||
bonuses:
|
||
rebound_wait_exists:
|
||
condition: rebound_wait_qty > 0
|
||
bonus: 15
|
||
tight_trigger:
|
||
condition: rebound_trigger <= prev_close * 1.03
|
||
bonus: 10
|
||
alert: score < 50 → SELL_VALUE_DAMAGE_WARNING
|
||
output:
|
||
field: cash_preservation_sell_json
|
||
schema:
|
||
execution_style: OVERSOLD_REBOUND_SELL | STAGED_WATERFALL | EMERGENCY_FULL_EXIT
|
||
immediate_qty: shares
|
||
rebound_wait_qty: shares
|
||
rebound_trigger_price: KRW (tick-normalized)
|
||
rebound_deadline_days: integer
|
||
risk_reward_ratio: float
|
||
value_preservation_score: integer (0~100)
|
||
immediate_sell_krw: KRW
|
||
rebound_upside_krw: KRW
|
||
emergency_full_sell_flag: boolean
|
||
sell_value_damage_warning: boolean
|
||
prohibition:
|
||
- OVERSOLD_REBOUND_SELL에서 rebound_wait_qty를 반등 트리거 미충족 상태에서 즉시 매도 금지
|
||
- value_preservation_score 없이 매도 수량 제안 금지 (Direction D2[11])
|
||
- emergency_full_sell=false에서 전량 즉시 청산 지시 금지
|
||
canonical_ref: AGENTS.md:Direction K2/C1/C2, temp/request_result.txt:proposal_46#1-3
|
||
version: 2026-05-23_PROPOSAL46
|
||
MACRO_EVENT_SYNCHRONIZER_V1:
|
||
purpose: '외국인 순매도 일수·USD/KRW·FOMC 일정·국내 CPI·VIX 등 거시 변수를 heat_gate + buy_gate에
|
||
자동 반영. 현재 LLM 서술용으로만 쓰던 데이터를 결정론적 gate 조정에 연결. 매일 아침 GAS Trigger로 자동 갱신.
|
||
|
||
'
|
||
inputs:
|
||
- field: usd_krw
|
||
unit: KRW
|
||
note: settings manual_input 또는 API
|
||
- field: foreign_sell_consecutive_days
|
||
unit: integer
|
||
note: macro 시트 누적
|
||
- field: foreign_sell_krw_today
|
||
unit: KRW
|
||
optional: true
|
||
- field: fomc_days_remaining
|
||
unit: integer
|
||
optional: true
|
||
note: event_calendar
|
||
- field: domestic_cpi
|
||
unit: percent
|
||
optional: true
|
||
- field: vix
|
||
unit: float
|
||
optional: true
|
||
- field: us500_1w_change
|
||
unit: percent
|
||
optional: true
|
||
macro_risk_score:
|
||
max: 100
|
||
components:
|
||
usd_krw_critical:
|
||
condition: usd_krw > 1500
|
||
score: 20
|
||
usd_krw_weak:
|
||
condition: usd_krw > 1480 AND <= 1500
|
||
score: 15
|
||
foreign_mega:
|
||
condition: foreign_consecutive_sell_days >= 10
|
||
score: 20
|
||
foreign_high:
|
||
condition: foreign_consecutive_sell_days >= 5
|
||
score: 15
|
||
fomc_near:
|
||
condition: fomc_days_remaining <= 5
|
||
score: 15
|
||
cpi_high:
|
||
condition: domestic_cpi > 2.5
|
||
score: 10
|
||
vix_elevated:
|
||
condition: vix > 20
|
||
score: 10
|
||
us500_drop:
|
||
condition: us500_1w_change < -3.0
|
||
score: 10
|
||
macro_risk_regime:
|
||
MACRO_CRITICAL:
|
||
condition: macro_risk_score >= 60
|
||
heat_gate_adj: -3
|
||
MACRO_ELEVATED:
|
||
condition: macro_risk_score >= 40
|
||
heat_gate_adj: -1
|
||
MACRO_NEUTRAL:
|
||
condition: macro_risk_score >= 20
|
||
heat_gate_adj: 0
|
||
MACRO_FAVORABLE:
|
||
condition: macro_risk_score < 20
|
||
heat_gate_adj: 1
|
||
event_matrix:
|
||
FOMC_WEEK:
|
||
buy_gate_downgrade: true
|
||
sell_block: false
|
||
EARNINGS_WEEK:
|
||
event_hold_gate: true
|
||
note: 해당 종목 M4 EVENT_HOLD 발동
|
||
DART_RISK:
|
||
event_hold_gate: true
|
||
note: 기존 M4 연동
|
||
GEOPOLITICAL:
|
||
regime_size_scale_adj: -0.25
|
||
note: N1 연동
|
||
mega_sell_alert:
|
||
condition: foreign_sell_krw_today >= 1_000_000_000_000
|
||
effect: buy_gate_block_until = today + 3 영업일
|
||
data_sources:
|
||
usd_krw: settings 시트 manual_input
|
||
fomc_dates: settings 시트 event_calendar
|
||
foreign_flow: macro 시트 _foreignFlow
|
||
vix_us500: macro 시트 _vix, _us500Close
|
||
output:
|
||
field: macro_event_json
|
||
schema:
|
||
macro_risk_score: integer (0~100)
|
||
macro_risk_regime: MACRO_CRITICAL | MACRO_ELEVATED | MACRO_NEUTRAL | MACRO_FAVORABLE
|
||
macro_risk_breakdown: array
|
||
foreign_consecutive_sell_days: integer
|
||
mega_sell_alert: boolean
|
||
buy_gate_block_until: date or null
|
||
effective_heat_gate_adjustment: integer
|
||
event_matrix: array
|
||
fomc_days_remaining: integer or null
|
||
prohibition:
|
||
- MACRO_CRITICAL 상태에서 포지션 증가 서술 금지 (Direction D2[10])
|
||
- 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
|
||
CONSISTENCY_VALIDATOR_V2:
|
||
purpose: '기존 validate_harness_context.py(키 존재 여부만)를 12개 논리 검증 항목으로 확장. 일관성 점수
|
||
< 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 검증 원천
|
||
checks:
|
||
CV_01:
|
||
name: sell_priority 방향 일관성
|
||
rule: sell_candidates_json[n].tier >= sell_candidates_json[n-1].tier (tier
|
||
역전 금지)
|
||
CV_02:
|
||
name: 가격 순서 검증
|
||
rule: stop_price < current_price < tp1_price < tp2_price (모든 종목)
|
||
CV_03:
|
||
name: heat vs 보유 비중 일치
|
||
rule: sum(position_weight_pct) ≈ total_heat_pct (±0.5% 허용)
|
||
CV_04:
|
||
name: enum 값 유효성
|
||
rule: profit_lock_stage in VALID_STAGES, rs_verdict in {LEADER,NEUTRAL,LAGGARD,BROKEN},
|
||
tp_state in VALID_TP_STATES
|
||
CV_05:
|
||
name: 상호 충돌 게이트 탐지
|
||
rules:
|
||
- heat_gate=BLOCK_NEW_BUY AND final_action=BUY → CONTRADICTION
|
||
- sfg_v1=TRIGGERED AND final_action=BUY → CONTRADICTION
|
||
- intraday_lock=true AND BUY not in blocked_actions → INCOMPLETE
|
||
CV_06:
|
||
name: 수량 정수 검증
|
||
rule: 모든 qty 필드 = floor(qty) (소수점 금지)
|
||
CV_07:
|
||
name: 날짜 신선도
|
||
rules:
|
||
- data_date vs today > 1 영업일 → STALE_WARN
|
||
- data_date vs today > 3 영업일 → STALE_BLOCK
|
||
CV_08:
|
||
name: 현금 계산 경로
|
||
rule: settlement_cash_d2_krw 사용 확인. immediate_cash 합산 금지.
|
||
CV_09:
|
||
name: 라우팅 completeness
|
||
rule: routing_execution_log에 10단계 모두 존재 여부
|
||
CV_10:
|
||
name: LLM 출력 checksum
|
||
rule: rendered_output_checksum 일치 여부 (blueprint vs LLM 출력 수치)
|
||
CV_11:
|
||
name: GAS 하네스 키 동기화
|
||
rule: buildHarnessContext_() 출력 키 ⊇ validate_harness_context.py REQUIRED_KEYS
|
||
gap_output: HARNESS_KEY_MISSING 목록
|
||
CV_12:
|
||
name: YAML-to-GAS 커버리지
|
||
rule: spec/ formula_id 목록 vs gas_data_feed.gs calc*_() 교차검증
|
||
gap_output: GAS_COVERAGE_GAP 목록
|
||
scoring:
|
||
formula: (통과 항목 수 / 12) * 100
|
||
BLOCK: score < 90 → 보고서 생성 중단
|
||
WARNING: score >= 90 AND < 100 → Gap 목록 출력 후 계속
|
||
PASS: score = 100
|
||
output:
|
||
field: consistency_report_json
|
||
schema:
|
||
score: integer (0~100)
|
||
passed: array of check_ids
|
||
failed: array of {check_id, reason}
|
||
gap_list: 'array of {type: HARNESS_KEY_MISSING|GAS_COVERAGE_GAP, item}'
|
||
block_status: BLOCK | WARNING | PASS
|
||
prohibition:
|
||
- consistency_score < 90인 상태에서 보고서 생성 금지
|
||
- LLM이 CV 검증 항목을 직접 계산하거나 우회 선언 금지
|
||
- ROUTING step 2에서 CV_02 통과 전 이후 단계 진행 금지
|
||
canonical_ref: AGENTS.md:Direction D1(Step 2), temp/request_result.txt:proposal_46#1-5
|
||
version: 2026-05-23_PROPOSAL46
|
||
EXPERT_JUDGMENT_CONSENSUS_ENGINE_V1:
|
||
purpose: 'Analyst(기술적 관점)·Trader(실행 타이밍)·Quant(리스크 수치) 3관점 중 2관점 이상 BLOCK이면
|
||
consensus_result=NO_BUY를 반환. 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
|
||
output:
|
||
field: ejce_json
|
||
schema:
|
||
ticker: string
|
||
analyst_view: ALLOW | BLOCK
|
||
trader_view: ALLOW | BLOCK
|
||
quant_view: ALLOW | BLOCK
|
||
consensus_result: BUY_ALLOWED | NO_BUY
|
||
block_reasons: array of string
|
||
formula_id: EXPERT_JUDGMENT_CONSENSUS_ENGINE_V1
|
||
prohibition:
|
||
- consensus_result=NO_BUY 종목에 BUY/ADD_ON 권고 금지
|
||
- block_reasons 3관점 미인용 시 INCOMPLETE_EJCE_REPORT
|
||
- buy_permission=ALLOW만 확인하고 ejce_json 확인 생략 금지
|
||
canonical_ref: AGENTS.md:Direction EJ1
|
||
version: 2026-05-24_PROPOSAL50
|
||
SMART_CASH_RECOVERY_SELL_ENGINE_V2:
|
||
purpose: '현금부족(cashShortfallInfo) 상황에서 value_damage_score 최소화 조합을 결정론적으로 산출.
|
||
K2 50/50 분할(immediate_sell_qty + rebound_wait_qty) 포함. LLM이 "이 종목 N주 팔면 될
|
||
것 같다"는 즉석 계산 HS011 위반으로 금지.
|
||
|
||
'
|
||
inputs:
|
||
- field: holdings
|
||
unit: array
|
||
- field: dfMap
|
||
unit: object
|
||
- field: cashShortfallInfo
|
||
unit: object
|
||
- field: h2
|
||
unit: object - regime layer
|
||
output:
|
||
field: scrs_v2_json
|
||
schema:
|
||
emergency_level: TRIM_ONLY | FULL_RECOVERY | NO_ACTION
|
||
selected_combo: array of {ticker, immediate_sell_qty, rebound_wait_qty,
|
||
value_damage_score, rebound_potential, recommended_action}
|
||
total_recovery_krw: integer
|
||
formula_id: SMART_CASH_RECOVERY_SELL_ENGINE_V2
|
||
prohibition:
|
||
- selected_combo 외 추가 매도 LLM 임의 추가 금지
|
||
- emergency_level=TRIM_ONLY 시 selected_combo 외 추가 매도 절대 금지
|
||
- immediate_sell_qty + rebound_wait_qty 합산해 '전체 X주 매도' 단순화 금지
|
||
canonical_ref: AGENTS.md:Direction C3
|
||
version: 2026-05-24_PROPOSAL50
|
||
MACRO_REGIME_ADAPTIVE_GATE_V2:
|
||
purpose: 'L1(미시)·L2(거시)·L3(글로벌)·L4(이벤트) 4레이어 각 0~25점 합산 total_mrag_score(0~100)
|
||
기반으로 heat_gate_threshold와 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
|
||
output:
|
||
field: mrag_v2_json
|
||
schema:
|
||
micro_risk_score: integer 0~25
|
||
macro_risk_score_normalized: integer 0~25
|
||
global_risk_score: integer 0~25
|
||
event_risk_score: integer 0~25
|
||
total_mrag_score: integer 0~100
|
||
effective_heat_gate_threshold: number (5|7|10|12) %
|
||
effective_position_size_scale: number (0.25|0.50|1.00|1.10)
|
||
regime_label: EXTREME_RISK|HIGH_RISK|MODERATE_RISK|LOW_RISK
|
||
stale_events: array of {event_name, registered_date, days_stale}
|
||
stale_events_count: integer
|
||
formula_id: MACRO_REGIME_ADAPTIVE_GATE_V2
|
||
prohibition:
|
||
- LLM이 total_mrag_score를 즉석 계산 금지 (HS011 위반)
|
||
- effective_heat_gate_threshold를 LLM이 임의 완화 금지
|
||
- stale_events_count>0 시 Section_B 이벤트 날짜 불일치 경보 누락 금지
|
||
canonical_ref: AGENTS.md:Direction ME2
|
||
version: 2026-05-24_PROPOSAL50
|
||
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: holdings
|
||
unit: array
|
||
- field: dfMap
|
||
unit: object
|
||
- field: h3
|
||
unit: object - cash floor layer
|
||
- field: totalAsset
|
||
unit: KRW integer
|
||
output:
|
||
field: mandatory_reduction_json
|
||
schema:
|
||
is_mandatory: boolean
|
||
current_cluster_pct: number %
|
||
cluster_limit_pct: number %
|
||
current_excess_pct: number %p
|
||
weekly_reduction_target_krw: integer KRW
|
||
reduction_priority: array of {ticker, reason, weekly_sell_qty}
|
||
formula_id: MANDATORY_REDUCTION_PLAN_V1
|
||
prohibition:
|
||
- is_mandatory=true 시 4주 감축 계획 미이행 금지
|
||
- LLM이 reduction_priority 순서 임의 변경 금지
|
||
- weekly_reduction_target_krw LLM 재계산 금지 (HS011 위반)
|
||
canonical_ref: AGENTS.md:Direction A2 (M5 V1.1)
|
||
version: 2026-05-24_PROPOSAL50
|
||
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: capturedAtIso
|
||
unit: ISO8601 string
|
||
- field: now
|
||
unit: Date object
|
||
output:
|
||
field: serving_lock_json
|
||
schema:
|
||
lock_status: LOCKED | UNLOCKED
|
||
llm_role: CLERK_REPORTER
|
||
llm_serving_budget:
|
||
numeric_generation_allowed: integer (always 0)
|
||
allowed_operations: array ['NARRATE_HARNESS_OUTPUT','SYNTHESIZE_RISK_CONTEXT','PRESENT_SCENARIO']
|
||
stage_tokens: array of 11 token objects
|
||
formula_id: DETERMINISTIC_SERVING_LOCK_ENGINE_V1
|
||
prohibition:
|
||
- numeric_generation_allowed=0 무시하고 LLM 숫자 생성 절대 금지
|
||
- stage_tokens에 없는 행동 LLM이 권고 금지
|
||
- serving_lock_json.lock_status=LOCKED 시 LLM 계산 우회 선언 금지
|
||
canonical_ref: AGENTS.md:Direction D3
|
||
version: 2026-05-24_PROPOSAL50
|
||
VALIDATE_ORDER_CONDITION_V1:
|
||
purpose: '주문 조건 텍스트에 다중 조건 접속사(''또는'', ''동시 충족'', ''실패 시'' 등)가 포함되면 INVALID_MULTI_CONDITION
|
||
반환. HTS 자동주문은 단일 지정가만 허용.
|
||
|
||
'
|
||
inputs:
|
||
- 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 - 단일 조건 기재 안내
|
||
formula_id: VALIDATE_ORDER_CONDITION_V1
|
||
prohibition:
|
||
- INVALID_MULTI_CONDITION 판정된 행을 HTS 주문표에 포함 금지
|
||
- LLM이 복합 조건을 단일 조건으로 재해석하여 통과 처리 금지
|
||
canonical_ref: AGENTS.md:Direction 0 (HS007)
|
||
version: 2026-05-24_PROPOSAL50
|
||
SHADOW_LEDGER_V1:
|
||
purpose: 'BLOCKED/INVALID 블루프린트를 HTS 주문표에서 제외하되, 차단 사유 및 산출 지표를 투명하게 보존. 사용자의
|
||
사후 평가·오버라이드를 지원.
|
||
|
||
'
|
||
inputs:
|
||
- field: blueprints
|
||
unit: array - order_blueprint_json
|
||
- field: dfMap
|
||
unit: object - 종목별 data feed map
|
||
output:
|
||
field: shadow_ledger_json
|
||
schema:
|
||
shadow_ledger: array of blocked entries
|
||
blocked_count: integer
|
||
formula_id: SHADOW_LEDGER_V1
|
||
shadow_ledger_row:
|
||
ticker: 종목 코드
|
||
name: 종목명
|
||
block_reason: 차단 사유 코드
|
||
order_type: BUY | SELL | TRIM 등
|
||
limit_price_calc: 산출 지정가 (KRW)
|
||
stop_loss_calc: 산출 손절가 (KRW)
|
||
take_profit_calc: 산출 익절가 (KRW)
|
||
base_qty_calc: 이론 수량 (주)
|
||
override_possible: true - 사용자 오버라이드 가능
|
||
prohibition:
|
||
- BLOCKED 종목의 산출 지표를 null 처리하거나 은폐 금지 (HS010 위반)
|
||
- Shadow Ledger 종목을 HTS 주문표에 포함 금지
|
||
canonical_ref: AGENTS.md:Direction H10 (HS010_REVISED)
|
||
version: 2026-05-24_PROPOSAL50
|
||
LLM_SERVING_CONSTRAINT_V1:
|
||
purpose: 'LLM의 역할을 하네스 출력 복사·해설·위험 합성으로 엄격히 제한. 12가지 금지행동 체크리스트를 보고서 조립 직전 GAS가
|
||
평가하여 위반 가능성이 있으면 INVALID_LLM_OVERRIDE 태그를 반환.
|
||
|
||
'
|
||
inputs:
|
||
- field: hApex
|
||
unit: object - harness apex context (전체 하네스 결과)
|
||
output:
|
||
field: llm_serving_constraint_json
|
||
schema:
|
||
constraint_status: PASS | WARN | INVALID_LLM_OVERRIDE
|
||
violations: array of {check, rule, status}
|
||
violation_count: integer
|
||
warn_count: integer
|
||
total_checks: '12'
|
||
formula_id: LLM_SERVING_CONSTRAINT_V1
|
||
prohibition:
|
||
- constraint_status=INVALID_LLM_OVERRIDE 시 보고서 계속 생성 금지
|
||
- violations 목록을 LLM이 임의로 해제·무시 금지
|
||
canonical_ref: AGENTS.md:Direction D2
|
||
version: 2026-05-24_PROPOSAL50
|
||
AVG_TRADE_VALUE_SIGNAL_V1:
|
||
purpose: 'secular_leader(005930·000660) PROFIT_LOCK_STAGE_20 구간에서 5일 평균 거래대금
|
||
> 20일 평균 × 3.0이면 과열신호 +1 판정. 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 여부 확인
|
||
expressions:
|
||
ratio_5d_vs_20d: avg_trade_val_5d / avg_trade_val_20d
|
||
overheat_triggered: ratio_5d_vs_20d >= 3.0
|
||
overheat_score_add: 1 if overheat_triggered else 0
|
||
output:
|
||
field: avg_trade_val_signal_json
|
||
schema:
|
||
ticker: 종목 코드
|
||
applicable: boolean - secular_leader AND STAGE_20 여부
|
||
signal: OVERHEAT_TRADE_VALUE | NORMAL | NOT_APPLICABLE
|
||
ratio_5d_vs_20d: number
|
||
overheat_triggered: boolean
|
||
overheat_score_add: 0 or 1
|
||
formula_id: AVG_TRADE_VALUE_SIGNAL_V1
|
||
prohibition:
|
||
- LLM이 overheat_signals를 재집계·번복 금지 (하네스 산출값 우선)
|
||
- secular_leader 이외 종목에 적용 금지
|
||
canonical_ref: AGENTS.md:Direction H6
|
||
version: 2026-05-24_PROPOSAL50
|
||
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 자동 추적 손절가
|
||
checks:
|
||
CHECK_1: limit_price < final_stop → INVALID_PRICE_INVERSION
|
||
CHECK_2: stop_price < auto_trailing_stop → INVALID_TRAILING_STOP_BREACH
|
||
CHECK_3: limit_price == 0 → INVALID_ZERO_PRICE
|
||
output:
|
||
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 외 주문 - 검증 스킵
|
||
prohibition:
|
||
- SPSV2 검증 전 Export Gate 실행 금지
|
||
- INVALID 상태 주문의 HTS 입력 절대 금지
|
||
gs_function: calcSellPriceSanityV2_
|
||
version: 2026-05-25_PROPOSAL51
|
||
EXPORT_GATE_V2:
|
||
purpose: 'EXPORT_READY / REVIEW_ONLY / PENDING_EXPORT 3단계 분류. V1 5개 체크 → V2
|
||
8개 체크 (SCRS 렌더링, 헬스 스코어 타입, 클러스터 동기화 추가). REVIEW_ONLY: WARN 체크 있음 (HTS 입력
|
||
전 검토 필요). hts_entry_allowed=false.
|
||
|
||
'
|
||
checks:
|
||
CHECK_1: account_snapshot 캡처 완료
|
||
CHECK_2: 데이터 완성도 (buy_permission_json ≥ holdings)
|
||
CHECK_3: consistency_score >= 70
|
||
CHECK_4: INVALID 매도 주문 없음 (SPSV2 후)
|
||
CHECK_5: cash_floor_status != UNKNOWN
|
||
CHECK_6: SCRS-V2 immediate_sell_qty 유효값 확인
|
||
CHECK_7: portfolio_health_score 숫자형 확인
|
||
CHECK_8: SEMICONDUCTOR_CLUSTER_SYNC 정합성 확인
|
||
tiers:
|
||
EXPORT_READY: 모든 체크 PASS - HTS 입력 허용
|
||
REVIEW_ONLY: WARN 체크 존재, FAIL 없음 - 검토 후 진행
|
||
PENDING_EXPORT: FAIL 체크 존재 - HTS 입력 금지
|
||
gs_function: calcExportGate_
|
||
version: 2026-05-25_PROPOSAL51
|
||
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 - 교정 전 값
|
||
expression: 'cluster_pct > cluster_limit_pct * 2 ? is_mandatory=true : is_mandatory=false'
|
||
output:
|
||
field: cluster_sync_result_json
|
||
schema:
|
||
status: SYNCED | CORRECTED
|
||
corrected: boolean
|
||
cluster_pct: number
|
||
threshold_pct: cluster_limit_pct * 2
|
||
gs_function: syncSemiconductorCluster_
|
||
version: 2026-05-25_PROPOSAL51
|
||
PROACTIVE_SELL_RADAR_V2:
|
||
purpose: '8가지 신호로 분배(설거지) 3일 전 조기 감지 → CRITICAL/WARNING/WATCH/CLEAR 분류. DISTRIBUTION_SELL_DETECTOR
|
||
V1.1 (사후 확인) 보완 - 사전 예측 기능.
|
||
|
||
'
|
||
signals:
|
||
SIG_1: 고가 2% 이내 + 거래량 30% 수축 (weight=2.0)
|
||
SIG_2: 기관 5일 순매도 전환 (weight=2.0)
|
||
SIG_3: 개인 집중유입 70% 초과 (weight=1.5)
|
||
SIG_4: 풋/콜 비율 1.3 초과 (weight=1.5)
|
||
SIG_5: 뉴스 감성 -20 미만 (weight=1.0)
|
||
SIG_6: 거래량 1.5x 급증 + 음봉 (weight=1.5)
|
||
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 - 정상
|
||
gs_function: calcProactiveSellRadarV2_
|
||
version: 2026-05-25_PROPOSAL51
|
||
ANTI_LATE_ENTRY_GATE_V3:
|
||
purpose: 'V2의 3게이트(velocity_1d/velocity_5d/distribution_ws) + GATE_4(PAE) +
|
||
GATE_5(블랙리스트) → V3: GATE_6(매크로 레짐) 추가. EVENT_SHOCK/RISK_OFF → 신규 매수 BLOCK.
|
||
6게이트 AND 조건: 모두 통과해야 PASS. 하나라도 BLOCK → 전체 BLOCK.
|
||
|
||
'
|
||
gates:
|
||
GATE_1: velocity_1d >= 3.0% → BLOCK_CHASE
|
||
GATE_2: velocity_5d >= 8.0% → BLOCK_CHASE_5D
|
||
GATE_3: dist_weighted_sum >= 3.0 → BLOCK_DISTRIBUTION
|
||
GATE_4: PAE synthesis_verdict == EXIT/TRIM → BLOCK
|
||
GATE_5: 패턴 블랙리스트 TRIGGERED → BLOCK
|
||
GATE_6: 매크로 EVENT_SHOCK/RISK_OFF → BLOCK
|
||
quantity_scaling:
|
||
GATE_4_WARN: direction_confidence < -10 → qty_scale=0.5
|
||
GATE_6_WARN: MACRO_CAUTION → qty_scale=0.7
|
||
gs_function: applyAlegGate4And5Impl_
|
||
version: 2026-05-25_PROPOSAL51
|
||
PRICE_HIERARCHY_LOCK_V1:
|
||
purpose: '동일 종목의 가격을 5계층으로 분리 잠금. LAYER_1(주문가)만 HTS 지정가로 사용. LAYER_5(참고방어가)가
|
||
LAYER_1 위치에 나타나면 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 감시 원장 참고방어가 전용
|
||
violation_types:
|
||
INVALID_LAYER_VIOLATION: LAYER_5==LAYER_1 또는 LAYER_4==LAYER_2
|
||
LAYER_PROXIMITY_WARNING: LAYER_5와 LAYER_1이 5% 이내 근접
|
||
output_contract:
|
||
price_hierarchy_json: '배열: 종목별 5계층 가격 + layer_violations'
|
||
gs_function: applyPriceHierarchyLockAll_
|
||
version: 2026-05-25_PROPOSAL51
|
||
DATA_QUALITY_GATE_V2:
|
||
purpose: '핵심 8개 카테고리(prediction/trade_quality/pattern/stop_loss/cash/sell_engine/cluster/alpha_eval)의
|
||
필드 충족률로 데이터 완성도 등급 산출. 행수 기준 "정상" 표현 완전 폐기. T+20=0건, trade_quality=0건 시 특수
|
||
경고 발동.
|
||
|
||
'
|
||
categories:
|
||
prediction: '[direction_confidence, synthesis_verdict, thesis_score, antithesis_score]'
|
||
trade_quality: '[grade, feedback_tag, t5_return_pct, t20_vs_core_pct]'
|
||
pattern: '[pattern_blacklist_status, accumulated_poor_count]'
|
||
stop_loss: '[auto_trailing_stop, final_stop_price, stop_price]'
|
||
cash: '[settlement_cash_d2_krw, cash_floor_status, cash_shortfall_min_krw]'
|
||
sell_engine: '[scrs_v2_verdict, immediate_qty, rebound_wait_qty]'
|
||
cluster: '[cluster_state, combined_pct]'
|
||
alpha_eval: '[alpha_gate_verdict, prediction_accuracy_rate]'
|
||
grades:
|
||
COMPLETE: overall_completeness_pct >= 90
|
||
PARTIAL: overall_completeness_pct >= 60
|
||
INSUFFICIENT: overall_completeness_pct < 60
|
||
output_contract:
|
||
data_quality_gate_v2_json:
|
||
fields: '[overall_completeness_pct, completeness_grade, category_scores,
|
||
special_warnings, confidence_ceiling]'
|
||
gs_function: calcDataQualityGateV2_
|
||
version: 2026-05-25_PROPOSAL51
|
||
CASH_RECOVERY_DISPLAY_LOCK_V1:
|
||
purpose: '현금회복 금액을 min_required / optimal_combo / reference_total 3분리 표시. trim_plan
|
||
누적 전체 금액(예: 207억)을 주문 섹션에 표시하는 것을 완전 차단. reference_total_krw는 "주문 아님" 레이블
|
||
강제.
|
||
|
||
'
|
||
display_rules:
|
||
SECTION_CASH_RECOVERY: min_required_krw + optimal_combo_krw만 표시 (SCRS-V2 즉시매도
|
||
합계)
|
||
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
|
||
output_contract:
|
||
cash_recovery_display_json:
|
||
fields: '[min_required_krw, optimal_combo_krw, reference_total_krw, coverage_status,
|
||
display_mode]'
|
||
gs_function: calcCashRecoveryDisplayLock_
|
||
version: 2026-05-25_PROPOSAL51
|
||
FUNDAMENTAL_QUALITY_GATE_V1:
|
||
purpose: 펀더멘털 품질 점수화로 BUY 허용을 결정론적으로 잠금.
|
||
inputs:
|
||
- field: holdings
|
||
unit: array
|
||
- field: dfMap
|
||
unit: object
|
||
output:
|
||
field: fundamental_quality_json
|
||
output_contract:
|
||
fundamental_quality_json:
|
||
fields: '[rows[].ticker, rows[].grade, rows[].buy_allowed, rows[].fail_reasons]'
|
||
gs_function: calcFundamentalQualityGateV1_
|
||
version: 2026-05-25_PROPOSAL53
|
||
HORIZON_ALLOCATION_LOCK_V1:
|
||
purpose: 단기/중기/장기 버킷 비중 상한 위반을 잠금.
|
||
inputs:
|
||
- field: holdings
|
||
unit: array
|
||
- field: total_asset_krw
|
||
unit: KRW
|
||
output:
|
||
field: horizon_allocation_json
|
||
output_contract:
|
||
horizon_allocation_json:
|
||
fields: '[bucket_summary[].bucket, bucket_summary[].cap_pct, bucket_summary[].current_pct,
|
||
bucket_summary[].violation]'
|
||
gs_function: calcHorizonAllocationLockV1_
|
||
version: 2026-05-25_PROPOSAL53
|
||
SMART_MONEY_LIQUIDITY_GATE_V1:
|
||
purpose: 스마트머니 흐름과 유동성 결합으로 실행 모드(NORMAL/SELL_SPLIT_ONLY) 고정.
|
||
inputs:
|
||
- field: holdings
|
||
unit: array
|
||
- field: proactive_sell_radar_json
|
||
unit: json
|
||
output:
|
||
field: smart_money_liquidity_json
|
||
output_contract:
|
||
smart_money_liquidity_json:
|
||
fields: '[rows[].flow_state, rows[].liquidity_state, rows[].execution_mode,
|
||
rows[].buy_allowed]'
|
||
gs_function: calcSmartMoneyLiquidityGateV1_
|
||
version: 2026-05-25_PROPOSAL53
|
||
ROUTING_SERVING_DECISION_TRACE_V2:
|
||
purpose: 라우팅-서빙-게이트 경로를 단일 trace json으로 고정.
|
||
inputs:
|
||
- field: routing_trace_json
|
||
unit: json
|
||
- field: export_gate_json
|
||
unit: json
|
||
output:
|
||
field: routing_serving_trace_v2_json
|
||
output_contract:
|
||
routing_serving_trace_v2_json:
|
||
fields: '[request_route, bundle_selected, prompt_entrypoint, gate_path,
|
||
final_block_reason, json_validation_status]'
|
||
gs_function: buildRoutingServingDecisionTraceV2_
|
||
version: 2026-05-25_PROPOSAL53
|
||
FUNDAMENTAL_MULTI_FACTOR_SCORE_V2:
|
||
purpose: 이익률·성장률·점유율·현금흐름·부채 종합 점수로 BUY 잠금.
|
||
output_contract:
|
||
fundamental_multifactor_json:
|
||
fields: '[rows[].ticker, rows[].score_0_100, rows[].grade, rows[].buy_allowed,
|
||
rows[].fail_reasons]'
|
||
gs_function: calcFundamentalMultiFactorScoreV2_
|
||
version: 2026-05-25_PROPOSAL54
|
||
EARNINGS_GROWTH_QUALITY_GATE_V1:
|
||
purpose: 이익 성장 추세 일관성 게이트.
|
||
output_contract:
|
||
earnings_growth_quality_json:
|
||
fields: '[rows[].ticker, rows[].trend, rows[].consistency, rows[].gate]'
|
||
gs_function: calcEarningsGrowthQualityGateV1_
|
||
version: 2026-05-25_PROPOSAL54
|
||
MARKET_SHARE_MOMENTUM_PROXY_V1:
|
||
purpose: 점유율 모멘텀 프록시로 공격 매수 차단.
|
||
output_contract:
|
||
market_share_proxy_json:
|
||
fields: '[rows[].ticker, rows[].proxy_state, rows[].confidence_band]'
|
||
gs_function: calcMarketShareMomentumProxyV1_
|
||
version: 2026-05-25_PROPOSAL54
|
||
CASHFLOW_STABILITY_GATE_V1:
|
||
purpose: 현금흐름 안정성 + 회계위험 결합 게이트.
|
||
output_contract:
|
||
cashflow_stability_json:
|
||
fields: '[rows[].ticker, rows[].stability_state, rows[].accrual_risk_flag,
|
||
rows[].gate]'
|
||
gs_function: calcCashflowStabilityGateV1_
|
||
version: 2026-05-25_PROPOSAL54
|
||
ROUTING_DECISION_EXPLAIN_LOCK_V1:
|
||
purpose: 최종 의사결정 게이트 경로/차단사유 잠금.
|
||
output_contract:
|
||
routing_decision_explain_json:
|
||
fields: '[gate_path, blocked_by, override_allowed]'
|
||
gs_function: calcRoutingDecisionExplainLockV1_
|
||
version: 2026-05-25_PROPOSAL54
|
||
TRADE_QUALITY_FROM_T5_V1:
|
||
purpose: '운영 T+5 실측 기반 거래품질 점수. T+20 성숙 전 bridge. gate=PASS: scored_count >=
|
||
30.
|
||
|
||
'
|
||
output_contract:
|
||
Temp/trade_quality_from_t5_v1.json:
|
||
fields: '[gate, summary_score, scored_count, trade_quality_basis, per_ticker[]]'
|
||
python_tool: tools/build_trade_quality_from_t5_v1.py
|
||
harness_check: CHECK_74_TRADE_QUALITY_FROM_T5_V1
|
||
version: 2026-05-28_PHASE4
|
||
PREDICTION_ACCURACY_HARNESS_V2:
|
||
purpose: '운영 T+1/T+5/T+20 일치율 회전 윈도 + calibration_state. calibration_state가
|
||
BUY_PROPOSAL_FROZEN_RECOMMEND이면 매수 동결 권고.
|
||
|
||
'
|
||
output_contract:
|
||
Temp/prediction_accuracy_harness_v2.json:
|
||
fields: '[calibration_state, t1_op_rate, t5_op_rate, t20_op_rate, windows.*]'
|
||
python_tool: tools/build_prediction_accuracy_harness_v2.py
|
||
harness_check: CHECK_75_PREDICTION_ACCURACY_HARNESS_V2
|
||
version: 2026-05-28_PHASE4
|
||
MACRO_EVENT_TICKER_IMPACT_V1:
|
||
purpose: '거시이벤트 종목별 영향. action_gate=AVOID_NEW_BUY: 사전 5영업일 매수 차단 권고. 뒷박 5중 AND
|
||
게이트의 macro_event 1표.
|
||
|
||
'
|
||
output_contract:
|
||
Temp/macro_event_ticker_impact_v1.json:
|
||
fields: '[gate, ticker_count, action_summary, tickers[].primary_gate, tickers[].impact_score]'
|
||
python_tool: tools/build_macro_event_ticker_impact_v1.py
|
||
harness_check: CHECK_76_MACRO_EVENT_TICKER_IMPACT_V1
|
||
version: 2026-05-28_PHASE4
|
||
SELL_WATERFALL_ENGINE_V2:
|
||
purpose: 'V1 4단계 + 슬리피지/exec_mode/에스컬레이션. escalation_skip_violations=0 필수.
|
||
|
||
'
|
||
output_contract:
|
||
Temp/sell_waterfall_engine_v2.json:
|
||
fields: '[gate, rows[].stage, rows[].exec_mode, rows[].split_count, rows[].est_slippage_bps,
|
||
rows[].escalation_rule]'
|
||
python_tool: tools/build_sell_waterfall_engine_v2.py
|
||
harness_check: CHECK_77_SELL_WATERFALL_ENGINE_V2
|
||
version: 2026-05-28_PHASE4
|
||
LLM_NARRATIVE_TEMPLATE_LOCK_V1:
|
||
purpose: '서술 금지어휘(같다/약간/곧 등) 스캔. total_violations=0 필수. gate=PASS: narrative
|
||
결정론 잠금.
|
||
|
||
'
|
||
output_contract:
|
||
Temp/llm_narrative_template_lock_v1.json:
|
||
fields: '[gate, total_violations, sections_checked, section_results[]]'
|
||
python_tool: tools/build_llm_narrative_template_lock_v1.py
|
||
harness_check: CHECK_78_LLM_NARRATIVE_TEMPLATE_LOCK_V1
|
||
version: 2026-05-28_PHASE5
|
||
EJCE_DIVERGENCE_AUDIT_V1:
|
||
purpose: 'EJCE 3관점 합의 진정성. homogeneous_flag=true 또는 unique_reason_pct<60%이면
|
||
경고. gate=WARN은 soft(hard-fail 아님).
|
||
|
||
'
|
||
output_contract:
|
||
Temp/ejce_divergence_audit_v1.json:
|
||
fields: '[gate, unique_reason_pct, homogeneous_flag, analyst_view_homogeneous,
|
||
ticker_results[]]'
|
||
python_tool: tools/build_ejce_divergence_audit_v1.py
|
||
harness_check: CHECK_79_EJCE_DIVERGENCE_AUDIT_V1
|
||
version: 2026-05-28_PHASE5
|
||
PREDICTIVE_ALPHA_REPORT_LOCK_V2:
|
||
purpose: 'PA1 정반합 표 강제. coverage_pct >= 80% 필요(ETF 제외 시 90.9% 달성). weight_source=DYNAMIC
|
||
컬럼 의무.
|
||
|
||
'
|
||
output_contract:
|
||
Temp/predictive_alpha_report_lock_v2.json:
|
||
fields: '[gate, coverage_pct, pa1_report_table[].thesis_signals, pa1_report_table[].antithesis_signals,
|
||
pa1_report_table[].synthesis_score]'
|
||
python_tool: tools/build_predictive_alpha_report_lock_v2.py
|
||
harness_check: CHECK_80_PREDICTIVE_ALPHA_REPORT_LOCK_V2
|
||
version: 2026-05-28_PHASE5
|
||
CANONICAL_METRICS_V1:
|
||
purpose: '단일 진실원천 아키텍처. 논리 지표를 정규 원천에서 산출해 렌더러 중복 읽기 버그 차단. gate=PASS(unresolved=0)
|
||
/ gate=WARN(unresolved>0).
|
||
|
||
'
|
||
output_contract:
|
||
Temp/canonical_metrics_v1.json:
|
||
fields: '[gate, metrics.cluster_pct, metrics.cash_min_required_krw, metrics.cash_reference_total_krw,
|
||
per_ticker.*, resolved_count, unresolved]'
|
||
python_tool: tools/build_canonical_metrics_v1.py
|
||
harness_check: CHECK_89_CANONICAL_METRICS_RESOLVED
|
||
version: 2026-05-29_PHASE7
|
||
CROSS_SECTION_CONSISTENCY_V1:
|
||
purpose: '교차섹션 정합성 게이트. canonical 지표가 여러 섹션에서 동일하게 렌더됐는지 검증. enforcement_mode_until
|
||
이전 WARN, 이후 FAIL. score=100 목표.
|
||
|
||
'
|
||
output_contract:
|
||
Temp/cross_section_consistency_v1.json:
|
||
fields: '[gate, score, conflict_count, conflicts[], forbidden_uniform_labels,
|
||
incomplete_tables, enforcement_mode_until]'
|
||
python_tool: tools/build_cross_section_consistency_v1.py
|
||
harness_check: CHECK_90_CROSS_SECTION_CONSISTENCY
|
||
version: 2026-05-29_PHASE7
|
||
ALPHA_FEEDBACK_LOOP_V2:
|
||
purpose: 'T5 운영 데이터 기반 PA1 팩터 가중치 조정 권고 생성. 기존 V1(T20 전용)을 확장해 T5≥10건으로 즉시 동작.
|
||
AFL 원칙: 권고만 출력, 자동 적용 금지.
|
||
|
||
'
|
||
output_contract:
|
||
Temp/alpha_feedback_loop_v2.json:
|
||
fields: '[status, cases_analyzed, active_signal_rate_pct, passive_signal_rate_pct,
|
||
pa1_current_ratio, recommended_adjustments[]]'
|
||
python_tool: tools/build_alpha_feedback_loop_v2.py
|
||
version: 2026-05-30_Work7
|
||
DYNAMIC_VALUE_PRESERVATION_SELL_V6:
|
||
purpose: '단순 맹목적 매도(V5) 폐기. 최신 알고리즘 매도 기법(VWAP/TWAP 기반 지지선 연동) 도입. 현금 확보 시 종목의
|
||
Rebound_Elasticity_Score (반등 탄력 점수)를 계산하여 RSI < 30 및 이격도 과대 종목은 절대 즉시 매도 금지(EXECUTE_REBOUND_ONLY
|
||
강제). 호가창(Tick) 유동성을 고려한 Dynamic Limit Price = Close + (ATR20 * 0.2) 산출하여 값
|
||
고정. LLM의 주관 개입 0% 통제.
|
||
|
||
'
|
||
inputs: []
|
||
output:
|
||
field: dynamic_value_preservation_sell_v6_json
|
||
output_contract:
|
||
Temp/dynamic_value_preservation_sell_v6.json:
|
||
fields: '[formula_id, status, execution_allowed, selected_sell_combo, cash_recovered_krw,
|
||
value_damage_pct_avg]'
|
||
python_tool: tools/build_dynamic_value_preservation_sell_v6.py
|
||
version: 2026-05-31_Advanced1
|
||
PREDICTIVE_ALPHA_DIALECTIC_ENGINE_V2:
|
||
purpose: '단순 정반합 강세/약세 합산 탈피. 거시 경제(Macro) 국면에 따라 팩터 가중치 동적 변환(Regime-Switching).
|
||
국면이 RISK_OFF일 때 펀더멘털 점수 무시, 유동성(Liquidity) 및 스마트머니 점수 가중치 2.5배 상향. 반환된 synthesis_verdict가
|
||
BEARISH이면 어떠한 예외 없이 ALLOW_EXECUTION = FALSE 하드락 적용.
|
||
|
||
'
|
||
inputs: []
|
||
output:
|
||
field: predictive_alpha_engine_v2_json
|
||
output_contract:
|
||
Temp/predictive_alpha_engine_v2.json:
|
||
fields: '[formula_id, rows, gate, numeric_generation_allowed]'
|
||
python_tool: tools/build_predictive_alpha_dialectic_engine_v2.py
|
||
version: 2026-05-31_Advanced2
|
||
CAPITAL_STYLE_TIME_STOP_V1:
|
||
purpose: '투자 방법(단타/스윙/중장기) 결정론적 분리 및 진입 시점부터 타이머 작동. SCALP(단타)로 진입한 종목이 T+3일
|
||
내 목표가(TP) 미도달 시 수익률 무관 무조건 TIME_STOP_EXIT 발송. LLM 변명 불가, "타임스탑 청산" 단답형 출력
|
||
강제.
|
||
|
||
'
|
||
inputs: []
|
||
output:
|
||
field: capital_style_time_stop_v1_json
|
||
output_contract:
|
||
Temp/capital_style_time_stop_v1.json:
|
||
fields: '[formula_id, rows, gate]'
|
||
python_tool: tools/build_capital_style_time_stop_v1.py
|
||
version: 2026-05-31_Advanced3
|
||
EXECUTION_INTEGRITY_GATE_V1:
|
||
purpose: '결정론적 직렬화 라우팅 통합 게이트. 파편화된 게이트들을 단일 파이프라인으로 통합하여 단 하나의 조건이라도 실패 시 전체
|
||
JSON 출력을 null 처리 및 PENDING_EXPORT 상태로 Lock. LLM 예측 원천 차단.
|
||
|
||
'
|
||
inputs: []
|
||
output:
|
||
field: execution_integrity_gate_v1_json
|
||
output_contract:
|
||
Temp/execution_integrity_gate_v1.json:
|
||
fields: '[formula_id, status, failed_checks]'
|
||
python_tool: tools/build_execution_integrity_gate_v1.py
|
||
version: 2026-05-31_Advanced4
|
||
IMPUTED_DATA_EXPOSURE_GATE_V1:
|
||
purpose: '실질 입력(펀더멘털 핵심 팩터 ROE/OPM/OCF/FCF, T+20 실현성과, 거래품질·패턴·알파평가)의 대체(imputed)·합성·PENDING
|
||
정도를 결정론적으로 측정하여, confidence_cap_basis가 대체데이터를 가리고 있는지(정직성 결함) 폭로하는 감사 게이트.
|
||
시스템 자체 신뢰도 캡 공식(raw × (0.4 + 0.6 × coverage))을 재사용하되, 분모를 schema_presence
|
||
기반 investment_quality(98.65 등)가 아니라 "실질 데이터 커버리지"로 교체하여 effective_confidence_honest를
|
||
산출한다. 대체데이터 감지 시 long_horizon_allowed / fundamental_claim_allowed 를 false로
|
||
강제하여 AGENTS.md "펀더멘털 결측 시 장기투자 추천 금지" 규칙을 결정론으로 집행한다. ENGINE_AUDIT_V1 감사 산출물
|
||
전용이며 GAS 런타임·HTS 주문 판단에는 개입하지 않는다.
|
||
|
||
'
|
||
inputs: []
|
||
formula:
|
||
weighted_coverage: 'Σ(domain_weight_d × coverage_d) # 도메인: fundamental_core(0.30),
|
||
realized_outcome(0.30), trade_quality(0.15), pattern(0.10), alpha_eval(0.15)'
|
||
imputed_field_ratio: 1 − weighted_coverage
|
||
effective_confidence_honest: raw_confidence_cap_basis × (0.4 + 0.6 × weighted_coverage)
|
||
gate_status: imputed_field_ratio ≥ 0.50 → IMPUTED_DATA_BLOCK / ≥ 0.25 → IMPUTED_DATA_WARN
|
||
/ else PASS
|
||
long_horizon_allowed: t20_sample > 0 AND fundamental_core_factor_coverage
|
||
≥ 0.50
|
||
fundamental_claim_allowed: fundamental_core_factor_coverage ≥ 0.50
|
||
output:
|
||
field: imputed_data_exposure
|
||
output_contract:
|
||
Temp/engine_audit_v1.json:
|
||
fields: '[imputed_data_exposure{gate_status, imputed_field_ratio, weighted_coverage,
|
||
domain_coverage, fundamental_core_factor_coverage, surrogate_outcome_ratio,
|
||
effective_confidence_honest, confidence_cap_inflation_gap, long_horizon_allowed,
|
||
fundamental_claim_allowed, report_render_skew, exposure_reasons}]'
|
||
prohibition:
|
||
- LLM이 gate_status / effective_confidence_honest 를 재계산하거나 완화하는 것 금지
|
||
- fundamental_claim_allowed=false 인데 장기·펀더멘털 우위를 단정하는 서술 금지
|
||
python_tool: tools/build_engine_audit_v1.py
|
||
validator_tool: tools/validate_engine_audit_v1.py
|
||
canonical_ref: ENGINE_AUDIT_V1 / spec/28_imputed_data_exposure_contract.yaml
|
||
version: 2026-05-31_ENGINE_AUDIT_V1
|
||
ANTI_LATE_ENTRY_PULLBACK_GATE_V4:
|
||
purpose: '뒷박/설거지 진입 차단 게이트 V4. velocity·분배신호 복합 조건으로 진입 차단.
|
||
|
||
'
|
||
input_fields:
|
||
- velocity_1d
|
||
- velocity_5d
|
||
- distribution_score
|
||
expected_outputs:
|
||
- anti_late_entry_gate
|
||
- chase_risk_score
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
ARCHITECTURE_BOUNDARIES_V2:
|
||
purpose: '하네스 컴포넌트 간 의존성·권한 경계를 정의하고 위반을 감지한다.
|
||
|
||
'
|
||
input_fields:
|
||
- component_list
|
||
- dependency_map
|
||
expected_outputs:
|
||
- boundary_violations
|
||
- architecture_gate
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
CONFIDENCE_CALIBRATION_V2:
|
||
purpose: 'T+5/T+20 실적 기반 신뢰도 캘리브레이션 v2. 과신·과소신뢰 구간을 보정한다.
|
||
|
||
'
|
||
input_fields:
|
||
- predicted_confidence
|
||
- actual_outcome
|
||
- sample_count
|
||
expected_outputs:
|
||
- calibrated_confidence
|
||
- calibration_state
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
DATA_QUALITY_RECONCILIATION_V1:
|
||
purpose: '섹션 간 동일 의미 수치의 불일치를 탐지해 데이터 품질 조정 보고서를 산출한다.
|
||
|
||
'
|
||
input_fields:
|
||
- section_values
|
||
- field_map
|
||
expected_outputs:
|
||
- reconciliation_status
|
||
- mismatch_fields
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
DECISION_EVIDENCE_SCORE_V1:
|
||
purpose: '의사결정 근거의 출처 추적 가능성과 검증 가능성을 점수화한다.
|
||
|
||
'
|
||
input_fields:
|
||
- decision_fields
|
||
- source_paths
|
||
- formula_ids
|
||
expected_outputs:
|
||
- decision_evidence_score_v1
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
DECISION_EVIDENCE_SCORE_V2:
|
||
purpose: 'DECISION_EVIDENCE_SCORE_V1 개선판. 비결정론 경로 탐지 추가.
|
||
|
||
'
|
||
input_fields:
|
||
- decision_fields
|
||
- source_paths
|
||
- formula_ids
|
||
expected_outputs:
|
||
- decision_evidence_score_v2
|
||
- non_deterministic_paths
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
DECISION_REPLAY_SNAPSHOT_PACK_V1:
|
||
purpose: '의사결정 시점 스냅샷 패키지를 생성해 재현·감사를 지원한다.
|
||
|
||
'
|
||
input_fields:
|
||
- decision_date
|
||
- harness_context_snapshot
|
||
expected_outputs:
|
||
- replay_snapshot_pack
|
||
- snapshot_hash
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
DERIVATION_VALIDITY_SCORE_V1:
|
||
purpose: 'order_blueprint 파생경로 커버리지와 결정론성을 종합해 파생유효성 점수를 산출한다.
|
||
|
||
'
|
||
input_fields:
|
||
- harness_coverage_audit
|
||
- order_blueprint_json
|
||
expected_outputs:
|
||
- derivation_validity_score
|
||
- derivation_validity_grade
|
||
- derivation_validity_gate
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
DFG_V1:
|
||
purpose: '데이터 흐름 그래프 V1. 하네스 파이프라인 의존성 방향그래프를 산출한다.
|
||
|
||
'
|
||
input_fields:
|
||
- tool_list
|
||
- dependency_map
|
||
expected_outputs:
|
||
- dfg_nodes
|
||
- dfg_edges
|
||
- cycle_detected
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
DISTRIBUTION_EXIT_PRESIGNAL_V2:
|
||
purpose: '분배 국면 선행 신호를 감지해 사전 매도 권고 신호를 산출한다.
|
||
|
||
'
|
||
input_fields:
|
||
- flow_credit
|
||
- volume_trend
|
||
- price_structure
|
||
expected_outputs:
|
||
- distribution_presignal
|
||
- exit_urgency_level
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
DYNAMIC_VALUE_PRESERVATION_SELL_V3_BRIDGE:
|
||
purpose: 'V3 가치보존 매도와 최신 엔진 간 호환성 브리지. 하위호환 경로 유지.
|
||
|
||
'
|
||
input_fields:
|
||
- sell_plan_v3
|
||
- current_engine_context
|
||
expected_outputs:
|
||
- bridged_sell_plan
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
EVALUATION_HISTORY_COVERAGE_V1:
|
||
purpose: '종목별·기간별 평가 이력 커버리지를 집계한다.
|
||
|
||
'
|
||
input_fields:
|
||
- evaluation_log
|
||
- date_range
|
||
expected_outputs:
|
||
- history_coverage_pct
|
||
- coverage_by_ticker
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
EXECUTION_AUTHORITY_MATRIX_V1:
|
||
purpose: '게이트별 실행 권한 매트릭스를 산출해 HTS 주문 권한을 결정론적으로 고착화한다.
|
||
|
||
'
|
||
input_fields:
|
||
- gate_states
|
||
- execution_mode
|
||
expected_outputs:
|
||
- execution_authority_matrix
|
||
- authorized_actions
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
EXECUTION_QUALITY_HARNESS_V1:
|
||
purpose: '매수·매도 실행품질(슬리피지·체결률·타이밍)을 측정해 품질 점수를 산출한다.
|
||
|
||
'
|
||
input_fields:
|
||
- executed_orders
|
||
- benchmark_prices
|
||
expected_outputs:
|
||
- execution_quality_score
|
||
- slippage_pct
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
EXECUTION_READINESS_MATRIX_V1:
|
||
purpose: 'HTS 주문 실행 준비 상태를 100% 기준으로 점검하는 매트릭스를 산출한다.
|
||
|
||
'
|
||
input_fields:
|
||
- gate_states
|
||
- sample_counts
|
||
- data_completeness
|
||
expected_outputs:
|
||
- execution_readiness_matrix
|
||
- readiness_gate
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
FINAL_CONTEXT_FOR_LLM_V2:
|
||
purpose: 'LLM에 전달할 최종 컨텍스트 패키지 V2. numeric_generation_allowed=0 강제.
|
||
|
||
'
|
||
input_fields:
|
||
- harness_context
|
||
- operational_report
|
||
expected_outputs:
|
||
- final_context_for_llm
|
||
- llm_serving_budget
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
FINAL_DECISION_PACKET_V1:
|
||
purpose: '하네스 최종 산출 패키지. 모든 게이트·주문·성과 요약을 단일 JSON으로 통합한다.
|
||
|
||
'
|
||
input_fields:
|
||
- all_gate_outputs
|
||
- order_blueprint
|
||
- operational_report
|
||
expected_outputs:
|
||
- final_decision_packet
|
||
- input_hash
|
||
- execution_mode
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
FINAL_EXECUTION_DECISION_V1:
|
||
purpose: '최종 실행 의사결정 V1. HTS 주문표 생성 여부와 실행 모드를 결정한다.
|
||
|
||
'
|
||
input_fields:
|
||
- gate_states
|
||
- global_execution_gate
|
||
expected_outputs:
|
||
- final_execution_decision
|
||
- execution_mode
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
FINAL_EXECUTION_DECISION_V2:
|
||
purpose: '최종 실행 의사결정 V2. V1 + shadow_ledger 강제 생성 추가.
|
||
|
||
'
|
||
input_fields:
|
||
- gate_states
|
||
- global_execution_gate
|
||
- shadow_ledger_data
|
||
expected_outputs:
|
||
- final_execution_decision_v2
|
||
- shadow_ledger
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
FORMULA_IMPLEMENTATION_REGISTRY_V1:
|
||
purpose: '공식별 GAS/Python 구현 상태를 추적하는 구현 레지스트리를 산출한다.
|
||
|
||
'
|
||
input_fields:
|
||
- formula_ids
|
||
- implementation_map
|
||
expected_outputs:
|
||
- implementation_registry
|
||
- unimplemented_list
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
FORMULA_REGISTRY_SYNC_V1:
|
||
purpose: 'GAS·Python·YAML 간 공식 레지스트리 동기화 상태를 검증한다.
|
||
|
||
'
|
||
input_fields:
|
||
- gas_formulas
|
||
- py_formulas
|
||
- yaml_formulas
|
||
expected_outputs:
|
||
- sync_status
|
||
- out_of_sync_formulas
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
HARNESS_CONTEXT_VALIDATOR_V2:
|
||
purpose: '하네스 컨텍스트 전체의 형식·타입·필수 필드 유효성을 검증한다 (V2).
|
||
|
||
'
|
||
input_fields:
|
||
- harness_context
|
||
expected_outputs:
|
||
- validation_result
|
||
- missing_fields
|
||
- type_errors
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
HORIZON_ALLOCATION_GUARD_V2:
|
||
purpose: '투자성향별 목표 보유기간 초과 여부를 감지해 TIME_STOP 플래그를 산출한다 (V2).
|
||
|
||
'
|
||
input_fields:
|
||
- entry_date
|
||
- current_date
|
||
- target_horizon_days
|
||
expected_outputs:
|
||
- time_stop_flag
|
||
- days_over_horizon
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
HORIZON_REBALANCE_PLAN_V1:
|
||
purpose: '성향별 목표 비중 달성을 위한 리밸런싱 실행 계획을 산출한다.
|
||
|
||
'
|
||
input_fields:
|
||
- current_allocation
|
||
- target_allocation
|
||
- rebalance_threshold
|
||
expected_outputs:
|
||
- rebalance_plan
|
||
- rebalance_trades
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
HORIZON_ROUTING_LOCK_V6:
|
||
purpose: '진입 국면·성향·트랜치를 결합해 매수 라우팅을 결정론적으로 고착화한다 (V6).
|
||
|
||
'
|
||
input_fields:
|
||
- market_regime
|
||
- capital_style
|
||
- tranche_phase
|
||
- gate_states
|
||
expected_outputs:
|
||
- buy_route
|
||
- routing_reason_codes
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
IMPUTED_DATA_EXPOSURE_GATE_V2:
|
||
purpose: '대체(imputed) 데이터 비율을 측정해 신뢰도 과장 위험을 차단하는 게이트 V2.
|
||
|
||
'
|
||
input_fields:
|
||
- domain_coverage
|
||
- imputed_fields
|
||
expected_outputs:
|
||
- imputed_gate_v2
|
||
- effective_confidence_honest
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
INDEX_RELATIVE_HEALTH_GATE_V1:
|
||
purpose: '종목의 KOSPI 대비 상대강도와 건전성을 측정해 인덱스 대비 게이트를 산출한다.
|
||
|
||
'
|
||
input_fields:
|
||
- ticker_return
|
||
- kospi_return
|
||
- relative_strength
|
||
expected_outputs:
|
||
- index_relative_health_gate
|
||
- underperformance_pct
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
INTRADAY_V1:
|
||
purpose: '장중 데이터 제약(Intraday Restriction)을 적용해 장중 액션 매트릭스를 산출한다.
|
||
|
||
'
|
||
input_fields:
|
||
- capture_time
|
||
- market_close_time
|
||
- data_type
|
||
expected_outputs:
|
||
- intraday_restriction_gate
|
||
- allowed_actions
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
LATE_CHASE_ATTRIBUTION_V1:
|
||
purpose: '뒷박 진입군 vs 정상 진입군의 T+5/T+20 승률 차이를 정량 측정한다.
|
||
|
||
'
|
||
input_fields:
|
||
- trade_ledger
|
||
- entry_velocity_threshold
|
||
expected_outputs:
|
||
- late_vs_normal_winrate_gap_pp
|
||
- attribution_sample_count
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
LATE_REBOUND_BUCKET_SCORE_V1:
|
||
purpose: '반등 대기 분할매도의 실제 반등 수익 회수율을 측정해 지연 반등 버킷 점수를 산출한다.
|
||
|
||
'
|
||
input_fields:
|
||
- rebound_wait_trades
|
||
- trigger_prices
|
||
- actual_sell_prices
|
||
expected_outputs:
|
||
- late_rebound_bucket_score
|
||
- rebound_capture_rate
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
LLM_SERVING:
|
||
purpose: 'LLM 서빙 예산과 허용 범위를 정의한다. numeric_generation_allowed 포함.
|
||
|
||
'
|
||
input_fields:
|
||
- serving_mode
|
||
- allowed_operations
|
||
expected_outputs:
|
||
- llm_serving_budget
|
||
- numeric_generation_allowed
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
MACRO_REGIME_ALIGNMENT_GATE_V2:
|
||
purpose: '거시 국면과 포트폴리오 전략 정렬 여부를 측정해 국면 정합 게이트 V2를 산출한다.
|
||
|
||
'
|
||
input_fields:
|
||
- market_regime
|
||
- strategy_regime_assumption
|
||
expected_outputs:
|
||
- macro_regime_alignment_gate
|
||
- alignment_score
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
OPERATIONAL_ALPHA_CALIBRATION_V2:
|
||
purpose: '실운용 alpha_lead 예측의 T+5/T+20 적중률을 측정해 알파 캘리브레이션 상태를 산출한다.
|
||
|
||
'
|
||
input_fields:
|
||
- alpha_predictions
|
||
- actual_outcomes
|
||
- sample_count
|
||
expected_outputs:
|
||
- alpha_calibration_state
|
||
- t20_pass_rate
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
OPERATIONAL_EVAL_QUEUE_V1:
|
||
purpose: 'T+20 평가 대기열을 관리해 평가 완료·미완료 건수를 추적한다.
|
||
|
||
'
|
||
input_fields:
|
||
- trade_log
|
||
- evaluation_date
|
||
expected_outputs:
|
||
- eval_queue
|
||
- pending_count
|
||
- completed_count
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
OPERATIONAL_EVIDENCE_AUDIT_V1:
|
||
purpose: '실운용 의사결정의 증거 추적 가능성을 감사한다.
|
||
|
||
'
|
||
input_fields:
|
||
- decision_log
|
||
- evidence_map
|
||
expected_outputs:
|
||
- evidence_audit_result
|
||
- orphan_decisions
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
OPERATIONAL_OUTCOME_LOCK_V1:
|
||
purpose: '실운용 T+5/T+20 결과를 잠금 처리해 소급 수정을 방지한다.
|
||
|
||
'
|
||
input_fields:
|
||
- outcome_ledger
|
||
- lock_date
|
||
expected_outputs:
|
||
- locked_outcomes
|
||
- lock_status
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
OPERATIONAL_T20_OUTCOME_LEDGER_V1:
|
||
purpose: '실운용 T+20 거래결과 원장. 실측 30건 이상 시 operational_t20로 인정한다.
|
||
|
||
'
|
||
input_fields:
|
||
- trade_log
|
||
- t20_prices
|
||
- evaluation_date
|
||
expected_outputs:
|
||
- operational_t20_ledger
|
||
- evaluated_count
|
||
- pass_rate_pct
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
OPERATIONAL_TRUTH_SCORE_V1:
|
||
purpose: '실운용 결과 기반 진실성 점수. type_A/type_B 100%를 분리 측정한다.
|
||
|
||
'
|
||
input_fields:
|
||
- operational_metrics
|
||
- sample_counts
|
||
expected_outputs:
|
||
- operational_truth_score
|
||
- true_100_axes
|
||
- pending_axes
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
ORDER_MATH_RECONCILIATION_V1:
|
||
purpose: '주문 수량·금액 계산의 정합성(round-trip 검증)을 감사한다.
|
||
|
||
'
|
||
input_fields:
|
||
- order_blueprint
|
||
- portfolio_state
|
||
expected_outputs:
|
||
- math_reconciliation_result
|
||
- calculation_errors
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
OUTCOME_QUALITY_SCORE_V1:
|
||
purpose: 'T+5/T+20 실측 성과를 종합해 성과품질 점수를 산출한다.
|
||
|
||
'
|
||
input_fields:
|
||
- t5_outcomes
|
||
- t20_outcomes
|
||
- sample_counts
|
||
expected_outputs:
|
||
- outcome_quality_score_v1
|
||
- outcome_quality_gate
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
PASS_100_CRITERIA_V1:
|
||
purpose: 'pass_100 기준 V1. 전체 게이트·점수 100% 충족 기준을 정의한다.
|
||
|
||
'
|
||
input_fields:
|
||
- gate_states
|
||
- metric_scores
|
||
expected_outputs:
|
||
- pass_100_score
|
||
- failed_criteria
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
PERFORMANCE_MONITORING_DASHBOARD_V1:
|
||
purpose: 'T+5/T+20 성과 모니터링 대시보드. 주간 자동 갱신.
|
||
|
||
'
|
||
input_fields:
|
||
- trade_outcomes
|
||
- monitoring_period
|
||
expected_outputs:
|
||
- performance_dashboard
|
||
- weekly_scorecard
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
PERFORMANCE_READINESS_REPLAY_BRIDGE_V1:
|
||
purpose: 'replay 백필 데이터를 operational_t20 판단에 연결하는 성과준비도 브리지.
|
||
|
||
'
|
||
input_fields:
|
||
- replay_ledger
|
||
- operational_threshold
|
||
expected_outputs:
|
||
- performance_readiness_score
|
||
- readiness_gate
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
PERF_RECOVERY_HARNESS_V1:
|
||
purpose: '성과 하락 감지 시 자동 포지션 스케일 인하와 회복 계획을 산출한다.
|
||
|
||
'
|
||
input_fields:
|
||
- recent_performance
|
||
- degradation_threshold
|
||
expected_outputs:
|
||
- recovery_plan
|
||
- scale_down_factor
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
PERF_RECOVERY_OVERRIDES_V1:
|
||
purpose: '성과 회복 기간 중 허용 오버라이드 목록과 조건을 정의한다.
|
||
|
||
'
|
||
input_fields:
|
||
- recovery_state
|
||
- override_requests
|
||
expected_outputs:
|
||
- allowed_overrides
|
||
- blocked_overrides
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
PHASE_CHECKS_50_60_V1:
|
||
purpose: '단계별 50%·60% 체크포인트에서 중간 평가를 수행한다.
|
||
|
||
'
|
||
input_fields:
|
||
- completion_pct
|
||
- phase_thresholds
|
||
expected_outputs:
|
||
- phase_check_result
|
||
- checkpoint_flags
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
PIPELINE_RUNTIME_ANOMALY_CHECK_V1:
|
||
purpose: '파이프라인 실행 중 이상 징후(지연·오류·이상값)를 탐지한다.
|
||
|
||
'
|
||
input_fields:
|
||
- runtime_profile
|
||
- anomaly_thresholds
|
||
expected_outputs:
|
||
- anomaly_flags
|
||
- anomaly_severity
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
PIPELINE_RUNTIME_CONTRACT_VALIDATOR_V1:
|
||
purpose: '파이프라인 실행 결과가 계약 명세를 준수하는지 검증한다.
|
||
|
||
'
|
||
input_fields:
|
||
- pipeline_outputs
|
||
- contract_spec
|
||
expected_outputs:
|
||
- contract_validation_result
|
||
- violations
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
PIPELINE_RUNTIME_PROFILE_SUMMARY_V1:
|
||
purpose: '파이프라인 실행 시간·메모리·산출물 수를 요약한다.
|
||
|
||
'
|
||
input_fields:
|
||
- runtime_profile
|
||
expected_outputs:
|
||
- runtime_summary
|
||
- bottleneck_steps
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
PIPELINE_RUNTIME_PROFILE_V1:
|
||
purpose: '파이프라인 전체 실행 프로파일을 생성한다.
|
||
|
||
'
|
||
input_fields:
|
||
- execution_log
|
||
expected_outputs:
|
||
- runtime_profile
|
||
- step_durations
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
PORTFOLIO_HEALTH_V1:
|
||
purpose: '포트폴리오 건전성 점수와 레이블(HEALTHY/CAUTION/CRITICAL)을 산출한다.
|
||
|
||
'
|
||
input_fields:
|
||
- gate_states
|
||
- heat_pct
|
||
- drawdown_pct
|
||
expected_outputs:
|
||
- portfolio_health_score
|
||
- portfolio_health_label
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
PREDICTIVE_ALPHA_DIALECTIC_ENGINE_V1_BRIDGE:
|
||
purpose: '정반합 예측 엔진 V1과 V2 간 호환성 브리지.
|
||
|
||
'
|
||
input_fields:
|
||
- v1_output
|
||
- v2_context
|
||
expected_outputs:
|
||
- bridged_prediction
|
||
- bridge_status
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
REALIZED_PERFORMANCE_V1:
|
||
purpose: '실현 손익·승률·기대수익을 집계한다.
|
||
|
||
'
|
||
input_fields:
|
||
- closed_trades
|
||
- evaluation_period
|
||
expected_outputs:
|
||
- realized_pnl
|
||
- win_rate
|
||
- expectancy
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
REBOUND_SELL_EFFICIENCY_V1:
|
||
purpose: '반등 대기 분할매도의 효율성(반등 포착율)을 측정한다.
|
||
|
||
'
|
||
input_fields:
|
||
- rebound_wait_qty
|
||
- rebound_captured_qty
|
||
- expected_gain
|
||
expected_outputs:
|
||
- rebound_sell_efficiency_score
|
||
- efficiency_gate
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
REPORT_AUTHORITY_DIFF_V1:
|
||
purpose: '보고서 버전 간 권한 차이를 탐지해 미인가 변경을 감지한다.
|
||
|
||
'
|
||
input_fields:
|
||
- report_v_prev
|
||
- report_v_curr
|
||
- authority_map
|
||
expected_outputs:
|
||
- authority_diff
|
||
- unauthorized_changes
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
REQUEST_RESULT_ADOPTION_V1:
|
||
purpose: '사용자 요청 결과의 채택 여부와 적용 경로를 추적한다.
|
||
|
||
'
|
||
input_fields:
|
||
- request_log
|
||
- adoption_status
|
||
expected_outputs:
|
||
- adoption_rate
|
||
- pending_requests
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
ROOT_CAUSE_ATTRIBUTION_V1:
|
||
purpose: '성과 저하·게이트 실패의 근본 원인을 추적하고 귀인 분석을 수행한다.
|
||
|
||
'
|
||
input_fields:
|
||
- failure_events
|
||
- causal_graph
|
||
expected_outputs:
|
||
- root_causes
|
||
- attribution_confidence
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
ROOT_CAUSE_RECOVERY_PLAN_V1:
|
||
purpose: '근본 원인 분석 결과를 기반으로 회복 계획을 산출한다.
|
||
|
||
'
|
||
input_fields:
|
||
- root_causes
|
||
- available_actions
|
||
expected_outputs:
|
||
- recovery_plan
|
||
- estimated_recovery_time
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
RS_V2_FUSION:
|
||
purpose: '상대강도 V2 신호를 다른 기술적 신호와 융합한 복합 신호를 산출한다.
|
||
|
||
'
|
||
input_fields:
|
||
- rs_v2_score
|
||
- tech_signals
|
||
expected_outputs:
|
||
- rs_fusion_score
|
||
- fusion_gate
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
SATELLITE_CANDIDATE_SCREEN_V1:
|
||
purpose: '위성 종목 후보군을 기술·펀더멘털·수급 기준으로 스크리닝한다.
|
||
|
||
'
|
||
input_fields:
|
||
- universe
|
||
- screening_criteria
|
||
expected_outputs:
|
||
- satellite_candidates
|
||
- screen_scores
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
SCORES_HARNESS_V1:
|
||
purpose: '모든 하네스 점수(quality/proof/evidence)를 단일 구조로 통합·검증한다.
|
||
|
||
'
|
||
input_fields:
|
||
- all_score_outputs
|
||
expected_outputs:
|
||
- scores_harness
|
||
- score_consistency_check
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
SELL_ENGINE_AUDIT_V1:
|
||
purpose: '매도 엔진 산출값의 결정론성·수량·가격 유효성을 감사한다.
|
||
|
||
'
|
||
input_fields:
|
||
- sell_engine_output
|
||
- order_blueprint
|
||
expected_outputs:
|
||
- sell_engine_audit_result
|
||
- audit_gate
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
SELL_EXECUTION_QUALITY_GATE_V1:
|
||
purpose: '매도 실행 품질이 슬리피지·체결률 기준을 충족하는지 검증한다.
|
||
|
||
'
|
||
input_fields:
|
||
- executed_sells
|
||
- quality_thresholds
|
||
expected_outputs:
|
||
- sell_execution_quality_gate
|
||
- quality_score
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
SELL_EXECUTION_TIMING_LOCK_V2:
|
||
purpose: '매도 실행 타이밍을 과매도 구간·반등대기·긴급전량 조건에 따라 고착화한다 (V2).
|
||
|
||
'
|
||
input_fields:
|
||
- sell_timing_signals
|
||
- emergency_condition
|
||
expected_outputs:
|
||
- sell_timing_lock
|
||
- execution_window
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
SEMANTIC_FORMULA_COVERAGE_HARNESS_V1:
|
||
purpose: '공식의 의미적 커버리지(입력·출력·성과 바인딩)를 측정한다.
|
||
|
||
'
|
||
input_fields:
|
||
- formula_ids
|
||
- semantic_bindings
|
||
expected_outputs:
|
||
- semantic_coverage_score
|
||
- uncovered_formulas
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
SHORT_HORIZON_OUTCOME_MONITOR_V1:
|
||
purpose: '단타·단기 포지션의 T+1/T+3/T+5 성과를 실시간 모니터링한다.
|
||
|
||
'
|
||
input_fields:
|
||
- short_horizon_trades
|
||
- monitoring_prices
|
||
expected_outputs:
|
||
- short_horizon_outcomes
|
||
- early_exit_signals
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
SMART_CASH_RECOVERY_V4:
|
||
purpose: '스마트 현금회복 V4. K2 분할·TRIM 우선순위·반등대기 통합.
|
||
|
||
'
|
||
input_fields:
|
||
- portfolio_state
|
||
- cash_shortfall_krw
|
||
- sell_priority
|
||
expected_outputs:
|
||
- smart_cash_recovery_plan_v4
|
||
- expected_recovery_krw
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
SMART_CASH_RECOVERY_V7:
|
||
purpose: '스마트 현금회복 V7. V6 + 반도체 클러스터 게이트·베타 조정 통합.
|
||
|
||
'
|
||
input_fields:
|
||
- portfolio_state
|
||
- cash_shortfall_krw
|
||
- regime_context
|
||
expected_outputs:
|
||
- smart_cash_recovery_plan_v7
|
||
- expected_recovery_krw
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
STOP_BREACH_V1:
|
||
purpose: '손절가 이탈 여부를 판정해 BREACH_IMMEDIATE_EXIT 플래그를 산출한다.
|
||
|
||
'
|
||
input_fields:
|
||
- current_price
|
||
- stop_loss_price
|
||
- gap_threshold
|
||
expected_outputs:
|
||
- stop_breach_gate
|
||
- gap_pct
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
STRATEGY_DECISION_RESULT_V3:
|
||
purpose: '전략 의사결정 결과 V3를 구조화해 final_decision_packet에 통합한다.
|
||
|
||
'
|
||
input_fields:
|
||
- buy_decisions
|
||
- sell_decisions
|
||
- hold_decisions
|
||
expected_outputs:
|
||
- strategy_decision_result_v3
|
||
- decision_summary
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
STRATEGY_EXECUTION_LOCKS_REGRESSION_V1:
|
||
purpose: '전략 실행 잠금 규칙의 회귀 테스트를 수행한다.
|
||
|
||
'
|
||
input_fields:
|
||
- lock_rules
|
||
- test_cases
|
||
expected_outputs:
|
||
- regression_result
|
||
- failed_locks
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
STRATEGY_EXECUTION_LOCKS_V1:
|
||
purpose: '전략 실행 잠금 규칙 V1. 게이트별 액션 허용/차단 매트릭스.
|
||
|
||
'
|
||
input_fields:
|
||
- gate_states
|
||
- action_requests
|
||
expected_outputs:
|
||
- execution_locks
|
||
- blocked_actions
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
STRATEGY_HARDENING_HARNESS_V1:
|
||
purpose: '전략 경화 검증 하네스 V1. 규칙 준수·일관성·완전성을 측정한다.
|
||
|
||
'
|
||
input_fields:
|
||
- strategy_outputs
|
||
- hardening_spec
|
||
expected_outputs:
|
||
- hardening_score
|
||
- hardening_gate
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
STRATEGY_HARDENING_HARNESS_V2:
|
||
purpose: '전략 경화 검증 하네스 V2. V1 + LLM 의존도 추가 측정.
|
||
|
||
'
|
||
input_fields:
|
||
- strategy_outputs
|
||
- hardening_spec
|
||
- llm_fields
|
||
expected_outputs:
|
||
- hardening_score_v2
|
||
- llm_dependency_ratio
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
STRATEGY_ROUTING_AUDIT_V1:
|
||
purpose: '전략 라우팅 경로의 결정론성과 권한을 감사한다.
|
||
|
||
'
|
||
input_fields:
|
||
- routing_decisions
|
||
- authority_matrix
|
||
expected_outputs:
|
||
- routing_audit_result
|
||
- unauthorized_routes
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
TICK_NORM_V1:
|
||
purpose: 'TICK_NORMALIZER_V1의 별칭 식별자. 동일 로직의 코드 내 단축 참조.
|
||
|
||
'
|
||
input_fields:
|
||
- price
|
||
- tick_table
|
||
expected_outputs:
|
||
- normalized_price
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
TRUTHFULNESS_GUARD_V1:
|
||
purpose: '거짓 100% 차단 수문장. type_B 표본 부족 축의 100% 표기를 차단한다.
|
||
|
||
'
|
||
input_fields:
|
||
- outcome_metrics
|
||
- sample_counts
|
||
- t20_source
|
||
expected_outputs:
|
||
- truthfulness_gate
|
||
- contradiction_count
|
||
- violations
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
TRUTHFUL_DECISION_LEDGER_V2:
|
||
purpose: '진실성 기반 의사결정 원장 V2. 거짓 100% 없이 모든 결정 근거를 기록한다.
|
||
|
||
'
|
||
input_fields:
|
||
- decision_log
|
||
- truthfulness_check
|
||
expected_outputs:
|
||
- truthful_ledger_v2
|
||
- ledger_integrity_score
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
VALUE_PRESERVATION_SCORER_V2:
|
||
purpose: '현금확보 매도의 가치훼손·반등포착을 종합해 가치보존 점수 V2를 산출한다.
|
||
|
||
'
|
||
input_fields:
|
||
- sell_plan
|
||
- rebound_data
|
||
- value_damage_pct
|
||
expected_outputs:
|
||
- value_preservation_score_v2
|
||
- preservation_gate
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
WALK_FORWARD_CALIBRATION_V1:
|
||
purpose: '워크포워드 방식으로 전략 파라미터를 순차 캘리브레이션한다.
|
||
|
||
'
|
||
input_fields:
|
||
- historical_data
|
||
- strategy_params
|
||
- validation_window
|
||
expected_outputs:
|
||
- calibrated_params
|
||
- walk_forward_score
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
YAML_TO_CODE_COVERAGE_V1:
|
||
purpose: 'YAML 명세 → 코드 커버리지를 측정하고 orphan·미구현 공식을 탐지한다.
|
||
|
||
'
|
||
input_fields:
|
||
- yaml_formula_ids
|
||
- code_text
|
||
- golden_test_text
|
||
expected_outputs:
|
||
- coverage_ratio
|
||
- orphan_code_formula_count
|
||
- unimplemented_rules
|
||
llm_allowed: cite_only
|
||
version: 2026-06-03_ORPHAN_RECONCILE
|
||
SHORT_INTEREST_RISK_GAUGE_V1:
|
||
purpose: '공매도잔고율 추세 + 공매도거래비중 + 상대수익률(섹터·지수 대비) + 거래량 이상 + 실적전망 5요소를 가중합성해 -1(매수지지)~+1(매도압력)
|
||
점수로 계량화한다. 잔고율 단독을 매수/매도 트리거로 쓰지 않으며, 잔고율이 1% 미만(현대로템형)인 저잔고율 종목은 거래비중·상대수익률
|
||
가중치를 자동 상향한다.
|
||
|
||
'
|
||
output_contract:
|
||
short_interest_composite_json:
|
||
fields: '[short_interest_pressure, status, low_balance_regime, label, components,
|
||
weights_used, missing_inputs]'
|
||
python_tool: src/quant_engine/qualitative_sell_strategy_v1.py:compute_short_interest_composite
|
||
version: 2026-06-21_PHASE8
|
||
QUALITATIVE_SELL_STRATEGY_V1:
|
||
purpose: '매크로(macro_pressure)·실적/펀더멘털 추세(fundamental_trajectory)·공매도수급 (short_interest_pressure)·호가
|
||
10단계 미시구조(microstructure_pressure)· 대내외 변수/대형 IPO·섹터 로테이션(liquidity_rotation_risk)
|
||
5개 독립 팩터군의 confluence(최소 3/5 동일방향 합의)로만 매도/보유/추가 확신도를 산출한다. 단일 팩터 임계값 돌파만으로는
|
||
행동을 트리거하지 않는다(기계적 매도 금지). 현금부족 사유는 입력에서 의도적으로 배제되며(cash_shortfall_excluded=true),
|
||
주식가치 보존이 유일한 목적함수다. 매도/추가 판단 시 실제 실적발표일·고영향 매크로 이벤트일 기준으로 검토구간(review_window)을
|
||
역산한다(임의 고정일 금지). market_regime(PERFORMANCE_MARKET/TECHNICAL_MARKET)이 ctx.rate_trend로
|
||
주어지면 금리국면에 따라 팩터 가중치를 조정한다(MARKET_REGIME_CLASSIFIER_V1).
|
||
|
||
'
|
||
output_contract:
|
||
qualitative_sell_strategy_json:
|
||
fields: '[action, conviction, market_regime, composite_score, sell_agreeing_factors,
|
||
hold_add_agreeing_factors, missing_factors, review_window, rationale,
|
||
cash_shortfall_excluded, mechanical_sell_prohibited]'
|
||
python_tool: src/quant_engine/qualitative_sell_strategy_v1.py:compute_qualitative_sell_strategy
|
||
version: 2026-06-21_PHASE8
|
||
MARKET_REGIME_CLASSIFIER_V1:
|
||
purpose: '금리 추세(rate_trend: RISING/FLAT/FALLING)를 실적장세(PERFORMANCE_MARKET)/
|
||
기술장세(TECHNICAL_MARKET)로 분류한다. 금리 상승기엔 유동성보다 실적·수출입 펀더멘털이 가격을 주도(실적장세) — fundamental_trajectory
|
||
가중 상향. 금리 보합·하락기엔 유동성이 풍부해 수급·미시구조가 가격을 주도(기술장세) — microstructure_pressure/short_interest_pressure
|
||
가중 상향. QUALITATIVE_SELL_STRATEGY_V1·SATELLITE_CANDIDATE_SCORE_V1의 가중치 산출에
|
||
사용.
|
||
|
||
'
|
||
output_contract:
|
||
market_regime_json:
|
||
fields: '[market_regime]'
|
||
python_tool: src/quant_engine/qualitative_sell_strategy_v1.py:classify_market_regime
|
||
version: 2026-06-21_PHASE8
|
||
MICROSTRUCTURE_PRESSURE_FROM_ORDERBOOK_V1:
|
||
purpose: 'KIS Open API 호가10단계(inquire-asking-price-exp-ccn, FHKST01010200) output1의
|
||
total_askp_rsqn/total_bidp_rsqn으로 -1(매수우위)~+1(매도우위) 미시구조 압력을 계량화. QUALITATIVE_SELL_STRATEGY_V1의
|
||
microstructure_pressure 입력으로 쓰이며, 전략 방향 결정이 아니라 confluence 성립 후 집행 타이밍 보조로만
|
||
사용한다. [CRITICAL] 이 공식이 사용하는 KIS API는 조회(read-only)만 수행 — governance/rules/06_no_direct_api_trading.yaml,
|
||
07_no_kis_account_balance_query.yaml.
|
||
|
||
'
|
||
output_contract:
|
||
microstructure_pressure_json:
|
||
fields: '[microstructure_pressure, status, total_askp_rsqn, total_bidp_rsqn]'
|
||
python_tool: src/quant_engine/qualitative_sell_strategy_v1.py:compute_microstructure_pressure_from_orderbook
|
||
version: 2026-06-21_PHASE8
|
||
SATELLITE_CANDIDATE_SCORE_V1:
|
||
purpose: '미보유 위성 유니버스 종목을 섹터 수출입 추세(sector_export_trend, 관세청/산업 통상부 무역통계 기반)·펀더멘털
|
||
추세·상대수익률로 평가해 BUY_CANDIDATE/WATCH/ NEUTRAL_NO_EDGE/AVOID를 산출한다. market_regime에
|
||
따라 수출입 비중을 조정 (실적장세에서 sector_export_trend 가중 상향).
|
||
|
||
'
|
||
output_contract:
|
||
satellite_candidate_json:
|
||
fields: '[satellite_action, attractiveness_score, market_regime, components,
|
||
weights_used]'
|
||
python_tool: src/quant_engine/qualitative_sell_strategy_v1.py:compute_satellite_candidate_score
|
||
version: 2026-06-21_PHASE8
|