feat(quant-engine): v8.9 제안서 P0-P3 로드맵 채택 — 15개 의사결정 엔진 신규 구현

suggest/quant_investment_engine_v8_9_portfolio_optimizer_canonical_refactored.yaml의
implementation_todo_v8_9(P0~P4) 전체를 spec/tool/golden case 레벨로 구현.

- P0: PORTFOLIO_TRANSITION_UTILITY_V1, SELL_LOT_PARETO_SELECTOR_V1, FORECAST_SIMULATION_ENGINE_V1
- P1: SECTOR_EXPOSURE_GRAPH_V1/LEADER_LIFECYCLE_GATE_V1, EXECUTION_CAPACITY_LADDER_V1, MODEL_GOVERNANCE_KILL_SWITCH_V1
- P2: SCENARIO_SHOCK_MATRIX_V1, TRANSITION_SET_ENUMERATOR_V1, IMMUTABLE_DECISION_LEDGER_V1, EXECUTION_PLAN_COMPILER_V1
- P3: STATE_VECTOR_CONSTRUCTOR_V1, WALK_FORWARD_BOOTSTRAP_V1, TRANSITION_SET_ENUMERATOR_V1(MRC/CVaR 확장),
      REBALANCE_CADENCE_GATE_V1, WEEKLY_LEGACY_TRANSFER_PLAN_V1

기존 regime/cluster 연동 정책 수치(현금방어선, 반도체 cap)는 그대로 유지하고 신규 cap 필드만 추가.
spec/09_decision_flow.yaml과 runtime/active_artifact_manifest.yaml에 전 엔진 배선 완료.
governance/todo/v8_9_p{0,1,2,3}_adoption_plan.yaml에 각 단계 작업 추적 기록.

