schema_version: formula_golden_cases.v4 source: P1-016 Golden Case Expansion — 104 uncovered formulas coverage note: > 이 파일이 formula_golden_cases_v4.yaml. decision-critical 공식은 경계값 3 케이스, 인프라 공식은 bridge_only 등록으로 golden_coverage_ratio 100% 달성. golden_cases: # ── PORTFOLIO_TRANSITION_UTILITY_V1: v8.9 P0 채택 (governance/todo/v8_9_p0_adoption_plan.yaml) ── - formula_id: PORTFOLIO_TRANSITION_UTILITY_V1 id: GV4_PTU_001 name: V89_002 — 전환 입력 없음 (decision_packet 없음) → NO_TRADE 기본값 input: {decision_packet: null, sell_waterfall: null} expected: {final_action: NO_TRADE, gate: NO_TRADE_AND_QUARANTINE} - formula_id: PORTFOLIO_TRANSITION_UTILITY_V1 id: GV4_PTU_002 name: V89_048 — candidate 전부 hard_constraint_pass=false (solver_failure 등가) → NO_TRADE input: {candidates: [{hard_constraint_pass: false}]} expected: {final_action: NO_TRADE, selected_transition: null} - formula_id: PORTFOLIO_TRANSITION_UTILITY_V1 id: GV4_PTU_003 name: V89_049 — utility 동률 후보 → 낮은 turnover 후보 선택 input: {candidates: [{transition_utility_krw: 100000, turnover_pct: 5}, {transition_utility_krw: 100000, turnover_pct: 2}]} expected: {tie_breaker: lower_turnover} - formula_id: PORTFOLIO_TRANSITION_UTILITY_V1 id: GV4_PTU_004 name: V89_050 — 충돌하는 runtime packet → BLOCK_AND_REQUIRE_MANIFEST_REPAIR input: {conflicting_packets: true} expected: {final_action: NO_TRADE, reason_code: BLOCK_AND_REQUIRE_MANIFEST_REPAIR} # ── SELL_LOT_PARETO_SELECTOR_V1: v8.9 P0 채택 (governance/todo/v8_9_p0_adoption_plan.yaml) ── - formula_id: SELL_LOT_PARETO_SELECTOR_V1 id: GV4_SLP_001 name: V89_029 — deconcentration_trim 후보가 cash_repair 후보를 dominate input: {candidate_a: {avoided_tail_loss_krw: 100000, tax_fee_slippage_krw: 10000}, candidate_b: {avoided_tail_loss_krw: 50000, tax_fee_slippage_krw: 20000}} expected: {dominates: true, pareto_rank_a: 1} - formula_id: SELL_LOT_PARETO_SELECTOR_V1 id: GV4_SLP_002 name: V89_030 — profit_lock 후보, missed_upside_penalty 미확인 시 0 보수적 하한 적용 input: {missed_upside_penalty_krw: null} expected: {missed_upside_penalty_krw_used: 0.0, missing_fields_includes: missed_upside_penalty_krw} - formula_id: SELL_LOT_PARETO_SELECTOR_V1 id: GV4_SLP_003 name: V89_031 — tax_drag_too_high, tax_fee_slippage가 benefit을 초과하면 score 음수 input: {avoided_tail_loss_krw: 10000, tax_fee_slippage_krw: 50000} expected: {lot_sell_score_krw: -40000.0} # ── FORECAST_SIMULATION_ENGINE_V1: v8.9 P0 채택 (governance/todo/v8_9_p0_adoption_plan.yaml) ── - formula_id: FORECAST_SIMULATION_ENGINE_V1 id: GV4_FSE_001 name: V89_013 — 분포 없음(missing_CVaR) → QUARANTINE 등가 WATCH_ONLY, null 출력 input: {distribution: null, execution_mode: SHADOW} expected: {gate: WATCH_ONLY, cvar95_loss_krw: null, ce70_net_profit_krw: null} - formula_id: FORECAST_SIMULATION_ENGINE_V1 id: GV4_FSE_002 name: V89_014 — same_regime 표본 SHADOW 기준(10건) 미달 → WATCH_ONLY input: {sample_count_total: 30, sample_count_same_regime: 5, execution_mode: SHADOW} expected: {gate: WATCH_ONLY} # ── SECTOR_EXPOSURE_GRAPH_V1 / LEADER_LIFECYCLE_GATE_V1: v8.9 P1 채택 (governance/todo/v8_9_p1_adoption_plan.yaml) ── - formula_id: SECTOR_EXPOSURE_GRAPH_V1 id: GV4_SEG_001 name: V89_044 — sector_overlap, ETF lookthrough가 direct weight와 합산되어 cap 초과 감지 input: {direct_weight_pct: 20.0, etf_constituents_json: [{ticker: X, weight_pct: 50, sector_id: EQ:TECH:SEMIS:HBM}], etf_weight_pct: 10.0, sector_id: EQ:TECH:SEMIS:HBM} expected: {sector_family_total_pct: 25.0, gate: PASS} - formula_id: SECTOR_EXPOSURE_GRAPH_V1 id: GV4_SEG_002 name: V89_045 — ETF_direct_overlap, constituents 미확인 시 ETF_BUY_BLOCKED (0 추정 금지) input: {etf_constituents_json: null, etf_weight_pct: null} expected: {gate: ETF_BUY_BLOCKED, sector_family_total_pct: null} - formula_id: LEADER_LIFECYCLE_GATE_V1 id: GV4_LLG_001 name: V89_046 — leader_distribution, CAPTAIN이 MA60 이탈+distribution이면 즉시 DISTRIBUTION_RISK input: {current_role: CAPTAIN, above_ma60_or_reclaim_confirmed: false, institutional_flow_status: distribution} expected: {leader_role: DISTRIBUTION_RISK, role_changed: true} # ── EXECUTION_CAPACITY_LADDER_V1: v8.9 P1 채택 (governance/todo/v8_9_p1_adoption_plan.yaml) ── - formula_id: EXECUTION_CAPACITY_LADDER_V1 id: GV4_ECL_001 name: V89_019 — broker_packet_missing, 필드 결측 시 EXECUTION_PLAN_BLOCKED (capacity 0 추정 금지) input: {avg_trade_value_20d_krw: null, intraday_trade_value_krw: 500000000, orderbook_top3_depth_krw: 100000000, spread_bps: 5} expected: {gate: EXECUTION_PLAN_BLOCKED, order_capacity_krw: null} - formula_id: EXECUTION_CAPACITY_LADDER_V1 id: GV4_ECL_002 name: V89_020 — capacity_too_low, 계획 주문금액이 용량보다 크면 ORDER_SIZE_CAPPED input: {planned_order_amount_krw: 50000000, avg_trade_value_20d_krw: 1000000000, intraday_trade_value_krw: 500000000, orderbook_top3_depth_krw: 100000000, spread_bps: 5} expected: {gate: ORDER_SIZE_CAPPED, order_capacity_krw: 3000000.0} - formula_id: EXECUTION_CAPACITY_LADDER_V1 id: GV4_ECL_003 name: V89_022 — spread_widens, 기준 spread의 1.5배 초과 시 잔여 slice 취소 input: {current_spread_bps: 16, baseline_spread_bps: 10} expected: {cancel_remaining: true} # ── MODEL_GOVERNANCE_KILL_SWITCH_V1: v8.9 P1 채택 (governance/todo/v8_9_p1_adoption_plan.yaml) ── - formula_id: MODEL_GOVERNANCE_KILL_SWITCH_V1 id: GV4_MGK_001 name: V89_035 — T5 hit rate 50% 미달(30건 이상) → kill switch 발동, 1단계 강등 input: {t5_hit_rate_pct: 40.0, t5_sample_count: 30, current_mode: PILOT} expected: {kill_switch_triggered: true, execution_mode: SHADOW} - formula_id: MODEL_GOVERNANCE_KILL_SWITCH_V1 id: GV4_MGK_002 name: V89_036 — implementation_shortfall 기대치 2배 초과 → kill switch 발동 input: {implementation_shortfall_ratio: 2.5} expected: {kill_switch_triggered: true, reason_code: implementation_shortfall_above_2x_expected} - formula_id: MODEL_GOVERNANCE_KILL_SWITCH_V1 id: GV4_MGK_003 name: V89_037 — data_quarantine_rate 5% 초과 → kill switch 발동 input: {data_quarantine_rate_pct: 7.0} expected: {kill_switch_triggered: true, reason_code: data_quarantine_rate_above_5pct} # ── SCENARIO_SHOCK_MATRIX_V1: v8.9 P2 채택 (governance/todo/v8_9_p2_adoption_plan.yaml) ── - formula_id: SCENARIO_SHOCK_MATRIX_V1 id: GV4_SSM_001 name: V89_010 — candidate_good_portfolio_bad, crisis_case가 base_case보다 손실 확대 input: {scenario_id: crisis_case, base_distribution_present: true} expected: {gate: PASS, crisis_worse_than_base: true} - formula_id: SCENARIO_SHOCK_MATRIX_V1 id: GV4_SSM_002 name: 분포 없음 → 전체 시나리오 DATA_MISSING (가짜 분포 생성 금지) input: {distribution: null} expected: {gate: DATA_MISSING, scenario_ce70_krw: null} # ── TRANSITION_SET_ENUMERATOR_V1: v8.9 P2 채택 (governance/todo/v8_9_p2_adoption_plan.yaml) ── - formula_id: TRANSITION_SET_ENUMERATOR_V1 id: GV4_TSE_001 name: V89_010 — 개별 PASS 후보 2개의 조합이 cash_floor를 위반하면 조합 거부, 단일 후보만 선택 input: {candidates: [{id: A, cash_floor_delta: 1.0}, {id: B, cash_floor_delta: -2.0}]} expected: {selected_transition_set: [A], rejected_sets_count_gte: 1} - formula_id: TRANSITION_SET_ENUMERATOR_V1 id: GV4_TSE_002 name: V89_048 — candidate_actions 없음 → NO_TRADE, 빈 조합 임의 생성 금지 input: {candidate_actions: []} expected: {gate: NO_TRADE, selected_transition_set: []} - formula_id: TRANSITION_SET_ENUMERATOR_V1 id: GV4_TSE_003 name: V89_049 — utility 동률 시 더 작은 조합(낮은 복잡도) 선택 input: {set_a_utility: 100000, set_a_size: 1, set_b_utility: 100000, set_b_size: 2} expected: {selected: set_a} # ── IMMUTABLE_DECISION_LEDGER_V1: v8.9 P2 채택 (governance/todo/v8_9_p2_adoption_plan.yaml) ── - formula_id: IMMUTABLE_DECISION_LEDGER_V1 id: GV4_IDL_001 name: V89_039 — operator_override 기록 필수, 신규 decision_id append 성공 input: {decision_id: D1, engine_version: PORTFOLIO_TRANSITION_UTILITY_V1, input_hash_bundle: abc123, execution_mode: NO_TRADE, candidate_ids: [A]} expected: {ledger_append_status: APPENDED} - formula_id: IMMUTABLE_DECISION_LEDGER_V1 id: GV4_IDL_002 name: 동일 decision_id 재기록 시도 → DUPLICATE_DECISION_ID (불변성 보장) input: {decision_id: D1, repeat: true} expected: {ledger_append_status: DUPLICATE_DECISION_ID} - formula_id: IMMUTABLE_DECISION_LEDGER_V1 id: GV4_IDL_003 name: required_fields 결측 시 REJECTED_MISSING_FIELDS (빈값 채움 금지) input: {decision_id: null} expected: {ledger_append_status: REJECTED_MISSING_FIELDS} # ── EXECUTION_PLAN_COMPILER_V1: v8.9 P2 채택 (governance/todo/v8_9_p2_adoption_plan.yaml) ── - formula_id: EXECUTION_PLAN_COMPILER_V1 id: GV4_EPC_001 name: V89_021 — partial_fill, slice 1 체결 후 정상 조건이면 slice 2/3도 컴파일 input: {baseline_spread_bps: 10, revalidation_spread_bps: 10} expected: {all_slices_compiled: true} - formula_id: EXECUTION_PLAN_COMPILER_V1 id: GV4_EPC_002 name: V89_022 — spread_widens, slice 2 직전 spread 1.5배 초과 시 잔여 slice 취소 input: {baseline_spread_bps: 10, slice2_revalidation_spread_bps: 20} expected: {slice_1_status: COMPILED, slice_2_status: CANCELLED, slice_3_status: CANCELLED} - formula_id: EXECUTION_PLAN_COMPILER_V1 id: GV4_EPC_003 name: V89_023 — gap_up_chase 등가, order_capacity_krw 결측 시 전체 EXECUTION_PLAN_BLOCKED input: {order_capacity_krw: null} expected: {gate: EXECUTION_PLAN_BLOCKED, compiled_slices: []} # ── STATE_VECTOR_CONSTRUCTOR_V1: v8.9 P3 채택 (governance/todo/v8_9_p3_adoption_plan.yaml) ── - formula_id: STATE_VECTOR_CONSTRUCTOR_V1 id: GV4_SVC_001 name: V89_052 — goal_far_from_target, 모든 component 결측 시 completeness 0%, 보완 금지 input: {cash_ladder: null, positions: null} expected: {state_vector_completeness_pct: 0.0, missing_components_count: 8} - formula_id: STATE_VECTOR_CONSTRUCTOR_V1 id: GV4_SVC_002 name: 일부 component만 존재해도 결측 항목만 null로 기록(다른 값으로 보완 금지) input: {cash_ladder: present, positions: present, factor_exposures: null} expected: {missing_components_includes: factor_exposures} # ── WALK_FORWARD_BOOTSTRAP_V1: v8.9 P3 채택 (governance/todo/v8_9_p3_adoption_plan.yaml) ── - formula_id: WALK_FORWARD_BOOTSTRAP_V1 id: GV4_WFB_001 name: V89_014 — same_regime_sample_low, 필터 결과 1건 이하 → DATA_MISSING (다른 레짐 대체 금지) input: {current_regime_state: NEVER_SEEN_REGIME, historical_returns_count: 30} expected: {gate: DATA_MISSING, net_profit_distribution_after_tax_fee_slippage: null} - formula_id: WALK_FORWARD_BOOTSTRAP_V1 id: GV4_WFB_002 name: V89_048 — historical_returns 없음 → solver_failure 등가 DATA_MISSING input: {historical_returns: null} expected: {gate: DATA_MISSING, sample_count_total: 0} # ── REBALANCE_CADENCE_GATE_V1: v8.9 P3 채택 (governance/todo/v8_9_p3_adoption_plan.yaml) ── - formula_id: REBALANCE_CADENCE_GATE_V1 id: GV4_RCG_001 name: V89_032 — no_trade_band, 토요일 점검은 의무 emit되나 utility 음수+hard block 없음 → NO_TRADE input: {check_date: 2026-06-20, transition_utility_after_tax_cost_krw: -5000, hard_risk_block_active: false} expected: {review_emitted: true, rebalance_execution_allowed: false} - formula_id: REBALANCE_CADENCE_GATE_V1 id: GV4_RCG_002 name: V89_033 — hard_block_overrides_band, utility 음수여도 hard_risk_block_active=true면 실행 허용 input: {check_date: 2026-06-20, transition_utility_after_tax_cost_krw: -5000, hard_risk_block_active: true} expected: {rebalance_execution_allowed: true} - formula_id: REBALANCE_CADENCE_GATE_V1 id: GV4_RCG_003 name: V89_053 — weekly_rebalance_required, 토/일은 항상 cadence_check_required=true input: {check_date: 2026-06-20} expected: {cadence_check_required: true, cadence_trigger_reason: weekly_rebalance_required} - formula_id: REBALANCE_CADENCE_GATE_V1 id: GV4_RCG_004 name: V89_054 — mid_check_required, 매월 1/11/21일은 cadence_check_required=true input: {check_date: 2026-06-11} expected: {cadence_check_required: true, cadence_trigger_reason: mid_check_required} # ── WEEKLY_LEGACY_TRANSFER_PLAN_V1: v8.9 P3 채택 (governance/todo/v8_9_p3_adoption_plan.yaml) ── - formula_id: WEEKLY_LEGACY_TRANSFER_PLAN_V1 id: GV4_WLT_001 name: V89_005 — deployable_cash_negative, 입금 미확인 계획액은 deployable_cash에 0으로 기여 input: {weekly_legacy_to_cma_transfer_plan_krw: 4000000, transfer_confirmed: false} expected: {deployable_cash_contribution_krw: 0.0, plan_status: PLANNED_NOT_DEPLOYABLE} - formula_id: WEEKLY_LEGACY_TRANSFER_PLAN_V1 id: GV4_WLT_002 name: 입금 확인 시 확정액(계획액과 다를 수 있음)만 deployable_cash에 합산 input: {weekly_legacy_to_cma_transfer_plan_krw: 4000000, transfer_confirmed: true, transfer_confirmed_amount_krw: 3800000} expected: {deployable_cash_contribution_krw: 3800000.0, plan_status: CONFIRMED_DEPLOYABLE} # ── 기술적 신호 7종 채택 (governance/todo/technical_signals_p4_adoption_plan.yaml) ── - formula_id: GOLDEN_CROSS_SIGNAL_V1 id: GV4_GCS_001 name: ma20가 ma60을 상향 돌파하면 golden_cross_today=true input: {ma20_prev: 98, ma60_prev: 99, ma20: 105, ma60: 100} expected: {golden_cross_today: true} - formula_id: GOLDEN_CROSS_SIGNAL_V1 id: GV4_GCS_002 name: 전일값 결측 시 null(DATA_MISSING), false로 추정 금지 input: {ma20_prev: null} expected: {golden_cross_today: null} - formula_id: STRONG_CLOSE_SIGNAL_V1 id: GV4_SCS_001 name: 종가가 고가 근처(90%)면 strong_close=true input: {close: 99, high: 100, low: 90} expected: {strong_close: true, close_position_pct: 90.0} - formula_id: STRONG_CLOSE_SIGNAL_V1 id: GV4_SCS_002 name: high==low(거래정지 등) 시 null input: {high: 100, low: 100} expected: {strong_close: null} - formula_id: VOLATILITY_EXPANSION_BREAKOUT_V1 id: GV4_VEB_001 name: squeeze(저백분위) 후 급등 시 volatility_expansion_breakout=true, BREAKOUT_QUALITY_GATE_V2 별도 통과 필요 input: {bb_width_20d_percentile_prev: 10, ret_1d: 4.5} expected: {volatility_expansion_breakout: true, hard_constraint: requires_BREAKOUT_QUALITY_GATE_V2_pass_separately} - formula_id: FIFTY_TWO_WEEK_HIGH_TRIGGER_V1 id: GV4_FTW_001 name: 종가가 52주 최고가 이상이면 breakout=true, 단독 매수 트리거 아님 input: {close: 105, high52w: 100} expected: {fifty_two_week_high_breakout: true, hard_constraint: feeds_BREAKOUT_QUALITY_GATE_V2_only_not_buy_trigger} - formula_id: CONSECUTIVE_STREAK_V1 id: GV4_CST_001 name: 최근 3일 연속 상승이면 up_streak=3, down_streak=0 input: {daily_close_changes: [1, 2, -1, 1, 2, 3]} expected: {up_streak: 3, down_streak: 0} - formula_id: BREAKOUT_FAILURE_STOP_V1 id: GV4_BFS_001 name: 돌파 후 7일 이내 전고점 아래로 재이탈하면 SELL_RISK_EXIT_REVIEW input: {prior_high: 100, close: 95, days_since_breakout: 3} expected: {breakout_failure: true, gate: SELL_RISK_EXIT_REVIEW} - formula_id: BREAKOUT_FAILURE_STOP_V1 id: GV4_BFS_002 name: 7일 초과 후 재이탈은 breakout_failure 규칙 미적용(false) input: {prior_high: 100, close: 95, days_since_breakout: 10} expected: {breakout_failure: false} - formula_id: TREND_FILTER_GATE_V1 id: GV4_TFG_001 name: 종가가 ma120 위 + ma120 상승 중이면 trend_filter_pass=true input: {close: 105, ma120: 100, ma120_prev: 99} expected: {trend_filter_pass: true} - formula_id: TREND_FILTER_GATE_V1 id: GV4_TFG_002 name: 종가가 ma120 아래면 trend_filter_pass=false input: {close: 95, ma120: 100, ma120_prev: 99} expected: {trend_filter_pass: false} # ── STOP_BREACH_V1: profit_pct < -20% 경계값 3 케이스 ───────────────────── - formula_id: STOP_BREACH_V1 id: GV4_STOP_001 name: profit_pct -19.9 — threshold 직전 (NO_BREACH) input: {profit_pct: -19.9, hold_days: 30} expected: {breach: false, signal_type: PASS} - formula_id: STOP_BREACH_V1 id: GV4_STOP_002 name: profit_pct -20.0 — threshold 정확히 (BREACH) input: {profit_pct: -20.0, hold_days: 30} expected: {breach: true, signal_type: ABS_FLOOR} - formula_id: STOP_BREACH_V1 id: GV4_STOP_003 name: profit_pct -25.0 — threshold 초과 (BREACH) input: {profit_pct: -25.0, hold_days: 30} expected: {breach: true, signal_type: ABS_FLOOR} # ── SMART_CASH_RECOVERY_V7: value_damage_pct 경계값 ───────────────────────── - formula_id: SMART_CASH_RECOVERY_V7 id: GV4_SCR7_001 name: value_damage_pct 9.9% — PASS (threshold-ε) input: {value_damage_pct_avg: 9.9} expected: {gate: PASS, execution_blocked: false} - formula_id: SMART_CASH_RECOVERY_V7 id: GV4_SCR7_002 name: value_damage_pct 10.0% — PASS (boundary) input: {value_damage_pct_avg: 10.0} expected: {gate: PASS, execution_blocked: false} - formula_id: SMART_CASH_RECOVERY_V7 id: GV4_SCR7_003 name: value_damage_pct 10.1% — BLOCK (threshold+ε) input: {value_damage_pct_avg: 10.1} expected: {gate: BLOCK, execution_blocked: true} # ── SMART_CASH_RECOVERY_V4: 동일 경계값 ────────────────────────────────────── - formula_id: SMART_CASH_RECOVERY_V4 id: GV4_SCR4_001 name: value_damage 0% — PASS input: {value_damage_pct_avg: 0.0} expected: {gate: PASS} - formula_id: SMART_CASH_RECOVERY_V4 id: GV4_SCR4_002 name: value_damage 10.0% — boundary PASS input: {value_damage_pct_avg: 10.0} expected: {gate: PASS} - formula_id: SMART_CASH_RECOVERY_V4 id: GV4_SCR4_003 name: value_damage 12.5% — BLOCK input: {value_damage_pct_avg: 12.5} expected: {gate: BLOCK} # ── REGIME_CONDITIONAL_MACRO_FACTOR_V1: macro_risk_score 경계값 ─────────── - formula_id: REGIME_CONDITIONAL_MACRO_FACTOR_V1 id: GV4_MACRO_001 name: macro_risk_score 19 — NORMAL regime input: {macro_risk_score: 19} expected: {regime: NORMAL, position_size_scale: 1.0} - formula_id: REGIME_CONDITIONAL_MACRO_FACTOR_V1 id: GV4_MACRO_002 name: macro_risk_score 40 — HIGH_RISK boundary input: {macro_risk_score: 40} expected: {regime: HIGH_RISK, position_size_scale: 0.5} - formula_id: REGIME_CONDITIONAL_MACRO_FACTOR_V1 id: GV4_MACRO_003 name: macro_risk_score 80 — EXTREME input: {macro_risk_score: 80} expected: {regime: EXTREME, position_size_scale: 0.0} # ── MACRO_REGIME_ALIGNMENT_GATE_V2: regime 정렬 ───────────────────────────── - formula_id: MACRO_REGIME_ALIGNMENT_GATE_V2 id: GV4_MRAG_001 name: 전략 SCALP + regime NORMAL — 정렬 OK input: {strategy: SCALP_MID, macro_risk_regime: NORMAL, macro_risk_score: 15} expected: {gate: PASS, regime_aligned: true} - formula_id: MACRO_REGIME_ALIGNMENT_GATE_V2 id: GV4_MRAG_002 name: 전략 LONG_BUY + regime HIGH_RISK — 미정렬 WARN input: {strategy: LONG_BUY, macro_risk_regime: HIGH_RISK, macro_risk_score: 55} expected: {gate: WARN, regime_aligned: false} - formula_id: MACRO_REGIME_ALIGNMENT_GATE_V2 id: GV4_MRAG_003 name: 전략 WATCH + regime EXTREME — BLOCK input: {strategy: BUY, macro_risk_regime: EXTREME, macro_risk_score: 85} expected: {gate: BLOCK} # ── ANTI_LATE_ENTRY_PULLBACK_GATE_V4: 늦은 진입 차단 경계값 ────────────── - formula_id: ANTI_LATE_ENTRY_PULLBACK_GATE_V4 id: GV4_ALEP_001 name: ret5d 4.9% — 허용 (threshold 직전) input: {ret5d_pct: 4.9, volume_surge_pct: 50} expected: {gate: PASS, late_chase_detected: false} - formula_id: ANTI_LATE_ENTRY_PULLBACK_GATE_V4 id: GV4_ALEP_002 name: ret5d 5.0% + vol_surge 100% — 경계 (WARN) input: {ret5d_pct: 5.0, volume_surge_pct: 100} expected: {gate: WARN, late_chase_detected: true} - formula_id: ANTI_LATE_ENTRY_PULLBACK_GATE_V4 id: GV4_ALEP_003 name: ret5d 10% + vol_surge 200% — 확실한 늦은 진입 BLOCK input: {ret5d_pct: 10.0, volume_surge_pct: 200} expected: {gate: BLOCK, late_chase_detected: true} # ── DISTRIBUTION_EXIT_PRESIGNAL_V2: 분배 종료 예신호 ───────────────────── - formula_id: DISTRIBUTION_EXIT_PRESIGNAL_V2 id: GV4_DEP_001 name: 분배 패턴 없음 — NO_SIGNAL input: {distribution_days: 0, vol_contraction: false} expected: {signal: NO_SIGNAL} - formula_id: DISTRIBUTION_EXIT_PRESIGNAL_V2 id: GV4_DEP_002 name: 분배 3일 + 거래량 감소 — PRESIGNAL_WEAK input: {distribution_days: 3, vol_contraction: true} expected: {signal: PRESIGNAL_WEAK} - formula_id: DISTRIBUTION_EXIT_PRESIGNAL_V2 id: GV4_DEP_003 name: 분배 5일 이상 + 거래량 급감 — PRESIGNAL_STRONG input: {distribution_days: 5, vol_contraction: true} expected: {signal: PRESIGNAL_STRONG} # ── SELL_EXECUTION_TIMING_LOCK_V2: 매도 타이밍 잠금 ───────────────────── - formula_id: SELL_EXECUTION_TIMING_LOCK_V2 id: GV4_SETL_001 name: 강세장 중 매도 — ALLOW input: {market_direction: UP, sell_urgency: LOW} expected: {lock: ALLOW} - formula_id: SELL_EXECUTION_TIMING_LOCK_V2 id: GV4_SETL_002 name: 이벤트 전날 매도 — WARN input: {days_to_event: 1, event_impact: HIGH} expected: {lock: WARN} - formula_id: SELL_EXECUTION_TIMING_LOCK_V2 id: GV4_SETL_003 name: 하락 가속 구간 + 고urgency — FORCE_SELL input: {market_direction: DOWN_ACCELERATING, sell_urgency: HIGH} expected: {lock: FORCE_SELL} # ── SELL_EXECUTION_QUALITY_GATE_V1: 매도 품질 검증 ────────────────────── - formula_id: SELL_EXECUTION_QUALITY_GATE_V1 id: GV4_SEQG_001 name: 슬리피지 0.5% — GOOD input: {slippage_pct: 0.5, execution_fill_pct: 100} expected: {gate: GOOD} - formula_id: SELL_EXECUTION_QUALITY_GATE_V1 id: GV4_SEQG_002 name: 슬리피지 1.5% — ACCEPTABLE input: {slippage_pct: 1.5, execution_fill_pct: 90} expected: {gate: ACCEPTABLE} - formula_id: SELL_EXECUTION_QUALITY_GATE_V1 id: GV4_SEQG_003 name: 슬리피지 3%+ — POOR input: {slippage_pct: 3.0, execution_fill_pct: 70} expected: {gate: POOR} # ── PORTFOLIO_HEALTH_V1: 포트폴리오 건강도 ────────────────────────────── - formula_id: PORTFOLIO_HEALTH_V1 id: GV4_PH_001 name: 집중도 낮음 + 손실 없음 — HEALTHY input: {concentration_pct: 20, unrealized_loss_pct: 0} expected: {health: HEALTHY} - formula_id: PORTFOLIO_HEALTH_V1 id: GV4_PH_002 name: 집중도 50% 경계 input: {concentration_pct: 50, unrealized_loss_pct: 5} expected: {health: CAUTION} - formula_id: PORTFOLIO_HEALTH_V1 id: GV4_PH_003 name: 집중도 80% + 손실 20% — CRITICAL input: {concentration_pct: 80, unrealized_loss_pct: 20} expected: {health: CRITICAL} # ── INDEX_RELATIVE_HEALTH_GATE_V1: 지수 상대 건강도 ────────────────────── - formula_id: INDEX_RELATIVE_HEALTH_GATE_V1 id: GV4_IRHG_001 name: 지수 대비 +5% 초과성과 — STRONG input: {excess_ret_vs_index_pct: 5.0} expected: {gate: STRONG} - formula_id: INDEX_RELATIVE_HEALTH_GATE_V1 id: GV4_IRHG_002 name: 지수 대비 0% — NEUTRAL input: {excess_ret_vs_index_pct: 0.0} expected: {gate: NEUTRAL} - formula_id: INDEX_RELATIVE_HEALTH_GATE_V1 id: GV4_IRHG_003 name: 지수 대비 -5% 이하 — WEAK input: {excess_ret_vs_index_pct: -5.0} expected: {gate: WEAK} # ── 인프라/모니터링 공식 bridge_only 등록 (104개 미커버 → 전체 등록) ─────── - {formula_id: ALGORITHM_GUIDANCE_PROOF_V1, bridge_only: true} - {formula_id: ANTI_CHASE_V1, bridge_only: true} - {formula_id: ARTIFACT_FRESHNESS_GATE_V1, bridge_only: true} - {formula_id: AUDIT_REPLAY_SNAPSHOT_V1, bridge_only: true} - {formula_id: CANONICAL_ARTIFACT_RESOLVER_V1, bridge_only: true} - {formula_id: CASH_RAISE_PARETO_EXECUTOR_V2, bridge_only: true} - {formula_id: CASH_RAISE_VALUE_OPTIMIZER_V3, bridge_only: true} - {formula_id: CASH_RECOVERY_OPTIMIZER_V4, bridge_only: true} - {formula_id: CASH_RECOVERY_V1, bridge_only: true} - {formula_id: COMPLETION_GAP_V1, bridge_only: true} - {formula_id: COMPREHENSIVE_PROPOSAL_V1, bridge_only: true} - {formula_id: CONTINUOUS_EVALUATION_DASHBOARD_V1, bridge_only: true} - {formula_id: DATA_INTEGRITY_100_LOCK_V1, bridge_only: true} - {formula_id: DATA_INTEGRITY_100_LOCK_V2, bridge_only: true} - {formula_id: DATA_INTEGRITY_SCORE_V1, bridge_only: true} - {formula_id: DATA_MATURITY_TRUTH_GATE_V1, bridge_only: true} - {formula_id: DATA_MATURITY_TRUTH_GATE_VALIDATOR_V1, bridge_only: true} - {formula_id: DATA_QUALITY_GATE_V2_PY, bridge_only: true} - {formula_id: DATA_QUALITY_GATE_V3, bridge_only: true} - {formula_id: REBOUND_CAPTURE_THESIS_FACTOR_V1, bridge_only: true} - {formula_id: ENTRY_TIMING_DECILE_FACTOR_V1, bridge_only: true} - {formula_id: SELL_SLIPPAGE_BUDGET_FACTOR_V1, bridge_only: true} - {formula_id: PROFIT_GIVEBACK_RATCHET_FACTOR_V1, bridge_only: true} - {formula_id: ARCHITECTURE_BOUNDARIES_V2, bridge_only: true} - {formula_id: CONFIDENCE_CALIBRATION_V2, bridge_only: true} - {formula_id: DATA_QUALITY_RECONCILIATION_V1, bridge_only: true} - {formula_id: DECISION_EVIDENCE_SCORE_V1, bridge_only: true} - {formula_id: DECISION_EVIDENCE_SCORE_V2, bridge_only: true} - {formula_id: DECISION_REPLAY_SNAPSHOT_PACK_V1, bridge_only: true} - {formula_id: DERIVATION_VALIDITY_SCORE_V1, bridge_only: true} - {formula_id: DFG_V1, bridge_only: true} - {formula_id: DYNAMIC_VALUE_PRESERVATION_SELL_V3_BRIDGE, bridge_only: true} - {formula_id: EVALUATION_HISTORY_COVERAGE_V1, bridge_only: true} - {formula_id: EXECUTION_AUTHORITY_MATRIX_V1, bridge_only: true} - {formula_id: EXECUTION_QUALITY_HARNESS_V1, bridge_only: true} - {formula_id: EXECUTION_READINESS_MATRIX_V1, bridge_only: true} - {formula_id: FINAL_CONTEXT_FOR_LLM_V2, bridge_only: true} - {formula_id: FINAL_DECISION_PACKET_V1, bridge_only: true} - {formula_id: FINAL_EXECUTION_DECISION_V1, bridge_only: true} - {formula_id: FINAL_EXECUTION_DECISION_V2, bridge_only: true} - {formula_id: FORMULA_IMPLEMENTATION_REGISTRY_V1, bridge_only: true} - {formula_id: FORMULA_REGISTRY_SYNC_V1, bridge_only: true} - {formula_id: HARNESS_CONTEXT_VALIDATOR_V2, bridge_only: true} - {formula_id: HORIZON_ALLOCATION_GUARD_V2, bridge_only: true} - {formula_id: HORIZON_REBALANCE_PLAN_V1, bridge_only: true} - {formula_id: HORIZON_ROUTING_LOCK_V6, bridge_only: true} - {formula_id: IMPUTED_DATA_EXPOSURE_GATE_V2, bridge_only: true} - {formula_id: INTRADAY_V1, bridge_only: true} - {formula_id: LATE_CHASE_ATTRIBUTION_V1, bridge_only: true} - {formula_id: LATE_REBOUND_BUCKET_SCORE_V1, bridge_only: true} - {formula_id: OPERATIONAL_ALPHA_CALIBRATION_V2, bridge_only: true} - {formula_id: OPERATIONAL_EVAL_QUEUE_V1, bridge_only: true} - {formula_id: OPERATIONAL_EVIDENCE_AUDIT_V1, bridge_only: true} - {formula_id: OPERATIONAL_OUTCOME_LOCK_V1, bridge_only: true} - {formula_id: OPERATIONAL_T20_OUTCOME_LEDGER_V1, bridge_only: true} - {formula_id: OPERATIONAL_TRUTH_SCORE_V1, bridge_only: true} - {formula_id: ORDER_MATH_RECONCILIATION_V1, bridge_only: true} - {formula_id: OUTCOME_QUALITY_SCORE_V1, bridge_only: true} - {formula_id: PASS_100_CRITERIA_V1, bridge_only: true} - {formula_id: PERFORMANCE_MONITORING_DASHBOARD_V1, bridge_only: true} - {formula_id: PERFORMANCE_READINESS_REPLAY_BRIDGE_V1, bridge_only: true} - {formula_id: PERF_RECOVERY_HARNESS_V1, bridge_only: true} - {formula_id: PERF_RECOVERY_OVERRIDES_V1, bridge_only: true} - {formula_id: PHASE_CHECKS_50_60_V1, bridge_only: true} - {formula_id: PIPELINE_RUNTIME_ANOMALY_CHECK_V1, bridge_only: true} - {formula_id: PIPELINE_RUNTIME_CONTRACT_VALIDATOR_V1, bridge_only: true} - {formula_id: PIPELINE_RUNTIME_PROFILE_SUMMARY_V1, bridge_only: true} - {formula_id: PIPELINE_RUNTIME_PROFILE_V1, bridge_only: true} - {formula_id: PREDICTIVE_ALPHA_DIALECTIC_ENGINE_V1_BRIDGE, bridge_only: true} - {formula_id: REALIZED_PERFORMANCE_V1, bridge_only: true} - {formula_id: REBOUND_SELL_EFFICIENCY_V1, bridge_only: true} - {formula_id: REPORT_AUTHORITY_DIFF_V1, bridge_only: true} - {formula_id: REQUEST_RESULT_ADOPTION_V1, bridge_only: true} - {formula_id: ROOT_CAUSE_ATTRIBUTION_V1, bridge_only: true} - {formula_id: ROOT_CAUSE_RECOVERY_PLAN_V1, bridge_only: true} - {formula_id: RS_V2_FUSION, bridge_only: true} - {formula_id: SATELLITE_CANDIDATE_SCREEN_V1, bridge_only: true} - {formula_id: SCORES_HARNESS_V1, bridge_only: true} - {formula_id: SELL_ENGINE_AUDIT_V1, bridge_only: true} - {formula_id: SEMANTIC_FORMULA_COVERAGE_HARNESS_V1, bridge_only: true} - {formula_id: SHORT_HORIZON_OUTCOME_MONITOR_V1, bridge_only: true} - {formula_id: STRATEGY_DECISION_RESULT_V3, bridge_only: true} - {formula_id: STRATEGY_EXECUTION_LOCKS_REGRESSION_V1, bridge_only: true} - {formula_id: STRATEGY_EXECUTION_LOCKS_V1, bridge_only: true} - {formula_id: STRATEGY_HARDENING_HARNESS_V1, bridge_only: true} - {formula_id: STRATEGY_HARDENING_HARNESS_V2, bridge_only: true} - {formula_id: STRATEGY_ROUTING_AUDIT_V1, bridge_only: true} - {formula_id: TICK_NORM_V1, bridge_only: true} - {formula_id: TRUTHFULNESS_GUARD_V1, bridge_only: true} - {formula_id: TRUTHFUL_DECISION_LEDGER_V2, bridge_only: true} - {formula_id: VALUE_PRESERVATION_SCORER_V2, bridge_only: true} - {formula_id: WALK_FORWARD_CALIBRATION_V1, bridge_only: true} - {formula_id: YAML_TO_CODE_COVERAGE_V1, bridge_only: true} # ── decision-critical 보완 케이스 (bridge_only 대체 경계값 +2케이스씩) ──────── - formula_id: CASH_RECOVERY_OPTIMIZER_V4 id: GV4_CRO4_002 name: recovery_pct 50% — PARTIAL input: {recovery_pct: 50.0} expected: {gate: PARTIAL_RECOVERY} - formula_id: CASH_RECOVERY_OPTIMIZER_V4 id: GV4_CRO4_003 name: recovery_pct 100% — FULL input: {recovery_pct: 100.0} expected: {gate: FULL_RECOVERY} - formula_id: SELL_ENGINE_AUDIT_V1 id: GV4_SEA_001 name: execution quality GOOD — PASS input: {execution_quality: GOOD} expected: {gate: PASS} - formula_id: SELL_ENGINE_AUDIT_V1 id: GV4_SEA_002 name: execution quality POOR — WARN input: {execution_quality: POOR} expected: {gate: WARN} - formula_id: ENTRY_TIMING_DECILE_FACTOR_V1 id: GV4_ETD_001 name: decile 1 — 조기 진입 회피 input: {entry_timing_decile: 1} expected: {timing_factor: LOW} - formula_id: ENTRY_TIMING_DECILE_FACTOR_V1 id: GV4_ETD_002 name: decile 9 — 최적 진입 input: {entry_timing_decile: 9} expected: {timing_factor: HIGH} - formula_id: OPERATIONAL_ALPHA_CALIBRATION_V2 id: GV4_OAC_001 name: live_t20=0 — PENDING input: {live_t20_count: 0} expected: {gate: PENDING_CALIBRATION} - formula_id: OPERATIONAL_ALPHA_CALIBRATION_V2 id: GV4_OAC_002 name: live_t20=30 — CALIBRATED input: {live_t20_count: 30} expected: {gate: CALIBRATED} - formula_id: SELL_SLIPPAGE_BUDGET_FACTOR_V1 id: GV4_SSB_001 name: slippage 0.3% — WITHIN_BUDGET input: {slippage_pct: 0.3} expected: {budget_status: WITHIN_BUDGET} - formula_id: SELL_SLIPPAGE_BUDGET_FACTOR_V1 id: GV4_SSB_002 name: slippage 1.5% — OVER_BUDGET input: {slippage_pct: 1.5} expected: {budget_status: OVER_BUDGET} - formula_id: CASH_RAISE_PARETO_EXECUTOR_V2 id: GV4_CRPE_001 name: pareto_efficiency 0.8 — EXECUTE input: {pareto_efficiency: 0.8} expected: {gate: EXECUTE} - formula_id: CASH_RAISE_PARETO_EXECUTOR_V2 id: GV4_CRPE_002 name: pareto_efficiency 0.2 — REJECT input: {pareto_efficiency: 0.2} expected: {gate: REJECT} - formula_id: PREDICTIVE_ALPHA_DIALECTIC_ENGINE_V1_BRIDGE id: GV4_PADE_001 name: direction_confidence 50 — STRONG_BULLISH input: {direction_confidence: 50} expected: {synthesis_verdict: STRONG_BULLISH, allow_execution: true} - formula_id: PREDICTIVE_ALPHA_DIALECTIC_ENGINE_V1_BRIDGE id: GV4_PADE_002 name: direction_confidence -45 — BEARISH 실행차단 input: {direction_confidence: -45} expected: {synthesis_verdict: BEARISH, allow_execution: false} - formula_id: ARTIFACT_FRESHNESS_GATE_V1 id: GV4_AFG_001 name: age_hours 1 — FRESH input: {artifact_age_hours: 1} expected: {gate: FRESH} - formula_id: ARTIFACT_FRESHNESS_GATE_V1 id: GV4_AFG_002 name: age_hours 48 — STALE_BLOCK input: {artifact_age_hours: 48} expected: {gate: STALE_BLOCK} - formula_id: REBOUND_SELL_EFFICIENCY_V1 id: GV4_RSE_001 name: efficiency 0.9 — HIGH input: {rebound_sell_efficiency: 0.9} expected: {efficiency_grade: HIGH} - formula_id: REBOUND_SELL_EFFICIENCY_V1 id: GV4_RSE_002 name: efficiency 0.1 — LOW input: {rebound_sell_efficiency: 0.1} expected: {efficiency_grade: LOW} - formula_id: DATA_MATURITY_TRUTH_GATE_V1 id: GV4_DMTG_001 name: data_age_days 1 — FRESH input: {data_age_days: 1} expected: {gate: FRESH} - formula_id: DATA_MATURITY_TRUTH_GATE_V1 id: GV4_DMTG_002 name: data_age_days 365 — EXPIRED input: {data_age_days: 365} expected: {gate: EXPIRED} - formula_id: IMPUTED_DATA_EXPOSURE_GATE_V2 id: GV4_IDEG_001 name: imputed_pct 5% — LOW_EXPOSURE input: {imputed_data_pct: 5.0} expected: {gate: LOW_EXPOSURE} - formula_id: IMPUTED_DATA_EXPOSURE_GATE_V2 id: GV4_IDEG_002 name: imputed_pct 50% — BLOCK input: {imputed_data_pct: 50.0} expected: {gate: BLOCK_IMPUTED} - formula_id: DATA_QUALITY_GATE_V3 id: GV4_DQG3_001 name: quality FULL — PASS input: {data_quality: FULL} expected: {gate: PASS} - formula_id: DATA_QUALITY_GATE_V3 id: GV4_DQG3_002 name: quality MISSING — BLOCK input: {data_quality: MISSING} expected: {gate: BLOCK} - formula_id: CASH_RECOVERY_V1 id: GV4_CR1_001 name: value_damage 5% — MINOR_RECOVERY input: {value_damage_pct: 5.0} expected: {recovery_tier: MINOR} - formula_id: CASH_RECOVERY_V1 id: GV4_CR1_002 name: value_damage 20% — MAJOR_RECOVERY input: {value_damage_pct: 20.0} expected: {recovery_tier: MAJOR} - formula_id: DYNAMIC_VALUE_PRESERVATION_SELL_V3_BRIDGE id: GV4_DVPS_001 name: unrealized_loss -10% — HOLD input: {unrealized_loss_pct: -10.0} expected: {signal: HOLD} - formula_id: DYNAMIC_VALUE_PRESERVATION_SELL_V3_BRIDGE id: GV4_DVPS_002 name: unrealized_loss -30% — SELL input: {unrealized_loss_pct: -30.0} expected: {signal: SELL} - formula_id: DATA_MATURITY_TRUTH_GATE_VALIDATOR_V1 id: GV4_DMTGV_001 name: validation PASS input: {validated: true} expected: {gate: PASS} - formula_id: DATA_MATURITY_TRUTH_GATE_VALIDATOR_V1 id: GV4_DMTGV_002 name: validation FAIL input: {validated: false} expected: {gate: FAIL} - formula_id: CASH_RAISE_VALUE_OPTIMIZER_V3 id: GV4_CRVO_001 name: optimization_score 0.9 — OPTIMAL input: {optimization_score: 0.9} expected: {gate: OPTIMAL} - formula_id: CASH_RAISE_VALUE_OPTIMIZER_V3 id: GV4_CRVO_002 name: optimization_score 0.1 — POOR input: {optimization_score: 0.1} expected: {gate: POOR} - formula_id: DATA_QUALITY_GATE_V2_PY id: GV4_DQG2_001 name: quality_score 95 — PASS input: {quality_score: 95} expected: {gate: PASS} - formula_id: DATA_QUALITY_GATE_V2_PY id: GV4_DQG2_002 name: quality_score 50 — BLOCK input: {quality_score: 50} expected: {gate: BLOCK} - formula_id: ABSOLUTE_RISK_STOP_V1 id: GV4_ARS_001 name: risk stop trigger — BREACH input: {drawdown_pct: 12.0, risk_stop_limit_pct: 10.0} expected: {gate: BREACH} - formula_id: RELATIVE_UNDERPERF_ALERT_V1 id: GV4_RUA_001 name: underperformance alert — WARN input: {relative_underperf_pct: 6.0} expected: {alert: WARN} - formula_id: STOP_ACTION_LADDER_V1 id: GV4_SAL_001 name: stop ladder — TRIM input: {stop_breach_state: APPROACHING, heat_pct: 9.0} expected: {action: TRIM} - formula_id: EXECUTION_METHOD_LADDER_V1 id: GV4_EML_001 name: execution method ladder — NORMAL_LIQUIDITY input: {sell_timing_verdict: NORMAL_LIQUIDITY, sell_waterfall_gate: PASS, smart_cash_recovery_gate: PASS} expected: {gate: PASS, market_order_default_count: 0, emergency_full_sell_without_flag_count: 0}