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>
1213 lines
34 KiB
YAML
1213 lines
34 KiB
YAML
meta:
|
|
has_code_implementation: true
|
|
code_path:
|
|
- spec\formula_golden_cases_v4.yaml
|
|
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:
|
|
- 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
|
|
- 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
|
|
- 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
|
|
- 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
|
|
- 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
|
|
- 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
|
|
- 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
|
|
- 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
|
|
- 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
|
|
- 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: []
|
|
- 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
|
|
- 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
|
|
- 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
|
|
- 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
|
|
- 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
|
|
- 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
|
|
- 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
|
|
- 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
|
|
- 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
|
|
- 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
|
|
- 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
|
|
- 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
|
|
- 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
|
|
- 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
|
|
- 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
|
|
- 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
|
|
- 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
|
|
- 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
|