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:
@@ -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"]
|
||||
}
|
||||
Reference in New Issue
Block a user