schema_version: formula_domain.v1 source: C:\Temp\data_feed\spec\13_formula_registry.yaml domain: risk formulas: PEG_SCORE_V1: purpose: 코스닥 종목의 ForwardPER을 EPS 3개년 성장률로 나눠 밸류에이션 타당성 판정. 고PER이라도 고성장이 뒷받침되면 허용. applicable: 코스닥 상장 종목에만 실행. KOSPI 종목은 이 공식 미적용. inputs: - field: forward_pe unit: ratio source: spec/12_field_dictionary.yaml:field_dictionary.forward_pe - field: eps_growth_3y_cagr_pct unit: percent source: '컨센서스 3개년 EPS CAGR (예: 30% → 30 입력)' - field: sector_median_forward_pe unit: ratio source: spec/12_field_dictionary.yaml:field_dictionary.sector_median_forward_pe derived_fields: peg: forward_pe / eps_growth_3y_cagr_pct rules: - if: peg <= 1.5 result: PASS valuation_gate: OK quantity_modifier: 1.0 - if: 1.5 < peg <= 2.5 result: CAUTION valuation_gate: CAUTION quantity_modifier: 0.7 - if: peg > 2.5 result: REJECT valuation_gate: REJECT quantity_modifier: 0.0 fallback: condition: eps_growth_3y_cagr_pct == DATA_MISSING OR eps_growth_3y_cagr_pct <= 0 rules: - if: forward_pe <= sector_median_forward_pe * 2.0 result: PASS quantity_modifier: 1.0 - if: forward_pe <= sector_median_forward_pe * 3.0 result: CAUTION quantity_modifier: 0.7 - if: forward_pe > sector_median_forward_pe * 3.0 result: REJECT quantity_modifier: 0.0 prohibition: EPS 성장률 추정·보간으로 PEG 계산 금지 — 확정 컨센서스 없으면 fallback만 허용 output: field: peg_gate_result unit: enum [PASS, CAUTION, REJECT] required_fields: - peg - peg_gate_result - quantity_modifier - valuation_gate missing_policy: forward_pe: fallback 규칙 적용. DATA_MISSING 표기. sector_median_forward_pe: fallback 분자 기준 미산출 → CAUTION 보수 처리. canonical_ref: spec/strategy/stock_model.yaml:stock_model.kosdaq_valuation_gate owner: quant_team lifecycle_state: active input_fields: - forward_pe - eps_growth_3y_cagr_pct - sector_median_forward_pe output_fields: - peg_gate_result golden_cases: [] activation_threshold: min_t20_sample: 30 retirement_condition: performance_degradation FINANCIAL_HEALTH_SCORE_V1: purpose: 'ROE·영업이익률·부채비율·FCF를 결합해 종목의 재무 건전성을 0~20점으로 정량화. 수급·모멘텀 중심 편향을 보완하는 펀더멘털 축. 연간 기준 재무 데이터 사용. ' inputs: - field: roe_pct unit: percent optional: true - field: operating_margin_pct unit: percent optional: true - field: debt_to_equity unit: ratio optional: true - field: fcf_b unit: KRW_100M optional: true - field: sector_type unit: enum optional: true note: 금융업(financial) 여부 — D/E 스코어링 건너뜀 판단 components: profitability: max_points: 8 source_field: roe_pct rules: - if: roe_pct >= 15 points: 8 - if: 10 <= roe_pct < 15 points: 5 - if: 5 <= roe_pct < 10 points: 2 - if: 0 <= roe_pct < 5 points: 0 - if: roe_pct < 0 points: -5 label: 수익성_훼손_페널티 missing_rule: 4pt 중립 처리 (DATA_MISSING_PROFITABILITY 태그) operating_efficiency: max_points: 7 source_field: operating_margin_pct rules: - if: operating_margin_pct >= 20 points: 7 - if: 10 <= operating_margin_pct < 20 points: 4 - if: 0 <= operating_margin_pct < 10 points: 2 - if: operating_margin_pct < 0 points: 0 label: 영업적자_HF007_발동 missing_rule: 3pt 중립 처리 financial_stability: max_points: 5 source_field: debt_to_equity financial_sector_skip: true rules: - if: debt_to_equity < 50 points: 5 - if: 50 <= debt_to_equity < 100 points: 3 - if: 100 <= debt_to_equity < 200 points: 1 - if: 200 <= debt_to_equity <= 400 points: 0 - if: debt_to_equity > 400 points: 0 label: 극단_부채_HF008_발동 missing_rule: 2pt 중립 처리 cash_generation: max_points: 5 source_field: fcf_b rules: - if: fcf_b > 0 points: 5 label: 현금_창출 - if: fcf_b <= 0 points: 0 label: 현금_소각_또는_부재 missing_rule: 2pt 중립 처리 expression: "clamp(\n profitability_pts + operating_efficiency_pts +\n financial_stability_pts\ \ + cash_generation_pts,\n min=-5, max=20\n)\n" output: field: financial_health_score unit: points_neg5_to_20 score_interpretation: 18_to_20: 재무 최우량 — ROE 높고 부채 낮고 FCF 창출 12_to_17: 재무 양호 6_to_11: 재무 보통 — 일부 약점 존재 0_to_5: 재무 취약 — 수급 강세여도 진입 신중 negative: 재무 훼손 — 영업적자 또는 ROE 음수. 수급 점수 불문 등급 하향 압력 missing_policy: all_inputs_missing: 'financial_health_score = 8pt (전체 중립). DATA_MISSING_FHS 태그 필수. 재무 데이터 미제공 자체를 패널티로 처리하지 않음. 단, 코스닥 종목은 all_missing 시 6pt (더 보수적) 적용. ' partial_missing: 각 컴포넌트별 missing_rule 적용 후 합산 sector_exception: financial_sector: definition: 은행·보험·증권·카드·캐피탈·리츠 등 금융업 SIC 분류 treatment: 'debt_to_equity 컴포넌트 건너뜀. financial_stability_pts = 3pt 기본값. ROE·Operating_Margin·FCF 컴포넌트는 동일 적용. ' canonical_ref: spec/08_scoring_rules.yaml:strategy_score.financial_health version: 2026-05-18_FINANCIAL_HEALTH_V1 owner: quant_team lifecycle_state: active input_fields: - roe_pct - operating_margin_pct - debt_to_equity - fcf_b - sector_type output_fields: - financial_health_score golden_cases: [] activation_threshold: min_t20_sample: 30 retirement_condition: performance_degradation RS_MOMENTUM_V1: purpose: 상대강도(RS)와 수급 가속도를 측정하여 상투 진입 방지 및 후발주(Laggard) 조기 식별 inputs: - field: close_price unit: KRW_per_share - field: ma20 unit: KRW_per_share - field: avg_trade_value_5d unit: KRW - field: avg_trade_value_20d unit: KRW - field: relative_strength_1m_percentile unit: percentile derived_fields: disparity_20d: close_price / ma20 momentum_acceleration: avg_trade_value_5d / avg_trade_value_20d rules: - if: disparity_20d > 1.15 action: TRIGGER_HF009_BLOCK label: 이격도_과열(상투) - if: momentum_acceleration < 0.8 AND close_price > ma20 action: TRIM_WARNING label: 수급_가속도_둔화(설거지_경계) - if: relative_strength_1m_percentile > 70 action: LAGGARD_SELL_PRIORITY_1 label: 상대강도_최하위(우선감축) output: field: alpha_shield_status unit: enum owner: quant_team lifecycle_state: active input_fields: - close_price - ma20 - avg_trade_value_5d - avg_trade_value_20d - relative_strength_1m_percentile output_fields: - alpha_shield_status missing_policy: DATA_MISSING. 계산 결과를 추정하지 않는다. golden_cases: [] activation_threshold: min_t20_sample: 30 retirement_condition: performance_degradation OVERSOLD_DELAY_V1: purpose: 현금 확보 시 '지하실 매도(패닉 셀)' 방지를 위한 데드캣 바운스 대기 알고리즘 inputs: - field: rsi_14 unit: points optional: true - field: current_price unit: KRW_per_share - field: cash_shortfall_krw unit: KRW rules: - condition: rsi_14 < 30 AND cash_shortfall_krw > 0 action: 전량 시장가 매도 금지. 25%만 TRIM 실행하고 잔여 수량은 단기 반등(+3% 이상) 시점까지 매도 유예. label: 과매도_분할탈출(Staged Exit) output: field: oversold_exit_strategy unit: string owner: quant_team lifecycle_state: active input_fields: - rsi_14 - current_price - cash_shortfall_krw output_fields: - oversold_exit_strategy missing_policy: DATA_MISSING. 계산 결과를 추정하지 않는다. golden_cases: [] activation_threshold: min_t20_sample: 30 retirement_condition: performance_degradation MEAN_REVERSION_GATE_V1: purpose: '주가가 MA20 대비 과도하게 상승하면 신규 매수를 하드 블록한다. 에너지 분산(Distribution) 구간에서의 추격 매수(상투 잡기)를 원천 봉쇄. ' applicable: 매수 주문 생성 전 항상 실행. inputs: - field: close_price unit: KRW_per_share - field: ma20 unit: KRW_per_share expression: deviation_ratio = close_price / ma20 output: field: deviation_ratio unit: ratio gates: - if: deviation_ratio >= 1.15 status: BUY_HARD_BLOCK rule_id: MRG001 note: HF009_OVEREXTENSION_BLOCK 연동 - if: 1.10 <= deviation_ratio < 1.15 status: BUY_CAUTION rule_id: MRG001_SOFT note: 과열 접근 -- 신규 매수 강도 축소 - if: deviation_ratio < 1.10 status: PASS missing_policy: ma20: MRG001 DATA_MISSING. MA20 데이터 필요. 매수 보류. canonical_ref: spec/08_scoring_rules.yaml:hard_filters.HF009_OVEREXTENSION_BLOCK version: 2026-05-19_ALPHA_SHIELD_V1 owner: quant_team lifecycle_state: active input_fields: - close_price - ma20 output_fields: - deviation_ratio golden_cases: [] activation_threshold: min_t20_sample: 30 retirement_condition: performance_degradation ECP_RISK_SCALE_V1: purpose: 총자산 곡선(Equity Curve) 모멘텀에 따른 리스크 예산 자동 조절 inputs: - field: total_asset unit: KRW - field: total_asset_ma10 unit: KRW note: 10일 자산 이동평균 rules: - if: total_asset < total_asset_ma10 action: RISK_BUDGET_HALVE label: 자산곡선_역배열_방어 - if: total_asset >= total_asset_ma10 action: RISK_BUDGET_NORMAL label: 자산곡선_정배열_정상 output: field: equity_curve_status unit: enum owner: quant_team lifecycle_state: active input_fields: - total_asset - total_asset_ma10 output_fields: - equity_curve_status missing_policy: DATA_MISSING. 계산 결과를 추정하지 않는다. golden_cases: [] activation_threshold: min_t20_sample: 30 retirement_condition: performance_degradation COMPOSITE_VERDICT_V1: purpose: 'SS001 등급(A/B/C/D)과 rs_verdict(LEADER/MARKET/LAGGARD/BROKEN/UNKNOWN)를 결합해 종목의 최종 포지션 판정을 내린다. LLM이 "좋아 보인다"류 언어적 판단으로 판정을 변경하는 것을 구조적으로 방지한다. ' applicable: _addTickerGates_ 내에서 SS001 계산 직후 실행. inputs: - field: ss001_grade unit: enum [A,B,C,D] - field: rs_verdict unit: enum [LEADER,MARKET,LAGGARD,BROKEN,UNKNOWN] matrix: 'GRADE LEADER MARKET LAGGARD BROKEN UNKNOWN A PRIME_CANDIDATE PRIME_CANDIDATE WATCH_CANDIDATE EXIT_REVIEW WATCH_CANDIDATE B PRIME_CANDIDATE WATCH_CANDIDATE REDUCE_CANDIDATE EXIT_REVIEW WATCH_CANDIDATE C WATCH_CANDIDATE REDUCE_CANDIDATE REDUCE_CANDIDATE CLOSE_POSITION REDUCE_CANDIDATE D REDUCE_CANDIDATE REDUCE_CANDIDATE CLOSE_POSITION CLOSE_POSITION REDUCE_CANDIDATE ' output: field: composite_verdict unit: enum [PRIME_CANDIDATE, WATCH_CANDIDATE, REDUCE_CANDIDATE, EXIT_REVIEW, CLOSE_POSITION] action_guidance: PRIME_CANDIDATE: 코어 유지·추가. RAG_V1 PASS 시 위성 추가 허용. WATCH_CANDIDATE: 현재 비중 유지. 추가매수 보류. REDUCE_CANDIDATE: 분할 축소. 5% 이상 비중이면 TRIM 실행. EXIT_REVIEW: 다음 반등 시 전량 매도 준비. CLOSE_POSITION: 즉시 정리. calcFinalDecision_ SELL 강제 검토. missing_policy: ss001_grade: composite_verdict = WATCH_CANDIDATE (보수적) rs_verdict: UNKNOWN 컬럼으로 처리 ground_truth: harness llm_allowed: cite_only prohibition: - composite_verdict = CLOSE_POSITION인 종목을 LLM이 'HOLD도 무방'으로 서술 금지 - composite_verdict 없이 종목 정리 우선순위 결정 금지 canonical_ref: spec/13_formula_registry.yaml:RS_VERDICT_V1 version: 2026-05-21_CLA_HARNESS_V1 owner: quant_team lifecycle_state: active input_fields: - ss001_grade - rs_verdict output_fields: - composite_verdict golden_cases: [] activation_threshold: min_t20_sample: 30 retirement_condition: performance_degradation BENCHMARK_RELATIVE_TIMESERIES_V1: purpose: '종목을 KOSPI 기준 시계열로 평가해 초과낙폭, 반등 회복률, 하락장 베타, RS선 기울기와 brt_verdict를 결정론적으로 산출한다. LLM은 값 인용만 가능하다. ' applicable: _addTickerGates_에서 RS_VERDICT_V2 이전 실행. 과거 가격 배열이 없으면 RET20/RET60 기반 프록시임을 method에 남긴다. inputs: - field: price.ret5D unit: pct - field: price.ret20D unit: pct - field: price.ret60D unit: pct - field: price.close unit: KRW_per_share - field: high52w unit: KRW_per_share optional: true - field: globalKospiRet5D_ unit: pct - field: globalKospiRet20D_ unit: pct - field: globalKospiRet60D_ unit: pct - field: globalKospiDrawdown_ unit: pct derived: stock_drawdown_from_high_pct: if high52W>0 then max(0,(1-close/high52W)*100) else null excess_drawdown_pctp: stock_drawdown_from_high_pct - globalKospiDrawdown_ recovery_ratio_5d: price.ret5D / globalKospiRet5D_ if globalKospiRet5D_ > 0 else null recovery_ratio_20d: price.ret20D / globalKospiRet20D_ if globalKospiRet20D_ > 0 else null downside_beta: price.ret20D / globalKospiRet20D_ if globalKospiRet20D_ < 0 else null rs_ratio_5d: price.ret5D / globalKospiRet5D_ if globalKospiRet5D_ != 0 else null rs_ratio_20d: price.ret20D / globalKospiRet20D_ if globalKospiRet20D_ != 0 else null rs_ratio_60d: price.ret60D / globalKospiRet60D_ if globalKospiRet60D_ != 0 else null rs_line_20d_slope: (rs_ratio_20d - rs_ratio_5d) / 15 if both available else (ret20D - k20) / 20 rs_line_60d_slope: (rs_ratio_60d - rs_ratio_20d) / 40 if both available else (ret60D - k60) / 60 brt_method: RS_RATIO_MULTI_WINDOW_PROXY if rs_ratio_5d and rs_ratio_20d available else PROXY_FROM_RET20_RET60 verdict_table: LEADER: excess_drawdown_pctp <= 0 AND recovery_ratio_20d >= 1.20 AND rs_line_20d_slope > 0 MARKET: excess_drawdown_pctp between -5 and 5 AND recovery_ratio_20d between 0.80 and 1.20 LAGGARD: excess_drawdown_pctp >= 5 OR recovery_ratio_20d < 0.80 OR rs_line_20d_slope < 0 BROKEN: excess_drawdown_pctp >= 10 AND (recovery_ratio_20d < 0.50 OR rs_line_60d_slope < 0) output: fields: - stock_drawdown_from_high_pct - excess_drawdown_pctp - recovery_ratio_5d - recovery_ratio_20d - downside_beta - rs_ratio_5d - rs_ratio_20d - rs_ratio_60d - rs_line_20d_slope - rs_line_60d_slope - brt_verdict - brt_method missing_policy: 필수 KOSPI 또는 종목 수익률 누락 시 brt_verdict=UNKNOWN, LLM 대체 계산 금지. ground_truth: harness llm_allowed: cite_only prohibition: - LLM이 excess_drawdown/recovery_ratio/downside_beta/rs_slope를 직접 계산 금지 - brt_verdict=BROKEN 종목을 낙폭과대 매수 기회로 서술 금지 version: 2026-05-21_BRT_V1_C2 owner: quant_team lifecycle_state: active input_fields: - price.ret5D - price.ret20D - price.ret60D - price.close - high52w - globalKospiRet5D_ - globalKospiRet20D_ - globalKospiRet60D_ - globalKospiDrawdown_ output_fields: [] golden_cases: [] activation_threshold: min_t20_sample: 30 retirement_condition: performance_degradation RS_VERDICT_V2: purpose: RS_VERDICT_V1과 BENCHMARK_RELATIVE_TIMESERIES_V1의 brt_verdict를 보수적으로 융합한다. applicable: BRT_V1 직후. 기존 rs_verdict 필드명은 최종 V2 결과로 유지하고 rs_verdict_v1_raw를 감사용 보존. inputs: - field: rs_verdict_v1_raw unit: enum - field: brt_verdict unit: enum [LEADER,MARKET,LAGGARD,BROKEN,UNKNOWN] fusion_logic: BROKEN: rs_verdict_v1_raw=BROKEN OR brt_verdict=BROKEN LAGGARD: rs_verdict_v1_raw=LAGGARD OR brt_verdict=LAGGARD, 단 BROKEN 아님 LEADER: rs_verdict_v1_raw=LEADER AND brt_verdict=LEADER MARKET: 그 외 special_cases: - brt_verdict=LEADER AND rs_verdict_v1_raw=LAGGARD -> MARKET - brt_verdict=BROKEN AND rs_verdict_v1_raw=LEADER -> LAGGARD output: field: rs_verdict additional_fields: - rs_verdict_v1_raw - rs_verdict_source ground_truth: harness llm_allowed: cite_only version: 2026-05-21_RS_VERDICT_V2 owner: quant_team lifecycle_state: active input_fields: - rs_verdict_v1_raw - brt_verdict output_fields: - rs_verdict missing_policy: DATA_MISSING. 계산 결과를 추정하지 않는다. golden_cases: [] activation_threshold: min_t20_sample: 30 retirement_condition: performance_degradation SATELLITE_AGGREGATE_PNL_GATE_V1: purpose: 위성 합산 평가손익이 코어 수익을 잠식하는 정도를 추적해 위성 전략 실패를 감지한다. inputs: - field: position_class unit: enum [core,satellite] - field: profit_loss unit: KRW computed: core_total_pnl_krw: sum(profit_loss for core) satellite_total_pnl_krw: sum(profit_loss for satellite) satellite_loss_to_core_gain_ratio: abs(min(0,satellite_total_pnl_krw)) / max(core_total_pnl_krw,1) gates: PASS: ratio < 0.25 SAPG_ALERT: 0.25 <= ratio < 0.50 SAPG_CRITICAL: ratio >= 0.50 output: field: sapg_status additional_fields: - core_total_pnl_krw - satellite_total_pnl_krw - satellite_loss_to_core_gain_ratio ground_truth: harness llm_allowed: cite_only version: 2026-05-21_SAPG_V1 owner: quant_team lifecycle_state: active input_fields: - position_class - profit_loss output_fields: - sapg_status missing_policy: DATA_MISSING. 계산 결과를 추정하지 않는다. golden_cases: [] activation_threshold: min_t20_sample: 30 retirement_condition: performance_degradation HARNESS_DATA_FRESHNESS_GATE_V1: purpose: 'harness_context 주요 입력 데이터의 영업일 기준 신선도를 검증한다. 신선도 부족 시 BRT/SAPG/SAQG 결과의 신뢰도 등급을 자동 하향하고 STALE_BLOCK 상태에서 HTS 주문표 생성을 차단한다. ' applicable: buildHarnessContext_ 가장 먼저 실행 (모든 공식 선행). inputs: - field: metadata.generated_at unit: datetime - field: metadata.market_date unit: date - field: today_date unit: date computed: data_age_business_days: business_days_diff(today_date, metadata.market_date) freshness_status: FRESH: condition: data_age_business_days <= 1 note: 정상 STALE_1D: condition: data_age_business_days == 2 harness_impact: brt_method에 STALE_1D 태그 STALE_WARN: condition: data_age_business_days IN [3,4] harness_impact: brt_verdict LOW, ELIGIBLE -> WATCHLIST_ONLY STALE_BLOCK: condition: data_age_business_days >= 5 harness_impact: brt_verdict=DATA_STALE_BLOCKED, HTS 주문표 생성 금지 output: field: data_freshness_status additional_fields: - data_age_business_days - freshness_degraded_gates ground_truth: harness llm_allowed: cite_only prohibition: - STALE_BLOCK 상태에서 BRT 결과로 주문 생성 금지 - LLM이 신선도를 임의 판단하거나 사용 가능으로 완화 금지 version: 2026-05-21_HDFG_V1 owner: quant_team lifecycle_state: active input_fields: - metadata.generated_at - metadata.market_date - today_date output_fields: - data_freshness_status missing_policy: DATA_MISSING. 계산 결과를 추정하지 않는다. golden_cases: [] activation_threshold: min_t20_sample: 30 retirement_condition: performance_degradation INTRADAY_ACTION_MATRIX_V1: purpose: '장중 시각(capture_time)에 따라 허용·금지 액션을 테이블로 고정한다. 09:31 캡처임에도 전체 주간 전략 출력(E4 오류) 재발 방지. ' applicable: DETERMINISTIC_ROUTING_ENGINE_V1 STAGE 1. capture_time 확정 직후. inputs: - field: capture_time unit: HH:MM note: account_snapshot에서 자동 추출 - field: market_date unit: date time_slot_table: 09:00-09:30: label: OPEN_AUCTION allowed_actions: - WATCH_ONLY blocked_actions: - BUY - SELL - TRIM 09:30-10:30: label: EARLY_SESSION allowed_actions: - TRIM_ONLY blocked_actions: - BUY - SELL_ALL note: OVERSOLD_REBOUND_SELL 제외 10:30-14:00: label: MID_SESSION allowed_actions: - TRIM - STAGED_SELL - WATCH blocked_actions: - BUY_NEW - SELL_ALL 14:00-15:00: label: LATE_SESSION allowed_actions: - TRIM - STAGED_SELL blocked_actions: - BUY_NEW - SELL_ALL 15:00-15:20: label: PRE_CLOSE allowed_actions: - TRIM_ONLY blocked_actions: - BUY - SELL_ALL 15:20-15:30: label: CLOSE_VERIFY allowed_actions: - ALL_ACTIONS_ALLOWED blocked_actions: [] note: 종가 근처 재검증 후 실행. 모든 액션 허용. 15:30+: label: POST_MARKET allowed_actions: - REBALANCING_REVIEW - NEXT_DAY_PLAYBOOK blocked_actions: - HTS_IMMEDIATE_EXECUTION BEFORE_MARKET: label: PRE_MARKET allowed_actions: - PLAYBOOK_DRAFT blocked_actions: - HTS_IMMEDIATE_EXECUTION output: fields: - field: time_slot_label unit: enum - field: allowed_intraday_actions unit: list - field: blocked_intraday_actions unit: list ground_truth: harness llm_allowed: cite_only prohibition: - allowed_intraday_actions[]에 없는 주문 유형을 보고서에 생성 금지 - 09:00-10:30 캡처 시 BUY/SELL_ALL 주문표 생성 금지 - TRIM_ONLY 구간에서 주간 전략·종가 예측 등 전체 보고서 출력 금지 — 해당 섹션은 '15:20 재실행 예정' 표기 canonical_ref: AGENTS.md:Direction A3, Direction 0(장중 제약) version: 2026-05-22_3RD_HARNESS owner: quant_team lifecycle_state: active input_fields: - capture_time - market_date output_fields: [] missing_policy: DATA_MISSING. 계산 결과를 추정하지 않는다. golden_cases: [] activation_threshold: min_t20_sample: 30 retirement_condition: performance_degradation ANTI_CHASING_VELOCITY_V1: purpose: '가격 상승 속도가 국면별 임계값 초과 시 BUY를 결정론적으로 차단한다. N2(거래량 확인)만으로는 막지 못하는 속도 기반 뒷박 매수 원천 차단. ' applicable: _addTickerGates_ 내 alpha_lead_score 산출 직후. inputs: - field: close unit: KRW_per_share - field: close_1d_ago unit: KRW_per_share - field: close_5d_ago unit: KRW_per_share - field: market_regime unit: enum computed: velocity_1d: (close - close_1d_ago) / close_1d_ago * 100 velocity_5d: (close - close_5d_ago) / close_5d_ago * 100 thresholds_by_regime: EVENT_SHOCK: v1d_max: 2 v5d_max: 5 verdict: BLOCK_CHASE_SHOCK RISK_OFF: v1d_max: 3 v5d_max: 7 verdict: BLOCK_CHASE_RISKOFF NEUTRAL: v1d_max: 4 v5d_max: 9 verdict: WARN_CHASE_NEUTRAL RISK_ON: v1d_max: 5 v5d_max: 12 verdict: WARN_CHASE_RISKON CLA: v1d_max: 6 v5d_max: 15 verdict: WARN_CHASE_CLA actions: BLOCK_CHASE: BUY 금지. alpha_lead_score에 -15 페널티 적용. WARN_CHASE: BUY 주문표에 '속도 추격 경고 — 풀백 대기 권고' 표기. CLEAR: 정상. 속도 기반 차단 없음. output: field: anti_chasing_velocity_status values: - BLOCK_CHASE_SHOCK - BLOCK_CHASE_RISKOFF - WARN_CHASE_NEUTRAL - WARN_CHASE_RISKON - WARN_CHASE_CLA - CLEAR additional_fields: - velocity_1d - velocity_5d - velocity_penalty_applied ground_truth: harness llm_allowed: cite_only prohibition: - BLOCK_CHASE 상태에서 '분위기 좋으니 추격 매수 괜찮다' 우회 서술 금지 - LLM이 velocity 직접 계산 금지 — 하네스 산출값만 인용 canonical_ref: AGENTS.md:Direction B1 version: 2026-05-22_3RD_HARNESS owner: quant_team lifecycle_state: active input_fields: - close - close_1d_ago - close_5d_ago - market_regime output_fields: - anti_chasing_velocity_status missing_policy: DATA_MISSING. 계산 결과를 추정하지 않는다. golden_cases: [] activation_threshold: min_t20_sample: 30 retirement_condition: performance_degradation DETERMINISTIC_ROUTING_ENGINE_V1: purpose: '"LLM이 먼저 판단 → 하네스가 검증" 구조를 역전. 9단계 라우팅을 고정 순서로 실행하고 LLM은 최종 결과의 보고관으로만 동작. 라우팅 단계 건너뜀 및 순서 변경 절대 금지. ' applicable: 모든 분석 보고서 생성 최선행. STAGE 0부터 순서대로 실행. inputs: - field: harness_context unit: json note: 전체 하네스 컨텍스트 — 모든 STAGE 결과 포함 output: field: routing_execution_log schema: - stage: int status: PASS|BLOCKED|SKIPPED output_key: string elapsed_ms: int routing_stages: STAGE_0: name: HARNESS_DATA_FRESHNESS_GATE_V1 action: STALE_BLOCK → 즉시 중단. 보고서 생성 금지. 데이터 갱신 요청만 출력. STAGE_1: name: INTRADAY_ACTION_MATRIX_V1 action: capture_time 기반 허용·금지 액션 테이블 확정. TRIM_ONLY 구간이면 간소화 모드. STAGE_2: name: PORTFOLIO_HEALTH_SCORE_V1 action: CRITICAL → 긴급 섹션 필수 출력 후 진행. STAGE_3: name: RISK_GATE_CHECKLIST (10개 순서 고정) gates: - cash_floor_status - heat_gate_status - drawdown_guard_state - portfolio_drawdown_gate - portfolio_beta_gate+PORTFOLIO_CORRELATION_GATE - sector_concentration_gate - semiconductor_cluster_gate - position_count_gate - win_loss_streak_state - single_position_weight_gate action: BLOCK 있으면 blocked_actions[] 업데이트. STAGE_4: name: SELL_GATE_CHECKLIST (5개) gates: - stop_breach_gate - tp_trigger_gate - DISTRIBUTION_SELL_DETECTOR_V1 - heat_concentration_gate - regime_transition_type action: sell_priority_decision_table 생성 (독립 표 필수). STAGE_5: name: CASH_RECOVERY (OPTIMIZER + WATERFALL) action: CASH_RECOVERY_OPTIMIZER_V1 → SELL_WATERFALL_ENGINE_V1 → SELL_PRICE_SANITY_V1. STAGE_6: name: BUY_SCREENING (6개 순서 고정) gates: - ANTI_CHASING_VELOCITY_V1 - PULLBACK_ENTRY_TRIGGER_V1 - N2_VOLUME_BREAKOUT - K1_TRANCHE - RAG+SFG+SATELLITE_LIFECYCLE - SECTOR_ROTATION+PRE_DISTRIBUTION action: buy_candidates_json 확정. STAGE_7: name: QUANTITY_FINALIZATION action: ATR20 기반 atr_qty → regime_size_scale × drawdown_buy_scale → TP_QUANTITY_LADDER → SELL_PRICE_SANITY 재검증. STAGE_8: name: SHADOW_LEDGER_SEPARATION action: PASS → HTS 주문표. 비PASS → Shadow Ledger (I4 컬럼명 규칙). STAGE_9: name: REPORT_ASSEMBLY (LLM) action: 하네스 결과를 정해진 양식으로 서술. 숫자 1원·1주 변경 금지. LLM_SERVING_CONSTRAINT_V1 적용. ground_truth: harness llm_allowed: STAGE_9 보고서 작성만 허용 prohibition: - STAGE 건너뜀 금지 - STAGE_0 STALE_BLOCK 시 전체 보고서 생성 금지 - STAGE_9에서 LLM이 숫자 변경 금지 — 보고관(Clerk)으로만 동작 canonical_ref: AGENTS.md:Direction D1, Direction Q(QEH) version: 2026-05-22_3RD_HARNESS owner: quant_team lifecycle_state: active input_fields: - harness_context output_fields: - routing_execution_log missing_policy: DATA_MISSING. 계산 결과를 추정하지 않는다. golden_cases: [] activation_threshold: min_t20_sample: 30 retirement_condition: performance_degradation LLM_SERVING_CONSTRAINT_V1: purpose: 'LLM이 보고서 작성 시 침범 금지 영역 8개를 명시적으로 잠금. HS011 확장판. 30년 실전 전문가의 정밀도는 자유로운 해석이 아닌 규칙 준수에서 나온다. ' applicable: DETERMINISTIC_ROUTING_ENGINE_V1 STAGE_9 진입 직전 검사. inputs: - field: harness_context unit: json note: LLM 보고서 생성 전 전체 컨텍스트 검사 output: field: serving_constraint_check schema: violations_detected: list [FB_code] allowed_actions_taken: list [AL_code] forbidden_actions: FB1: 가격·수량 즉석 계산 → DATA_MISSING 표기만 허용 (HS011) FB2: 하네스 판정 '이번만 예외' 번복 FB3: '''분위기가 좋으니'' 류 감성 서술로 BLOCK 우회' FB4: rule_id 없는 판단 서술 (근거 공식 ID 없이 결론 금지) FB5: 매수와 매도를 같은 문단에 연결 서술 (BRT3 재투자 연결 금지) FB6: 목표 달성률 압박으로 리스크 게이트 완화 서술 (M4 압박 금지) FB7: 외부 웹 데이터로 prices_json 덮어쓰기 (G3 외부 격리) FB8: 손절가·익절가 null인 종목에 '보유 유지' 단독 서술 allowed_roles: AL1: 하네스 결과의 '왜 이 점수인가?' 배경 설명 AL2: 뉴스·이벤트·섹터 흐름 질적 리스크 합성 AL3: '''만약 반도체가 추가 하락하면...'' 시나리오 제시' AL4: N4 HOLDING_STALE_REVIEW 연동 보유 근거 재확인 ground_truth: harness llm_allowed: cite_only prohibition: - 8개 금지 영역은 어떤 조건에서도 침범 불가 - '위반 항목은 ''[LLM_SERVING_CONSTRAINT: FB{N} 위반]''으로 보고서에 표시' canonical_ref: AGENTS.md:Direction D2, Direction Q(QEH), HS011 version: 2026-05-22_3RD_HARNESS owner: quant_team lifecycle_state: active input_fields: - harness_context output_fields: - serving_constraint_check missing_policy: DATA_MISSING. 계산 결과를 추정하지 않는다. golden_cases: [] activation_threshold: min_t20_sample: 30 retirement_condition: performance_degradation HORIZON_ALLOCATION_LOCK_V1: purpose: 단기/중기/장기 투자 버킷별 비중 상한을 적용해 기간 혼재와 과집중을 차단. inputs: - field: invest_horizon unit: enum optional: true - field: market_value_krw unit: KRW optional: true - field: total_asset_krw unit: KRW output: field: horizon_allocation_json llm_allowed: cite_only version: 2026-05-25_PROPOSAL53 owner: quant_team lifecycle_state: active input_fields: - invest_horizon - market_value_krw - total_asset_krw output_fields: - horizon_allocation_json missing_policy: DATA_MISSING. 계산 결과를 추정하지 않는다. golden_cases: [] activation_threshold: min_t20_sample: 30 retirement_condition: performance_degradation FUNDAMENTAL_MULTI_FACTOR_SCORE_V2: purpose: 이익률/성장률/점유율/현금흐름/부채를 종합 점수화해 매수 허용을 잠금. inputs: - field: roe_pct unit: percent optional: true - field: opm_pct unit: percent optional: true - field: revenue_growth_pct unit: percent optional: true - field: op_income_growth_pct unit: percent optional: true - field: market_share_proxy_pct unit: percent optional: true - field: operating_cf_krw unit: KRW optional: true - field: free_cf_krw unit: KRW optional: true - field: debt_ratio_pct unit: percent optional: true output: field: fundamental_multifactor_json llm_allowed: cite_only version: 2026-05-25_PROPOSAL54 owner: quant_team lifecycle_state: active input_fields: - roe_pct - opm_pct - revenue_growth_pct - op_income_growth_pct - market_share_proxy_pct - operating_cf_krw - free_cf_krw - debt_ratio_pct output_fields: - fundamental_multifactor_json missing_policy: DATA_MISSING. 계산 결과를 추정하지 않는다. golden_cases: [] activation_threshold: min_t20_sample: 30 retirement_condition: performance_degradation MARKET_SHARE_MOMENTUM_PROXY_V1: purpose: 상대 성장/RS 기반 점유율 모멘텀 프록시를 산출해 공격 매수 여부를 잠금. inputs: - field: revenue_growth_pct unit: percent optional: true - field: alpha_lead_score unit: score optional: true output: field: market_share_proxy_json llm_allowed: cite_only version: 2026-05-25_PROPOSAL54 owner: quant_team lifecycle_state: active input_fields: - revenue_growth_pct - alpha_lead_score output_fields: - market_share_proxy_json missing_policy: DATA_MISSING. 계산 결과를 추정하지 않는다. golden_cases: [] activation_threshold: min_t20_sample: 30 retirement_condition: performance_degradation ROUTING_EXECUTION_LOG_TABLE_V1: purpose: 'DETERMINISTIC_ROUTING_ENGINE_V1 11단계(①CV-V2사전검증 ②데이터신선도 ③장중판별 ④포트폴리오상태 ⑤거시이벤트동기화 ⑥선제매도레이더 ⑦매수타이밍게이트 ⑧매도우선순위/현금확보 ⑨RS/위성품질 ⑩가격정규화/검증 ⑪LLM서빙)의 실행 로그를 표로 강제 출력한다. GAS 미보고 단계는 결정론 fallback으로 보강. 누락 단계 > 0이면 INCOMPLETE_ROUTING_LOG. ' inputs: - field: routing_execution_log unit: json - field: _harness_context unit: json output: field: routing_execution_log_v1_json expected_outputs: - gate - stage_coverage_pct - request_route llm_allowed: cite_only version: 2026-05-27_PHASE1 owner: quant_team lifecycle_state: active input_fields: - routing_execution_log - _harness_context output_fields: - routing_execution_log_v1_json missing_policy: DATA_MISSING. 계산 결과를 추정하지 않는다. golden_cases: [] activation_threshold: min_t20_sample: 30 retirement_condition: performance_degradation FUNDAMENTAL_RAW_INGEST_V1: purpose: 'data_feed(Forward_PE/PBR/EPS)와 네이버 금융 fallback을 통해 보유 종목의 펀더멘털 raw 지표를 수집하고 fundamental_raw_v1.json을 생성한다. ' output: field: fundamental_raw_v1_json expected_outputs: - gate - coverage_pct - non_etf_count llm_allowed: cite_only version: 2026-05-27_PHASE2 owner: quant_team lifecycle_state: active input_fields: [] output_fields: - fundamental_raw_v1_json missing_policy: DATA_MISSING. 계산 결과를 추정하지 않는다. golden_cases: [] activation_threshold: min_t20_sample: 30 retirement_condition: performance_degradation FUNDAMENTAL_MULTIFACTOR_V3: purpose: 'ROE(25) + OPM(20) + OCF(15) + FCF(15) + Debt(10) + Valuation(15) = 100점 6요소 결정론 공식으로 종목별 펀더멘털 등급을 산출한다. ETF는 별도 분류, 데이터 부족 시 보유 필드 기준 정규화 적용. ' output: field: fundamental_multifactor_v3_json expected_outputs: - gate - grade_diverse - non_etf_count llm_allowed: cite_only version: 2026-05-27_PHASE2 owner: quant_team lifecycle_state: active input_fields: [] output_fields: - fundamental_multifactor_v3_json missing_policy: DATA_MISSING. 계산 결과를 추정하지 않는다. golden_cases: [] activation_threshold: min_t20_sample: 30 retirement_condition: performance_degradation HORIZON_CLASSIFICATION_V1: purpose: '펀더멘털 등급 + 이격도 + ATR% + RSI14 기반으로 종목별 투자 기간을 분류한다. LONG/MID/SHORT/ETF/UNKNOWN 결정론 트리. HORIZON_ALLOCATION_LOCK_V1에 주입. ' output: field: horizon_classification_v1_json expected_outputs: - gate - classified_pct - allocation_pct llm_allowed: cite_only version: 2026-05-27_PHASE2 owner: quant_team lifecycle_state: active input_fields: [] output_fields: - horizon_classification_v1_json missing_policy: DATA_MISSING. 계산 결과를 추정하지 않는다. golden_cases: [] activation_threshold: min_t20_sample: 30 retirement_condition: performance_degradation SMART_MONEY_FLOW_SIGNAL_V2: purpose: 'Frg_5D/20D + Inst_5D/20D 백분위 기반으로 종목별 스마트머니 흐름을 산출한다. STRONG_INFLOW / INFLOW / NEUTRAL / OUTFLOW / STRONG_OUTFLOW 라벨 분산 강제. ' output: field: smart_money_flow_signal_v2_json expected_outputs: - gate - label_diversity - coefficient_of_variation llm_allowed: cite_only version: 2026-05-27_PHASE3 owner: quant_team lifecycle_state: active input_fields: [] output_fields: - smart_money_flow_signal_v2_json missing_policy: DATA_MISSING. 계산 결과를 추정하지 않는다. golden_cases: [] activation_threshold: min_t20_sample: 30 retirement_condition: performance_degradation GROWTH_RATE_SIGNAL_V1: purpose: 'EPS YoY / 매출 YoY 기반 성장률 시그널을 결정론적으로 산출한다. HYPER_GROWTH/GROWTH/FLAT/DECLINE/DATA_MISSING 라벨과 단/중/장기 horizon 적합도를 포함한다. ' output: field: growth_rate_signal_v1_json expected_outputs: - gate - label_counts - data_missing_pct llm_allowed: cite_only version: 2026-05-27_PHASE2B owner: quant_team lifecycle_state: active input_fields: [] output_fields: - growth_rate_signal_v1_json missing_policy: DATA_MISSING. 계산 결과를 추정하지 않는다. golden_cases: [] activation_threshold: min_t20_sample: 30 retirement_condition: performance_degradation MARKET_SHARE_SIGNAL_V2: purpose: '실매출 점유율 데이터 없는 환경에서 AvgTradeValue_20D_M 백분위 + 외인/기관 수급 + 20일 모멘텀 3중 프록시로 GAINING/STABLE/LOSING/NO_PEER_DATA를 산출한다. confidence는 항상 LOW(proxy 기반). 실데이터 확보 시 HIGH confidence로 업그레이드 예정. ' output: field: market_share_signal_v2_json expected_outputs: - gate - unique_states - non_etf_scored_count llm_allowed: cite_only version: 2026-05-27_PHASE2B owner: quant_team lifecycle_state: active input_fields: [] output_fields: - market_share_signal_v2_json missing_policy: DATA_MISSING. 계산 결과를 추정하지 않는다. golden_cases: [] activation_threshold: min_t20_sample: 30 retirement_condition: performance_degradation PREDICTION_ACCURACY_HARNESS_V2: purpose: '운영 T+1/T+5/T+20 일치율을 90/30/7일 회전 윈도로 산출. calibration_state: CALIBRATED/MONITOR/PAE_CALIBRATION_REQUIRED/BUY_PROPOSAL_FROZEN_RECOMMEND. ' output: file: Temp/prediction_accuracy_harness_v2.json expected_outputs: - calibration_state - t5_op_rate - t5_sample - window_90d_rate llm_allowed: cite_only version: 2026-05-28_PHASE4 owner: quant_team lifecycle_state: active input_fields: [] output_fields: [] missing_policy: DATA_MISSING. 계산 결과를 추정하지 않는다. golden_cases: [] activation_threshold: min_t20_sample: 30 retirement_condition: performance_degradation VELOCITY_V1: purpose: '1일/5일 가격 속도를 계산해 뒷박 추격 차단과 풀백 트리거의 입력으로 공급한다. ' inputs: - field: close_price unit: KRW_per_share - field: previous_close_price unit: KRW_per_share - field: ret5d unit: percent output: field: velocity_1d input_fields: - close - prevClose - ret5d expected_outputs: - velocity_1d - velocity_5d llm_allowed: cite_only version: 2026-05-30_PHASE8 owner: quant_team lifecycle_state: active output_fields: - velocity_1d missing_policy: DATA_MISSING. 계산 결과를 추정하지 않는다. golden_cases: [] activation_threshold: min_t20_sample: 30 retirement_condition: performance_degradation PROFIT_LOCK_STAGE_V1: purpose: '수익률 구간을 NORMAL/BREAKEVEN/PROFIT_LOCK/APEX 계열로 분류한다. ' inputs: - field: profit_pct unit: percent output: field: profit_lock_stage input_fields: - profit_pct expected_outputs: - stage llm_allowed: cite_only version: 2026-05-30_PHASE8 owner: quant_team lifecycle_state: active output_fields: - profit_lock_stage missing_policy: DATA_MISSING. 계산 결과를 추정하지 않는다. golden_cases: [] activation_threshold: min_t20_sample: 30 retirement_condition: performance_degradation SEMICONDUCTOR_CLUSTER_GATE_V1: purpose: '반도체 클러스터 집중도와 국면별 차단/감축 여부를 판단한다. ' inputs: - field: semiconductor_cluster_json unit: json - field: market_regime unit: enum output: field: semiconductor_cluster_gate input_fields: - combined_pct - market_regime expected_outputs: - semiconductor_cluster_gate - combined_pct llm_allowed: cite_only version: 2026-05-30_PHASE8 owner: quant_team lifecycle_state: active output_fields: - semiconductor_cluster_gate missing_policy: DATA_MISSING. 계산 결과를 추정하지 않는다. golden_cases: [] activation_threshold: min_t20_sample: 30 retirement_condition: performance_degradation ANTI_WHIPSAW_GATE_V1: purpose: '반등/조정 혼선 구간에서 설거지성 매수와 성급한 매도를 차단한다. ' inputs: - field: close_price unit: KRW_per_share - field: ma20 unit: KRW_per_share - field: rsi14 unit: points output: field: anti_whipsaw_status input_fields: - close - ma20 - rsi14 expected_outputs: - anti_whipsaw_status llm_allowed: cite_only version: 2026-05-30_PHASE8 owner: quant_team lifecycle_state: active output_fields: - anti_whipsaw_status missing_policy: DATA_MISSING. 계산 결과를 추정하지 않는다. golden_cases: [] activation_threshold: min_t20_sample: 30 retirement_condition: performance_degradation BREAKEVEN_RATCHET_V1: purpose: '손익분기 이상 구간에서 손절선을 평단 이상으로 올리는 래칫을 산출한다. ' inputs: - field: average_cost unit: KRW_per_share - field: highest_price_since_entry unit: KRW_per_share output: field: breakeven_stop_price input_fields: - average_cost - highest_close expected_outputs: - breakeven_stop_price llm_allowed: cite_only version: 2026-05-30_PHASE8 owner: quant_team lifecycle_state: active output_fields: - breakeven_stop_price missing_policy: DATA_MISSING. 계산 결과를 추정하지 않는다. golden_cases: [] activation_threshold: min_t20_sample: 30 retirement_condition: performance_degradation CAPITAL_STYLE_ALLOCATION_V1: purpose: '투자성향별 자금 유동성/공격성 가중치와 conviction을 산출한다. ' inputs: - field: smart_money_flow_signal_v2_json unit: json - field: fundamental_multifactor_v3_json unit: json - field: macro_event_ticker_impact_v1_json unit: json - field: liquidity_flow_signal_v1_json unit: json output: field: capital_style_conviction input_fields: - investor_style - liquidity_profile expected_outputs: - capital_style_conviction - capital_style_label llm_allowed: cite_only version: 2026-05-30_PHASE8 owner: quant_team lifecycle_state: active output_fields: - capital_style_conviction missing_policy: DATA_MISSING. 계산 결과를 추정하지 않는다. golden_cases: [] activation_threshold: min_t20_sample: 30 retirement_condition: performance_degradation ARTIFACT_FRESHNESS_GATE_V1: purpose: '하네스 산출물의 타임스탬프를 검증해 신선도 게이트를 산출한다. ' input_fields: - artifact_timestamp - max_age_hours expected_outputs: - freshness_gate - stale_artifacts llm_allowed: cite_only version: 2026-06-03_ORPHAN_RECONCILE owner: quant_team lifecycle_state: active output_fields: [] missing_policy: DATA_MISSING. 계산 결과를 추정하지 않는다. golden_cases: [] activation_threshold: min_t20_sample: 30 retirement_condition: performance_degradation CANONICAL_ARTIFACT_RESOLVER_V1: purpose: '동일 의미의 중복 산출물 중 유일 출처를 지정해 단일 진실원장을 고정한다. ' input_fields: - artifact_key - candidate_paths expected_outputs: - canonical_path - duplicate_artifacts llm_allowed: cite_only version: 2026-06-03_ORPHAN_RECONCILE owner: quant_team lifecycle_state: active output_fields: [] missing_policy: DATA_MISSING. 계산 결과를 추정하지 않는다. golden_cases: [] activation_threshold: min_t20_sample: 30 retirement_condition: performance_degradation COMPLETION_GAP_V1: purpose: 'pass_100 기준 대비 미충족 항목과 격차를 정량화해 완료 갭 보고서를 산출한다. ' input_fields: - pass_100_criteria - current_metrics expected_outputs: - completion_gap_score - failed_criteria_list llm_allowed: cite_only version: 2026-06-03_ORPHAN_RECONCILE owner: quant_team lifecycle_state: active output_fields: [] missing_policy: DATA_MISSING. 계산 결과를 추정하지 않는다. golden_cases: [] activation_threshold: min_t20_sample: 30 retirement_condition: performance_degradation COMPREHENSIVE_PROPOSAL_V1: purpose: '매수·매도·보유·현금확보 전 섹션을 통합한 종합 제안서를 생성한다. ' input_fields: - buy_proposals - sell_proposals - portfolio_state expected_outputs: - comprehensive_proposal - proposal_id llm_allowed: cite_only version: 2026-06-03_ORPHAN_RECONCILE owner: quant_team lifecycle_state: active output_fields: [] missing_policy: DATA_MISSING. 계산 결과를 추정하지 않는다. golden_cases: [] activation_threshold: min_t20_sample: 30 retirement_condition: performance_degradation DATA_INTEGRITY_100_LOCK_V1: purpose: '핵심 데이터 필드의 정합성을 검증해 100% 잠금 게이트를 산출한다 (V2로 대체됨). ' input_fields: - harness_context_fields expected_outputs: - data_integrity_gate - integrity_violations llm_allowed: cite_only version: 2026-06-03_ORPHAN_RECONCILE owner: quant_team lifecycle_state: active output_fields: [] missing_policy: DATA_MISSING. 계산 결과를 추정하지 않는다. golden_cases: [] activation_threshold: min_t20_sample: 30 retirement_condition: performance_degradation DATA_INTEGRITY_100_LOCK_V2: purpose: '전 섹션 수치 일관성·출처 추적 가능성을 검증해 데이터 무결성 잠금을 산출한다. ' input_fields: - report_sections - source_paths expected_outputs: - data_integrity_score - integrity_gate llm_allowed: cite_only version: 2026-06-03_ORPHAN_RECONCILE owner: quant_team lifecycle_state: active output_fields: [] missing_policy: DATA_MISSING. 계산 결과를 추정하지 않는다. golden_cases: [] activation_threshold: min_t20_sample: 30 retirement_condition: performance_degradation DATA_INTEGRITY_SCORE_V1: purpose: '하네스 컨텍스트 전체의 데이터 무결성 점수를 산출한다. ' input_fields: - harness_context expected_outputs: - data_integrity_score_v1 llm_allowed: cite_only version: 2026-06-03_ORPHAN_RECONCILE owner: quant_team lifecycle_state: active output_fields: [] missing_policy: DATA_MISSING. 계산 결과를 추정하지 않는다. golden_cases: [] activation_threshold: min_t20_sample: 30 retirement_condition: performance_degradation DATA_MATURITY_TRUTH_GATE_V1: purpose: 'type_A(결정론)/type_B(표본 의존) 축을 분리해 진실성 기반 성숙도 게이트를 산출한다. ' input_fields: - type_a_metrics - type_b_metrics - sample_counts expected_outputs: - maturity_gate - truthful_100_axes - pending_evidence_axes llm_allowed: cite_only version: 2026-06-03_ORPHAN_RECONCILE owner: quant_team lifecycle_state: active output_fields: [] missing_policy: DATA_MISSING. 계산 결과를 추정하지 않는다. golden_cases: [] activation_threshold: min_t20_sample: 30 retirement_condition: performance_degradation DATA_MATURITY_TRUTH_GATE_VALIDATOR_V1: purpose: 'DATA_MATURITY_TRUTH_GATE_V1 산출값의 형식·범위 유효성을 검증한다. ' input_fields: - maturity_gate_output expected_outputs: - validation_result - validation_errors llm_allowed: cite_only version: 2026-06-03_ORPHAN_RECONCILE owner: quant_team lifecycle_state: active output_fields: [] missing_policy: DATA_MISSING. 계산 결과를 추정하지 않는다. golden_cases: [] activation_threshold: min_t20_sample: 30 retirement_condition: performance_degradation PROFIT_GIVEBACK_RATCHET_FACTOR_V1: purpose: 수익금 보전 ATR 기반 동적 래칫 — 번 돈을 지키는 원칙 (Direction E1·L2·R4 확장) agents_md_ref: Direction E1(APEX_SUPER), L2(ATR 트레일링), R4(전 보유종목 coverage) inputs: - field: prev_trail_stop unit: KRW_per_share - field: high_since_entry unit: KRW_per_share - field: atr20 unit: KRW_per_share - field: market_regime unit: enum - field: profit_pct unit: percent expression: trail_stop = max(prev_trail_stop, high_since_entry - k * atr20) components: k_regime_map: APEX_SUPER_ge_50pct: 1.0 APEX_TRAILING_ge_40pct: 1.5 PROFIT_LOCK_30_ge_30pct: 2.0 PROFIT_LOCK_20_ge_20pct: 2.0 PROFIT_LOCK_10_ge_10pct: 2.5 BREAKEVEN_RATCHET_ge_0pct: null NORMAL_lt_0pct: null calibration_status: EXPERT_PRIOR output: field: auto_trailing_stop unit: KRW_per_share gate: coverage_check: ratchet_coverage_pct == 100 (Direction R4 CHECK_64) fail_action: BLOCK 보고서 발행 missing_policy: atr20 미확인 시 BREAKEVEN_RATCHET(=avg_cost*1.00) 적용 implementation: tools/build_ratchet_trailing_general_v1.py:NF5 calibration_ref: spec/calibration_registry.yaml:NF5 k값 (EXPERT_PRIOR) version: 2026-06-04_NF5 owner: quant_team lifecycle_state: active input_fields: - prev_trail_stop - high_since_entry - atr20 - market_regime - profit_pct output_fields: - auto_trailing_stop golden_cases: [] activation_threshold: min_t20_sample: 30 retirement_condition: performance_degradation