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,33 @@
"""Auto-generated schema model descriptor."""
from __future__ import annotations
from dataclasses import dataclass
import json
from pathlib import Path
from typing import Any
SCHEMA_TITLE = 'EXECUTION_CAPACITY_LADDER_V1'
SCHEMA_ID = 'schema://formula/EXECUTION_CAPACITY_LADDER_V1'
SCHEMA_PATH = 'schemas/generated/execution_capacity_ladder_v1.schema.json'
SCHEMA_PROPERTIES = ['formula_id', 'owner', 'status', 'inputs', 'outputs']
SCHEMA_REQUIRED = ['formula_id', 'owner', 'status', 'inputs', 'outputs']
@dataclass(frozen=True)
class SchemaModel:
title: str
schema_id: str
path: str
properties: list[str]
required: list[str]
def load_schema() -> dict[str, Any]:
return json.loads(Path(__file__).with_suffix('.schema.json').read_text(encoding='utf-8'))
def describe() -> SchemaModel:
return SchemaModel(
title=SCHEMA_TITLE,
schema_id=SCHEMA_ID,
path=SCHEMA_PATH,
properties=list(SCHEMA_PROPERTIES),
required=list(SCHEMA_REQUIRED),
)
@@ -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,33 @@
"""Auto-generated schema model descriptor."""
from __future__ import annotations
from dataclasses import dataclass
import json
from pathlib import Path
from typing import Any
SCHEMA_TITLE = 'EXECUTION_PLAN_COMPILER_V1'
SCHEMA_ID = 'schema://formula/EXECUTION_PLAN_COMPILER_V1'
SCHEMA_PATH = 'schemas/generated/execution_plan_compiler_v1.schema.json'
SCHEMA_PROPERTIES = ['formula_id', 'owner', 'status', 'inputs', 'outputs']
SCHEMA_REQUIRED = ['formula_id', 'owner', 'status', 'inputs', 'outputs']
@dataclass(frozen=True)
class SchemaModel:
title: str
schema_id: str
path: str
properties: list[str]
required: list[str]
def load_schema() -> dict[str, Any]:
return json.loads(Path(__file__).with_suffix('.schema.json').read_text(encoding='utf-8'))
def describe() -> SchemaModel:
return SchemaModel(
title=SCHEMA_TITLE,
schema_id=SCHEMA_ID,
path=SCHEMA_PATH,
properties=list(SCHEMA_PROPERTIES),
required=list(SCHEMA_REQUIRED),
)
@@ -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,33 @@
"""Auto-generated schema model descriptor."""
from __future__ import annotations
from dataclasses import dataclass
import json
from pathlib import Path
from typing import Any
SCHEMA_TITLE = 'IMMUTABLE_DECISION_LEDGER_V1'
SCHEMA_ID = 'schema://formula/IMMUTABLE_DECISION_LEDGER_V1'
SCHEMA_PATH = 'schemas/generated/immutable_decision_ledger_v1.schema.json'
SCHEMA_PROPERTIES = ['formula_id', 'owner', 'status', 'inputs', 'outputs']
SCHEMA_REQUIRED = ['formula_id', 'owner', 'status', 'inputs', 'outputs']
@dataclass(frozen=True)
class SchemaModel:
title: str
schema_id: str
path: str
properties: list[str]
required: list[str]
def load_schema() -> dict[str, Any]:
return json.loads(Path(__file__).with_suffix('.schema.json').read_text(encoding='utf-8'))
def describe() -> SchemaModel:
return SchemaModel(
title=SCHEMA_TITLE,
schema_id=SCHEMA_ID,
path=SCHEMA_PATH,
properties=list(SCHEMA_PROPERTIES),
required=list(SCHEMA_REQUIRED),
)
@@ -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,33 @@
"""Auto-generated schema model descriptor."""
from __future__ import annotations
from dataclasses import dataclass
import json
from pathlib import Path
from typing import Any
SCHEMA_TITLE = 'MODEL_GOVERNANCE_KILL_SWITCH_V1'
SCHEMA_ID = 'schema://formula/MODEL_GOVERNANCE_KILL_SWITCH_V1'
SCHEMA_PATH = 'schemas/generated/model_governance_kill_switch_v1.schema.json'
SCHEMA_PROPERTIES = ['formula_id', 'owner', 'status', 'inputs', 'outputs']
SCHEMA_REQUIRED = ['formula_id', 'owner', 'status', 'inputs', 'outputs']
@dataclass(frozen=True)
class SchemaModel:
title: str
schema_id: str
path: str
properties: list[str]
required: list[str]
def load_schema() -> dict[str, Any]:
return json.loads(Path(__file__).with_suffix('.schema.json').read_text(encoding='utf-8'))
def describe() -> SchemaModel:
return SchemaModel(
title=SCHEMA_TITLE,
schema_id=SCHEMA_ID,
path=SCHEMA_PATH,
properties=list(SCHEMA_PROPERTIES),
required=list(SCHEMA_REQUIRED),
)
@@ -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,33 @@
"""Auto-generated schema model descriptor."""
from __future__ import annotations
from dataclasses import dataclass
import json
from pathlib import Path
from typing import Any
SCHEMA_TITLE = 'PORTFOLIO_TRANSITION_UTILITY_V1'
SCHEMA_ID = 'schema://formula/PORTFOLIO_TRANSITION_UTILITY_V1'
SCHEMA_PATH = 'schemas/generated/portfolio_transition_optimizer_v1.schema.json'
SCHEMA_PROPERTIES = ['formula_id', 'owner', 'status', 'inputs', 'outputs']
SCHEMA_REQUIRED = ['formula_id', 'owner', 'status', 'inputs', 'outputs']
@dataclass(frozen=True)
class SchemaModel:
title: str
schema_id: str
path: str
properties: list[str]
required: list[str]
def load_schema() -> dict[str, Any]:
return json.loads(Path(__file__).with_suffix('.schema.json').read_text(encoding='utf-8'))
def describe() -> SchemaModel:
return SchemaModel(
title=SCHEMA_TITLE,
schema_id=SCHEMA_ID,
path=SCHEMA_PATH,
properties=list(SCHEMA_PROPERTIES),
required=list(SCHEMA_REQUIRED),
)
@@ -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,33 @@
"""Auto-generated schema model descriptor."""
from __future__ import annotations
from dataclasses import dataclass
import json
from pathlib import Path
from typing import Any
SCHEMA_TITLE = 'REBALANCE_CADENCE_GATE_V1'
SCHEMA_ID = 'schema://formula/REBALANCE_CADENCE_GATE_V1'
SCHEMA_PATH = 'schemas/generated/rebalance_cadence_gate_v1.schema.json'
SCHEMA_PROPERTIES = ['formula_id', 'owner', 'status', 'inputs', 'outputs']
SCHEMA_REQUIRED = ['formula_id', 'owner', 'status', 'inputs', 'outputs']
@dataclass(frozen=True)
class SchemaModel:
title: str
schema_id: str
path: str
properties: list[str]
required: list[str]
def load_schema() -> dict[str, Any]:
return json.loads(Path(__file__).with_suffix('.schema.json').read_text(encoding='utf-8'))
def describe() -> SchemaModel:
return SchemaModel(
title=SCHEMA_TITLE,
schema_id=SCHEMA_ID,
path=SCHEMA_PATH,
properties=list(SCHEMA_PROPERTIES),
required=list(SCHEMA_REQUIRED),
)
@@ -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,33 @@
"""Auto-generated schema model descriptor."""
from __future__ import annotations
from dataclasses import dataclass
import json
from pathlib import Path
from typing import Any
SCHEMA_TITLE = 'SCENARIO_SHOCK_MATRIX_V1'
SCHEMA_ID = 'schema://formula/SCENARIO_SHOCK_MATRIX_V1'
SCHEMA_PATH = 'schemas/generated/scenario_shock_matrix_v1.schema.json'
SCHEMA_PROPERTIES = ['formula_id', 'owner', 'status', 'inputs', 'outputs']
SCHEMA_REQUIRED = ['formula_id', 'owner', 'status', 'inputs', 'outputs']
@dataclass(frozen=True)
class SchemaModel:
title: str
schema_id: str
path: str
properties: list[str]
required: list[str]
def load_schema() -> dict[str, Any]:
return json.loads(Path(__file__).with_suffix('.schema.json').read_text(encoding='utf-8'))
def describe() -> SchemaModel:
return SchemaModel(
title=SCHEMA_TITLE,
schema_id=SCHEMA_ID,
path=SCHEMA_PATH,
properties=list(SCHEMA_PROPERTIES),
required=list(SCHEMA_REQUIRED),
)
@@ -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,33 @@
"""Auto-generated schema model descriptor."""
from __future__ import annotations
from dataclasses import dataclass
import json
from pathlib import Path
from typing import Any
SCHEMA_TITLE = 'SECTOR_EXPOSURE_GRAPH_V1'
SCHEMA_ID = 'schema://formula/SECTOR_EXPOSURE_GRAPH_V1'
SCHEMA_PATH = 'schemas/generated/sector_exposure_graph_v1.schema.json'
SCHEMA_PROPERTIES = ['formula_id', 'owner', 'status', 'inputs', 'outputs']
SCHEMA_REQUIRED = ['formula_id', 'owner', 'status', 'inputs', 'outputs']
@dataclass(frozen=True)
class SchemaModel:
title: str
schema_id: str
path: str
properties: list[str]
required: list[str]
def load_schema() -> dict[str, Any]:
return json.loads(Path(__file__).with_suffix('.schema.json').read_text(encoding='utf-8'))
def describe() -> SchemaModel:
return SchemaModel(
title=SCHEMA_TITLE,
schema_id=SCHEMA_ID,
path=SCHEMA_PATH,
properties=list(SCHEMA_PROPERTIES),
required=list(SCHEMA_REQUIRED),
)
@@ -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,33 @@
"""Auto-generated schema model descriptor."""
from __future__ import annotations
from dataclasses import dataclass
import json
from pathlib import Path
from typing import Any
SCHEMA_TITLE = 'STATE_VECTOR_CONSTRUCTOR_V1'
SCHEMA_ID = 'schema://formula/STATE_VECTOR_CONSTRUCTOR_V1'
SCHEMA_PATH = 'schemas/generated/state_vector_constructor_v1.schema.json'
SCHEMA_PROPERTIES = ['formula_id', 'owner', 'status', 'inputs', 'outputs']
SCHEMA_REQUIRED = ['formula_id', 'owner', 'status', 'inputs', 'outputs']
@dataclass(frozen=True)
class SchemaModel:
title: str
schema_id: str
path: str
properties: list[str]
required: list[str]
def load_schema() -> dict[str, Any]:
return json.loads(Path(__file__).with_suffix('.schema.json').read_text(encoding='utf-8'))
def describe() -> SchemaModel:
return SchemaModel(
title=SCHEMA_TITLE,
schema_id=SCHEMA_ID,
path=SCHEMA_PATH,
properties=list(SCHEMA_PROPERTIES),
required=list(SCHEMA_REQUIRED),
)
@@ -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,33 @@
"""Auto-generated schema model descriptor."""
from __future__ import annotations
from dataclasses import dataclass
import json
from pathlib import Path
from typing import Any
SCHEMA_TITLE = 'TRANSITION_SET_ENUMERATOR_V1'
SCHEMA_ID = 'schema://formula/TRANSITION_SET_ENUMERATOR_V1'
SCHEMA_PATH = 'schemas/generated/transition_set_enumerator_v1.schema.json'
SCHEMA_PROPERTIES = ['formula_id', 'owner', 'status', 'inputs', 'outputs']
SCHEMA_REQUIRED = ['formula_id', 'owner', 'status', 'inputs', 'outputs']
@dataclass(frozen=True)
class SchemaModel:
title: str
schema_id: str
path: str
properties: list[str]
required: list[str]
def load_schema() -> dict[str, Any]:
return json.loads(Path(__file__).with_suffix('.schema.json').read_text(encoding='utf-8'))
def describe() -> SchemaModel:
return SchemaModel(
title=SCHEMA_TITLE,
schema_id=SCHEMA_ID,
path=SCHEMA_PATH,
properties=list(SCHEMA_PROPERTIES),
required=list(SCHEMA_REQUIRED),
)
@@ -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,33 @@
"""Auto-generated schema model descriptor."""
from __future__ import annotations
from dataclasses import dataclass
import json
from pathlib import Path
from typing import Any
SCHEMA_TITLE = 'WALK_FORWARD_BOOTSTRAP_V1'
SCHEMA_ID = 'schema://formula/WALK_FORWARD_BOOTSTRAP_V1'
SCHEMA_PATH = 'schemas/generated/walk_forward_bootstrap_v1.schema.json'
SCHEMA_PROPERTIES = ['formula_id', 'owner', 'status', 'inputs', 'outputs']
SCHEMA_REQUIRED = ['formula_id', 'owner', 'status', 'inputs', 'outputs']
@dataclass(frozen=True)
class SchemaModel:
title: str
schema_id: str
path: str
properties: list[str]
required: list[str]
def load_schema() -> dict[str, Any]:
return json.loads(Path(__file__).with_suffix('.schema.json').read_text(encoding='utf-8'))
def describe() -> SchemaModel:
return SchemaModel(
title=SCHEMA_TITLE,
schema_id=SCHEMA_ID,
path=SCHEMA_PATH,
properties=list(SCHEMA_PROPERTIES),
required=list(SCHEMA_REQUIRED),
)
@@ -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,33 @@
"""Auto-generated schema model descriptor."""
from __future__ import annotations
from dataclasses import dataclass
import json
from pathlib import Path
from typing import Any
SCHEMA_TITLE = 'WEEKLY_LEGACY_TRANSFER_PLAN_V1'
SCHEMA_ID = 'schema://formula/WEEKLY_LEGACY_TRANSFER_PLAN_V1'
SCHEMA_PATH = 'schemas/generated/weekly_legacy_transfer_plan_v1.schema.json'
SCHEMA_PROPERTIES = ['formula_id', 'owner', 'status', 'inputs', 'outputs']
SCHEMA_REQUIRED = ['formula_id', 'owner', 'status', 'inputs', 'outputs']
@dataclass(frozen=True)
class SchemaModel:
title: str
schema_id: str
path: str
properties: list[str]
required: list[str]
def load_schema() -> dict[str, Any]:
return json.loads(Path(__file__).with_suffix('.schema.json').read_text(encoding='utf-8'))
def describe() -> SchemaModel:
return SchemaModel(
title=SCHEMA_TITLE,
schema_id=SCHEMA_ID,
path=SCHEMA_PATH,
properties=list(SCHEMA_PROPERTIES),
required=list(SCHEMA_REQUIRED),
)
@@ -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"]
}