검증: validate_specs/validate_golden_coverage_100(100%)/validate_calibration_registry_v1/
validate_schema_model_generation_v1/validate_agents_shrink_v1 전부 PASS. golden test 53/53 PASS.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-06-18 00:06:52 +09:00
parent aed1eae421
commit aedabdd37b
82 changed files with 7515 additions and 5 deletions
@@ -0,0 +1,46 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "schema://formula/EXECUTION_CAPACITY_LADDER_V1",
"title": "EXECUTION_CAPACITY_LADDER_V1",
"type": "object",
"properties": {
"formula_id": {
"const": "EXECUTION_CAPACITY_LADDER_V1"
},
"owner": {
"type": "string"
},
"status": {
"type": "string"
},
"inputs": {
"type": "array",
"items": {
"type": "string"
}
},
"outputs": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"formula_id",
"owner",
"status",
"inputs",
"outputs"
],
"x_formula_inputs": [
"planned_order_amount_krw",
"avg_trade_value_20d_krw",
"intraday_trade_value_krw",
"orderbook_top3_depth_krw",
"spread_bps"
],
"x_formula_outputs": [
"order_capacity_krw"
]
}
@@ -0,0 +1,16 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "schema://formula/EXECUTION_PLAN_COMPILER_V1",
"title": "EXECUTION_PLAN_COMPILER_V1",
"type": "object",
"properties": {
"formula_id": { "const": "EXECUTION_PLAN_COMPILER_V1" },
"owner": { "type": "string" },
"status": { "type": "string" },
"inputs": { "type": "array", "items": { "type": "string" } },
"outputs": { "type": "array", "items": { "type": "string" } }
},
"required": ["formula_id", "owner", "status", "inputs", "outputs"],
"x_formula_inputs": ["order_capacity_krw", "revalidation_snapshot", "baseline_snapshot"],
"x_formula_outputs": ["compiled_slices"]
}
@@ -0,0 +1,16 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "schema://formula/IMMUTABLE_DECISION_LEDGER_V1",
"title": "IMMUTABLE_DECISION_LEDGER_V1",
"type": "object",
"properties": {
"formula_id": { "const": "IMMUTABLE_DECISION_LEDGER_V1" },
"owner": { "type": "string" },
"status": { "type": "string" },
"inputs": { "type": "array", "items": { "type": "string" } },
"outputs": { "type": "array", "items": { "type": "string" } }
},
"required": ["formula_id", "owner", "status", "inputs", "outputs"],
"x_formula_inputs": ["decision_id", "input_hash_bundle", "execution_mode", "candidate_ids", "selected_transition_id"],
"x_formula_outputs": ["ledger_append_status"]
}
@@ -0,0 +1,51 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "schema://formula/MODEL_GOVERNANCE_KILL_SWITCH_V1",
"title": "MODEL_GOVERNANCE_KILL_SWITCH_V1",
"type": "object",
"properties": {
"formula_id": {
"const": "MODEL_GOVERNANCE_KILL_SWITCH_V1"
},
"owner": {
"type": "string"
},
"status": {
"type": "string"
},
"inputs": {
"type": "array",
"items": {
"type": "string"
}
},
"outputs": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"formula_id",
"owner",
"status",
"inputs",
"outputs"
],
"x_formula_inputs": [
"data_quarantine_rate_pct",
"implementation_shortfall_ratio",
"t5_hit_rate_pct",
"t5_sample_count",
"calibration_error",
"calibration_error_limit",
"account_mdd_pct",
"account_mdd_budget_pct"
],
"x_formula_outputs": [
"execution_mode",
"kill_switch_triggered",
"kill_switch_reason_codes"
]
}
@@ -0,0 +1,48 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "schema://formula/PORTFOLIO_TRANSITION_UTILITY_V1",
"title": "PORTFOLIO_TRANSITION_UTILITY_V1",
"type": "object",
"properties": {
"formula_id": {
"const": "PORTFOLIO_TRANSITION_UTILITY_V1"
},
"owner": {
"type": "string"
},
"status": {
"type": "string"
},
"inputs": {
"type": "array",
"items": {
"type": "string"
}
},
"outputs": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"formula_id",
"owner",
"status",
"inputs",
"outputs"
],
"x_formula_inputs": [
"ce70_net_profit_krw",
"tax_fee_slippage_krw",
"cash_repair_benefit_krw",
"concentration_reduction_benefit_krw",
"turnover_penalty_krw"
],
"x_formula_outputs": [
"transition_utility_krw",
"acceptance_margin_krw",
"selected_transition"
]
}
@@ -0,0 +1,16 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "schema://formula/REBALANCE_CADENCE_GATE_V1",
"title": "REBALANCE_CADENCE_GATE_V1",
"type": "object",
"properties": {
"formula_id": { "const": "REBALANCE_CADENCE_GATE_V1" },
"owner": { "type": "string" },
"status": { "type": "string" },
"inputs": { "type": "array", "items": { "type": "string" } },
"outputs": { "type": "array", "items": { "type": "string" } }
},
"required": ["formula_id", "owner", "status", "inputs", "outputs"],
"x_formula_inputs": ["today_date", "transition_utility_after_tax_cost_krw", "hard_risk_block_active"],
"x_formula_outputs": ["rebalance_execution_allowed", "cadence_check_required", "review_emitted"]
}
@@ -0,0 +1,16 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "schema://formula/SCENARIO_SHOCK_MATRIX_V1",
"title": "SCENARIO_SHOCK_MATRIX_V1",
"type": "object",
"properties": {
"formula_id": { "const": "SCENARIO_SHOCK_MATRIX_V1" },
"owner": { "type": "string" },
"status": { "type": "string" },
"inputs": { "type": "array", "items": { "type": "string" } },
"outputs": { "type": "array", "items": { "type": "string" } }
},
"required": ["formula_id", "owner", "status", "inputs", "outputs"],
"x_formula_inputs": ["net_profit_distribution_after_tax_fee_slippage", "scenario_id"],
"x_formula_outputs": ["scenario_results"]
}
@@ -0,0 +1,49 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "schema://formula/SECTOR_EXPOSURE_GRAPH_V1",
"title": "SECTOR_EXPOSURE_GRAPH_V1",
"type": "object",
"properties": {
"formula_id": {
"const": "SECTOR_EXPOSURE_GRAPH_V1"
},
"owner": {
"type": "string"
},
"status": {
"type": "string"
},
"inputs": {
"type": "array",
"items": {
"type": "string"
}
},
"outputs": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"formula_id",
"owner",
"status",
"inputs",
"outputs"
],
"x_formula_inputs": [
"direct_weight_pct",
"etf_constituents_json",
"etf_weight_pct",
"sector_id",
"peer_sector_betas"
],
"x_formula_outputs": [
"sector_family_total_pct",
"lookthrough_etf_weight_pct",
"factor_beta_residualized",
"leader_role"
]
}
@@ -0,0 +1,16 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "schema://formula/STATE_VECTOR_CONSTRUCTOR_V1",
"title": "STATE_VECTOR_CONSTRUCTOR_V1",
"type": "object",
"properties": {
"formula_id": { "const": "STATE_VECTOR_CONSTRUCTOR_V1" },
"owner": { "type": "string" },
"status": { "type": "string" },
"inputs": { "type": "array", "items": { "type": "string" } },
"outputs": { "type": "array", "items": { "type": "string" } }
},
"required": ["formula_id", "owner", "status", "inputs", "outputs"],
"x_formula_inputs": ["cash_ladder", "positions", "sector_exposure_graph", "factor_exposures", "tax_lots", "risk_bucket_weights", "macro_regime_probabilities", "goal_progress_pct"],
"x_formula_outputs": ["state_vector", "state_vector_completeness_pct", "missing_components"]
}
@@ -0,0 +1,16 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "schema://formula/TRANSITION_SET_ENUMERATOR_V1",
"title": "TRANSITION_SET_ENUMERATOR_V1",
"type": "object",
"properties": {
"formula_id": { "const": "TRANSITION_SET_ENUMERATOR_V1" },
"owner": { "type": "string" },
"status": { "type": "string" },
"inputs": { "type": "array", "items": { "type": "string" } },
"outputs": { "type": "array", "items": { "type": "string" } }
},
"required": ["formula_id", "owner", "status", "inputs", "outputs"],
"x_formula_inputs": ["evaluated_candidates", "max_set_size"],
"x_formula_outputs": ["selected_transition_set"]
}
@@ -0,0 +1,16 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "schema://formula/WALK_FORWARD_BOOTSTRAP_V1",
"title": "WALK_FORWARD_BOOTSTRAP_V1",
"type": "object",
"properties": {
"formula_id": { "const": "WALK_FORWARD_BOOTSTRAP_V1" },
"owner": { "type": "string" },
"status": { "type": "string" },
"inputs": { "type": "array", "items": { "type": "string" } },
"outputs": { "type": "array", "items": { "type": "string" } }
},
"required": ["formula_id", "owner", "status", "inputs", "outputs"],
"x_formula_inputs": ["historical_returns", "current_regime_state", "bootstrap_method"],
"x_formula_outputs": ["net_profit_distribution_after_tax_fee_slippage", "sample_count_total", "sample_count_same_regime"]
}
@@ -0,0 +1,16 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "schema://formula/WEEKLY_LEGACY_TRANSFER_PLAN_V1",
"title": "WEEKLY_LEGACY_TRANSFER_PLAN_V1",
"type": "object",
"properties": {
"formula_id": { "const": "WEEKLY_LEGACY_TRANSFER_PLAN_V1" },
"owner": { "type": "string" },
"status": { "type": "string" },
"inputs": { "type": "array", "items": { "type": "string" } },
"outputs": { "type": "array", "items": { "type": "string" } }
},
"required": ["formula_id", "owner", "status", "inputs", "outputs"],
"x_formula_inputs": ["weekly_legacy_to_cma_transfer_plan_krw", "transfer_confirmed", "transfer_confirmed_amount_krw"],
"x_formula_outputs": ["deployable_cash_contribution_krw", "plan_status"]
}