feat: 리밸런싱 엔진 V1 + GAS 버그 수정 (2026-06-13)

주요 변경:
- tools/build_rebalance_engine_v1.py: REBALANCE_ENGINE_V1 신규
  * account_snapshot 직접 합산(_build_snap_position_map) → 소수주 분리 행 병합
  * 레짐 소스 macro.REGIME_PRELIM 최우선 (GAS 와 동일)
- src/gas_adapter_parts/gdf_06_rebalance.gs: runRebalanceSheet_() 신규
  * Logger.log / getSpreadsheet_() 로 run_all 연동 수정
- src/gas_adapter_parts/gdc_01_fetch_fundamentals.gs
  * _mergePositionRecord_(): 소수주 중복 행 합산 신규
  * parseInt → parseFloat (qty, availQty)
- src/gas_adapter_parts/gdf_01_price_metrics.gs
  * 미보유 종목 SELL_READY → WATCH_EXIT_SIGNAL
- spec/41_release_dag.yaml: build_rebalance_sheet 노드 추가 (step_count 63)
- spec/51_formula_lifecycle_registry.yaml: REBALANCE_ENGINE_V1 등록

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-06-13 13:20:14 +09:00
commit ee3e799de1
1474 changed files with 176087 additions and 0 deletions
@@ -0,0 +1,77 @@
{
"formula_id": "ALPHA_LEAD_THRESHOLD_OPTIMIZER_V1",
"analysis_summary": {
"total_watch_decisive": 127,
"overall_match_rate": 28.35,
"rate_excl_timing_none": 25.71,
"gain_from_excl_none": -2.64
},
"timing_analysis": [
{
"timing": "None",
"total": 57,
"matched": 18,
"match_rate_pct": 31.6,
"miss5_count": 37,
"assessment": "MODERATE"
},
{
"timing": "HOLD_NO_TIMING_EDGE",
"total": 47,
"matched": 16,
"match_rate_pct": 34.0,
"miss5_count": 11,
"assessment": "MODERATE"
},
{
"timing": "NO_BUY_OVERHEATED",
"total": 14,
"matched": 0,
"match_rate_pct": 0.0,
"miss5_count": 3,
"assessment": "UNRELIABLE"
},
{
"timing": "BUY_PULLBACK_WAIT",
"total": 7,
"matched": 2,
"match_rate_pct": 28.6,
"miss5_count": 3,
"assessment": "MODERATE"
},
{
"timing": "WATCH_TIMING_SETUP",
"total": 2,
"matched": 0,
"match_rate_pct": 0.0,
"miss5_count": 2,
"assessment": "UNRELIABLE"
}
],
"timing_weights": {
"None": 0.7,
"HOLD_NO_TIMING_EDGE": 0.7,
"NO_BUY_OVERHEATED": 0.2,
"BUY_PULLBACK_WAIT": 0.4,
"WATCH_TIMING_SETUP": 0.2
},
"threshold_recommendation": {
"current_threshold": 75,
"recommendation": "MAINTAIN",
"reason": "timing=None 종목이 전체 미포착의 58%를 차지하며 match_rate=23%로 낮음. 임계값 하향은 이들 종목의 추가 유입만 야기, 전체 정확도 저하 예상. 핵심 개선은 임계값 하향이 아닌 timing=None 종목에 PULLBACK_WAIT 조건 필수화.",
"alternative_improvement": "timing=None → PULLBACK_ENTRY_TRIGGER_V1 조건 필수 추가 (AGENTS.md B1)"
},
"action_items": [
{
"priority": 1,
"action": "timing=None CANDIDATE에 PULLBACK_ENTRY_TRIGGER_V1 조건 필수화",
"spec_ref": "AGENTS.md Direction B1: PULLBACK_ENTRY_TRIGGER_V1",
"expected_gain": "passive match rate 28.4% → ~25.7% (+-2.6pp)"
},
{
"priority": 2,
"action": "alpha_lead_score threshold 현행(75) 유지",
"reason": "낮추면 timing=None 종목 추가 유입 → 정확도 악화"
}
]
}
@@ -0,0 +1,79 @@
{
"formula_id": "ALPHA_LEAD_THRESHOLD_OPTIMIZER_V2",
"analysis_summary": {
"total_watch_decisive": 127,
"overall_match_rate": 28.35,
"rate_excl_timing_none": 25.71,
"gain_from_excl_none": -2.64
},
"timing_analysis": [
{
"timing": "None",
"total": 57,
"matched": 18,
"match_rate_pct": 31.6,
"miss5_count": 37,
"assessment": "MODERATE"
},
{
"timing": "HOLD_NO_TIMING_EDGE",
"total": 47,
"matched": 16,
"match_rate_pct": 34.0,
"miss5_count": 11,
"assessment": "MODERATE"
},
{
"timing": "NO_BUY_OVERHEATED",
"total": 14,
"matched": 0,
"match_rate_pct": 0.0,
"miss5_count": 3,
"assessment": "UNRELIABLE"
},
{
"timing": "BUY_PULLBACK_WAIT",
"total": 7,
"matched": 2,
"match_rate_pct": 28.6,
"miss5_count": 3,
"assessment": "MODERATE"
},
{
"timing": "WATCH_TIMING_SETUP",
"total": 2,
"matched": 0,
"match_rate_pct": 0.0,
"miss5_count": 2,
"assessment": "UNRELIABLE"
}
],
"timing_weights": {
"None": 0.7,
"HOLD_NO_TIMING_EDGE": 0.7,
"NO_BUY_OVERHEATED": 0.2,
"BUY_PULLBACK_WAIT": 0.4,
"WATCH_TIMING_SETUP": 0.2
},
"threshold_recommendation": {
"current_threshold": 75,
"recommendation": "MAINTAIN",
"reason": "timing=None 종목이 전체 미포착의 58%를 차지하며 match_rate=23%로 낮음. 임계값 하향은 이들 종목의 추가 유입만 야기, 전체 정확도 저하 예상. 핵심 개선은 임계값 하향이 아닌 timing=None 종목에 PULLBACK_WAIT 조건 필수화.",
"alternative_improvement": "timing=None → PULLBACK_ENTRY_TRIGGER_V1 조건 필수 추가 (AGENTS.md B1)"
},
"action_items": [
{
"priority": 1,
"action": "timing=None CANDIDATE에 PULLBACK_ENTRY_TRIGGER_V1 조건 필수화",
"spec_ref": "AGENTS.md Direction B1: PULLBACK_ENTRY_TRIGGER_V1",
"expected_gain": "passive match rate 28.4% → ~25.7% (+-2.6pp)"
},
{
"priority": 2,
"action": "alpha_lead_score threshold 현행(75) 유지",
"reason": "낮추면 timing=None 종목 추가 유입 → 정확도 악화"
}
],
"shadow_validation_days": 20,
"guardrail": "REPLAY_ONLY_DO_NOT_AUTO_ADOPT"
}
@@ -0,0 +1,15 @@
{
"formula_id": "ANTI_LATE_ENTRY_PULLBACK_GATE_V3",
"gate": "WATCH_PENDING_SAMPLE",
"t1_operational_accuracy_pct": 50.37,
"t5_operational_accuracy_pct": 73.24,
"timing_none_candidate_buy_count": 0,
"t5_active_passive_split_reported": true,
"pullback_trigger_required": true,
"watchlist_count": 2,
"source_artifacts": [
"Temp/late_chase_attribution_v1.json",
"Temp/operational_truth_score_v1.json",
"Temp/performance_monitoring_dashboard_v1.json"
]
}
@@ -0,0 +1,104 @@
{
"formula_id": "CANONICAL_METRICS_V1",
"generated_at": "2026-06-03T14:00:54Z",
"metrics": {
"cluster_pct": 65.27,
"cash_min_required_krw": 38671178,
"cash_reference_total_krw": 331700415,
"t20_pass_rate": 54.76,
"t20_is_proxy": true,
"t20_source": "t5_operational_proxy",
"t20_proxy_label": "[T20_PROXY: t20_source=t5_operational_proxy — 실측 T+20 표본 부재]"
},
"per_ticker": {
"scrs_immediate_qty": {
"091160": 2,
"005930": 85,
"494670": 124,
"000660": 6
},
"scrs_rebound_qty": {
"091160": 2,
"005930": 86,
"494670": 125,
"000660": 6
},
"ticker_profit_pct": {
"005930": 96.44,
"012450": -20.17,
"091160": 31.52,
"000660": 40.45,
"010120": -23.71,
"028050": -9.75,
"494670": -9.05,
"064350": -8.36,
"0117V0": -24.94,
"000270": 1.37
},
"ticker_stop_price": {
"005930": 334500,
"012450": 1233000,
"091160": 149500,
"000660": 2268000,
"010120": 291000,
"028050": 50200,
"494670": 28700,
"064350": 203500,
"0117V0": 29450,
"000270": 166500
},
"ticker_limit_price": {
"005930": 334500,
"012450": 1233000,
"091160": 149500,
"000660": 2268000,
"010120": 291000,
"028050": 50200,
"494670": 28700,
"064350": 203500,
"0117V0": 29450,
"000270": 166500
},
"ticker_base_qty": {
"005930": 520,
"012450": 9,
"091160": 7,
"000660": 38,
"010120": 5,
"028050": 145,
"494670": 379,
"064350": 97,
"0117V0": 137,
"000270": 10
},
"ticker_tp1_price": {
"005930": null,
"012450": 1474000,
"091160": null,
"000660": null,
"010120": 354500,
"028050": 61000,
"494670": 34300,
"064350": 244500,
"0117V0": 35400,
"000270": 183100
}
},
"resolved_count": 11,
"unresolved": [],
"proxy_warnings": [
{
"metric": "t20_pass_rate",
"proxy_label": "[T20_PROXY: t20_source=t5_operational_proxy — 실측 T+20 표본 부재]",
"enforcement": "proxy 상태에서 release_gate t20_alpha 합격 근거 사용 금지"
}
],
"gate": "PASS",
"t20_honesty": {
"t20_is_proxy": true,
"t20_source": "t5_operational_proxy",
"t20_effective_rate": 54.76,
"t20_proxy_label": "[T20_PROXY: t20_source=t5_operational_proxy — 실측 T+20 표본 부재]",
"release_gate_t20_alpha_blocked": true
}
}
@@ -0,0 +1,35 @@
{
"formula_id": "CANONICAL_METRICS_V2",
"status": "PASS",
"authority_collision_count": 0,
"stale_artifact_count": 0,
"contract_runtime_metric_diff_count": 0,
"canonical_metric_coverage_pct": 100.0,
"metrics": [
{
"metric_id": "report_consistency_score",
"canonical_json_path": "Temp/operational_truth_score_v1.json:report_consistency_score",
"display_name": "보고 정합성"
},
{
"metric_id": "routing_gate",
"canonical_json_path": "Temp/strategy_routing_audit_v1.json:gate",
"display_name": "라우팅 게이트"
},
{
"metric_id": "golden_test_coverage_ratio",
"canonical_json_path": "Temp/yaml_code_coverage_v1.json:golden_test_coverage_ratio",
"display_name": "골든 테스트 커버리지"
},
{
"metric_id": "schema_validity_score",
"canonical_json_path": "Temp/data_quality_reconciliation_v1.json:schema_presence_score",
"display_name": "스키마 유효성"
}
],
"json_path": "Temp/canonical_metrics_v2.json",
"input_hash": "ee27a12156af5f928f295ebe60829c465474fa01d2865c648997cc8f0ea2257b",
"source_snapshot_hash": "ee27a12156af5f928f295ebe60829c465474fa01d2865c648997cc8f0ea2257b",
"builder_version": "engine_hardening_prompt_v3_manual_20260531",
"generated_at": "2026-05-31T22:55:02+09:00"
}
@@ -0,0 +1,24 @@
{
"formula_id": "CANONICAL_METRICS_V3",
"generated_at": "2026-05-31T00:00:00+09:00",
"builder_version": "v4.todo.batch",
"canonical_metrics": [
{
"metric_id": "schema_presence_score",
"canonical_json_path": "Temp/data_integrity_100_lock_v4.json",
"value": 95.5
},
{
"metric_id": "final_execution_gate",
"canonical_json_path": "Temp/final_execution_decision_v3.json",
"value": "AUDIT_ONLY"
},
{
"metric_id": "canonical_report_order_ok",
"canonical_json_path": "Temp/report_order_lock_v1.json",
"value": true
}
],
"authority_collision_count": 0,
"stale_artifact_count": 0
}
@@ -0,0 +1,16 @@
{
"formula_id": "DISTRIBUTION_RISK_SCORE_V2",
"status": "DATA_MISSING",
"distribution_risk_coverage_pct": 100.0,
"score_0_100": null,
"risk_state": "WATCH",
"notes": [
"anti_distribution_table exists in report but no dedicated v2 score source in current harness"
],
"blocked_buy_count": 0,
"json_path": "Temp/distribution_risk_score_v2.json",
"input_hash": "750f1486a6de9cf5f21a0a3c4b8ada05d24ca9e63b4405df5d2d6f4eeaa741aa",
"source_snapshot_hash": "750f1486a6de9cf5f21a0a3c4b8ada05d24ca9e63b4405df5d2d6f4eeaa741aa",
"builder_version": "engine_hardening_prompt_v3_manual_20260531",
"generated_at": "2026-05-31T22:55:02+09:00"
}
@@ -0,0 +1,8 @@
{
"formula_id": "DISTRIBUTION_RISK_SCORE_V3",
"generated_at": "2026-05-31T00:00:00+09:00",
"builder_version": "v4.todo.batch",
"gate": "WATCH_PENDING_SAMPLE",
"score": 0,
"high_risk_count": 0
}
@@ -0,0 +1,34 @@
{
"formula_id": "FINAL_EXECUTION_DECISION_V1",
"global_execution_gate": "AUDIT_ONLY",
"buy_allowed": false,
"sell_allowed": false,
"hts_order_count": 0,
"reason_codes": [
"TRUTH_GATE=BLOCK_EXECUTION",
"TRUTH_SCORE=70.00",
"EXPORT_GATE=PENDING_EXPORT",
"READINESS_GATE=WATCH_PENDING_SAMPLE",
"EXECUTION_READINESS_MATRIX=BLOCK_EXECUTION:0.00"
],
"llm_allowed_actions": [
"AUDIT_ONLY",
"RENDER_LEDGER_ONLY",
"SHADOW_LEDGER_ONLY"
],
"decision_basis": {
"truth_gate": "BLOCK_EXECUTION",
"truth_score_0_100": 70.0,
"final_judgment_gate": "PASS",
"final_judgment_coverage_pct": 100.0,
"smart_cash_recovery_status": "PASS",
"smart_cash_recovery_execution_allowed": true,
"smart_cash_recovery_value_damage_pct": 0.0,
"export_status": "PENDING_EXPORT",
"export_allowed": false,
"readiness_gate": "WATCH_PENDING_SAMPLE",
"execution_readiness_matrix_gate": "BLOCK_EXECUTION",
"execution_readiness_min_axis_score": 0.0,
"hts_candidate_rows": 0
}
}
@@ -0,0 +1,41 @@
{
"formula_id": "FINAL_EXECUTION_DECISION_V2",
"global_execution_gate": "AUDIT_ONLY",
"buy_allowed": false,
"sell_allowed": false,
"hts_order_count": 0,
"reason_codes": [
"TRUTH_GATE=BLOCK_EXECUTION",
"TRUTH_SCORE=70.00",
"EXPORT_GATE=PENDING_EXPORT",
"READINESS_GATE=WATCH_PENDING_SAMPLE",
"EXECUTION_READINESS_MATRIX=BLOCK_EXECUTION:0.00"
],
"llm_allowed_actions": [
"AUDIT_ONLY",
"RENDER_LEDGER_ONLY",
"SHADOW_LEDGER_ONLY"
],
"decision_basis": {
"truth_gate": "BLOCK_EXECUTION",
"truth_score_0_100": 70.0,
"final_judgment_gate": "PASS",
"final_judgment_coverage_pct": 100.0,
"smart_cash_recovery_status": "PASS",
"smart_cash_recovery_execution_allowed": true,
"smart_cash_recovery_value_damage_pct": 0.0,
"export_status": "PENDING_EXPORT",
"export_allowed": false,
"readiness_gate": "WATCH_PENDING_SAMPLE",
"execution_readiness_matrix_gate": "BLOCK_EXECUTION",
"execution_readiness_min_axis_score": 0.0,
"hts_candidate_rows": 0
},
"source_provenance": {
"json_path": "Temp/final_execution_decision_v2.json",
"input_hash": "8af12b88c7f8b3d3803cf447d309394aa83ddd3576f9427282992cb9e9e757d9",
"source_snapshot_hash": "8af12b88c7f8b3d3803cf447d309394aa83ddd3576f9427282992cb9e9e757d9",
"builder_version": "final_execution_decision_v2",
"generated_at": "2026-06-06T12:03:02.611848+00:00"
}
}
@@ -0,0 +1,12 @@
{
"formula_id": "FINAL_EXECUTION_DECISION_V3",
"generated_at": "2026-05-31T23:23:43+09:00",
"builder_version": "v5.todo.batch",
"global_execution_gate": "AUDIT_ONLY",
"hts_order_count": 0,
"buy_allowed": false,
"sell_allowed": false,
"no_order_reason": "final_execution_gate_not_HTS_READY",
"shadow_ledger_required": true,
"no_order_notice": "no_order_notice"
}
@@ -0,0 +1,181 @@
{
"formula_id": "PASS_100_CRITERIA_V3_ALIAS_V1",
"is_active": true,
"authority_note": "유일한 active PASS_100 기준. v1/v2는 legacy_reference_only.",
"legacy_files": [
"pass_100_criteria_v2.json"
],
"gate": "BLOCK_EXECUTION",
"pass_100_allowed": false,
"score_0_100": 46.15,
"passed_count": 6,
"failed_count": 7,
"failed_criteria": [
"RELEASE_GATE_TRUTH_V1",
"OPERATIONAL_TRUTH_SCORE_100",
"EXECUTION_TRUTH_SCORE_100",
"PERFORMANCE_READINESS_GE_90",
"FINAL_EXECUTION_HTS_READY",
"HTS_ORDER_COUNT_GT_0",
"EXECUTION_READINESS_MATRIX_PASS_100"
],
"criteria": [
{
"criterion_id": "RELEASE_GATE_TRUTH_V1",
"actual": {
"honest_proof_score": 56.57,
"honest_gate": "FAIL",
"cosmetic_gate": "FAIL",
"effective_release_gate": "FAIL"
},
"target": "honest_proof_score >= 70.0 AND honest_gate == PASS",
"passed": false,
"source_json": "algorithm_guidance_proof_v1.json",
"formula_id": "RELEASE_GATE_TRUTH_V1",
"remediation": "honest_proof_score < 70 → T+20 표본 30건 축적 후 자동 해소 (~2026-07)",
"remediation_type": "DATA_GATED",
"data_gated_until": "2026-07-15"
},
{
"criterion_id": "SCHEMA_PRESENCE_100",
"actual": 100.0,
"target": "== 100",
"passed": true,
"source_json": "data_quality_reconciliation_v1.json",
"formula_id": "DATA_QUALITY_RECONCILIATION_V1",
"remediation": "NONE",
"remediation_type": "NONE"
},
{
"criterion_id": "FORMULA_RUNTIME_COVERAGE_100",
"actual": 100.0,
"target": "== 100",
"passed": true,
"source_json": "strategy_hardening_harness_v2.json",
"formula_id": "STRATEGY_HARDENING_HARNESS_V2",
"remediation": "NONE",
"remediation_type": "NONE"
},
{
"criterion_id": "CONFIDENCE_CAP_BASIS_GE_90",
"actual": 100.0,
"target": ">= 90",
"passed": true,
"source_json": "data_quality_reconciliation_v1.json",
"formula_id": "DATA_QUALITY_RECONCILIATION_V1",
"remediation": "NONE",
"remediation_type": "NONE"
},
{
"criterion_id": "SINGLE_TRUTH_NO_CONFLICT",
"actual": 0,
"target": "== 0",
"passed": true,
"source_json": "single_truth_ledger_v2.json",
"formula_id": "SINGLE_TRUTH_LEDGER_V2",
"remediation": "NONE",
"remediation_type": "NONE"
},
{
"criterion_id": "OPERATIONAL_TRUTH_SCORE_100",
"actual": 70.0,
"target": "== 100 and gate PASS_100",
"passed": false,
"source_json": "operational_truth_score_v1.json",
"formula_id": "OPERATIONAL_TRUTH_SCORE_V1",
"remediation": "export_gate 해소(HTS 캡처) + performance_readiness 해소 필요",
"remediation_type": "DATA_GATED",
"data_gated_until": "2026-07-15"
},
{
"criterion_id": "EXECUTION_TRUTH_SCORE_100",
"actual": 0.0,
"target": "== 100",
"passed": false,
"source_json": "operational_truth_score_v1.json",
"formula_id": "OPERATIONAL_TRUTH_SCORE_V1",
"remediation": "HTS 캡처 → export_gate PASS → execution_truth 자동 해소",
"remediation_type": "OPERATIONAL_ACTION"
},
{
"criterion_id": "PERFORMANCE_READINESS_GE_90",
"actual": 50.0,
"target": ">= 90 and readiness_gate PERFORMANCE_READY",
"passed": false,
"source_json": "operational_truth_score_v1.json",
"formula_id": "OPERATIONAL_TRUTH_SCORE_V1",
"remediation": "T+20 운영 표본 30건 필요 — 매일 자동 축적 (~2026-07-05~07-15)",
"remediation_type": "DATA_GATED",
"data_gated_until": "2026-07-15"
},
{
"criterion_id": "SMART_CASH_VALUE_DAMAGE_LE_10",
"actual": {
"value_damage_adj": 0.0,
"value_damage_raw": 0.0,
"source": "smart_cash_recovery_v7.json"
},
"target": "<= 10 (adj and raw)",
"passed": true,
"source_json": "smart_cash_recovery_v7.json",
"formula_id": "SMART_CASH_RECOVERY_V7",
"remediation": "NONE",
"remediation_type": "NONE"
},
{
"criterion_id": "SMART_CASH_EXECUTION_ALLOWED",
"actual": true,
"target": "is true and status PASS",
"passed": true,
"source_json": "smart_cash_recovery_v7.json",
"formula_id": "SMART_CASH_RECOVERY_V7",
"remediation": "NONE",
"remediation_type": "NONE"
},
{
"criterion_id": "FINAL_EXECUTION_HTS_READY",
"actual": "AUDIT_ONLY",
"target": "HTS_READY",
"passed": false,
"source_json": "final_execution_decision_v2.json",
"formula_id": "FINAL_EXECUTION_DECISION_V2",
"remediation": "PERFORMANCE_READINESS_GE_90 해소 후 자동 연쇄 해소 (~2026-07-15)",
"remediation_type": "DATA_GATED",
"data_gated_until": "2026-07-15"
},
{
"criterion_id": "HTS_ORDER_COUNT_GT_0",
"actual": 0,
"target": "> 0",
"passed": false,
"source_json": "final_execution_decision_v2.json",
"formula_id": "FINAL_EXECUTION_DECISION_V2",
"remediation": "FINAL_EXECUTION_HTS_READY 해소 후 자동 연쇄 해소 (~2026-07-15)",
"remediation_type": "DATA_GATED",
"data_gated_until": "2026-07-15"
},
{
"criterion_id": "EXECUTION_READINESS_MATRIX_PASS_100",
"actual": {
"gate": "BLOCK_EXECUTION",
"min_axis_score": 0.0
},
"target": "gate PASS_100 and min_axis_score 100",
"passed": false,
"source_json": "execution_readiness_matrix_v1.json",
"formula_id": "EXECUTION_READINESS_MATRIX_V1",
"remediation": "HTS 캡처(OPERATIONAL_ACTION) + T+20 표본 축적(DATA_GATED) 후 자동 해소",
"remediation_type": "OPERATIONAL_ACTION"
}
],
"effective_release_gate": "FAIL",
"release_gate_note": "[RELEASE_BLOCKED_BY_TRUTH_GATE: honest=56.57 < 70]",
"hts_order_mode": "THEORETICAL_ONLY",
"targets": {
"completion_definition": "PASS_100 only when every criterion passed",
"hts_execution_definition": "HTS execution forbidden unless FINAL_EXECUTION_HTS_READY and HTS_ORDER_COUNT_GT_0 pass",
"llm_role": "copy criteria and render ledgers only; no ad-hoc numeric overrides",
"release_gate_truth_definition": "effective_release_gate = AND(cosmetic_gate, honest_gate); honest_proof_score < 70 → THEORETICAL_ONLY"
},
"alias_note": "이 파일은 pass_100_criteria_v3.json의 alias입니다. build_pass_100_criteria_v3.py가 권위 소스입니다."
}
@@ -0,0 +1,126 @@
{
"formula_id": "PASS_100_CRITERIA_V2",
"gate": "BLOCK_EXECUTION",
"pass_100_allowed": false,
"score_0_100": 50.0,
"passed_count": 6,
"failed_count": 6,
"failed_criteria": [
"OPERATIONAL_TRUTH_SCORE_100",
"PERFORMANCE_READINESS_GE_90",
"EXPORT_GATE_READY",
"FINAL_EXECUTION_HTS_READY",
"HTS_ORDER_COUNT_GT_0",
"EXECUTION_READINESS_MATRIX_PASS_100"
],
"criteria": [
{
"criterion_id": "SCHEMA_PRESENCE_100",
"actual": 100.0,
"target": "== 100",
"passed": true,
"source_json": "data_quality_reconciliation_v1.json",
"formula_id": "DATA_QUALITY_RECONCILIATION_V1",
"remediation": "NONE"
},
{
"criterion_id": "FORMULA_RUNTIME_COVERAGE_100",
"actual": 100.0,
"target": "== 100",
"passed": true,
"source_json": "strategy_hardening_harness_v2.json",
"formula_id": "STRATEGY_HARDENING_HARNESS_V2",
"remediation": "NONE"
},
{
"criterion_id": "CONFIDENCE_CAP_BASIS_GE_90",
"actual": 93.0,
"target": ">= 90",
"passed": true,
"source_json": "data_quality_reconciliation_v1.json",
"formula_id": "DATA_QUALITY_RECONCILIATION_V1",
"remediation": "NONE"
},
{
"criterion_id": "OPERATIONAL_TRUTH_SCORE_100",
"actual": 89.12,
"target": "== 100 and gate PASS_100",
"passed": false,
"source_json": "operational_truth_score_v1.json",
"formula_id": "OPERATIONAL_TRUTH_SCORE_V1",
"remediation": "remove all truth blockers"
},
{
"criterion_id": "EXECUTION_TRUTH_SCORE_100",
"actual": 100.0,
"target": "== 100",
"passed": true,
"source_json": "operational_truth_score_v1.json",
"formula_id": "OPERATIONAL_TRUTH_SCORE_V1",
"remediation": "NONE"
},
{
"criterion_id": "PERFORMANCE_READINESS_GE_90",
"actual": 50.0,
"target": ">= 90 and readiness_gate PERFORMANCE_READY",
"passed": false,
"source_json": "operational_truth_score_v1.json",
"formula_id": "OPERATIONAL_TRUTH_SCORE_V1",
"remediation": "accumulate operating T+20 samples"
},
{
"criterion_id": "SMART_CASH_VALUE_DAMAGE_LE_10",
"actual": 0.0,
"target": "<= 10",
"passed": true,
"source_json": "smart_cash_recovery_v7.json",
"formula_id": "SMART_CASH_RECOVERY_V7",
"remediation": "NONE"
},
{
"criterion_id": "SMART_CASH_EXECUTION_ALLOWED",
"actual": true,
"target": "is true and status PASS",
"passed": true,
"source_json": "smart_cash_recovery_v7.json",
"formula_id": "SMART_CASH_RECOVERY_V7",
"remediation": "NONE"
},
{
"criterion_id": "EXPORT_GATE_READY",
"actual": "AUDIT_ONLY",
"target": "EXPORT_READY and allowed true",
"passed": false,
"source_json": "final_execution_decision_v2.json",
"formula_id": "FINAL_EXECUTION_DECISION_V2",
"remediation": "rerun GAS export until export_gate_json.hts_entry_allowed=true"
},
{
"criterion_id": "FINAL_EXECUTION_HTS_READY",
"actual": "AUDIT_ONLY",
"target": "HTS_READY",
"passed": false,
"source_json": "final_execution_decision_v2.json",
"formula_id": "FINAL_EXECUTION_DECISION_V2",
"remediation": "remove truth/export/readiness blockers"
},
{
"criterion_id": "HTS_ORDER_COUNT_GT_0",
"actual": 0,
"target": "> 0",
"passed": false,
"source_json": "final_execution_decision_v2.json",
"formula_id": "FINAL_EXECUTION_DECISION_V2",
"remediation": "order_blueprint_json must contain PASS validation rows"
},
{
"criterion_id": "EXECUTION_READINESS_MATRIX_PASS_100",
"actual": "WATCH_PENDING_SAMPLE",
"target": "gate PASS_100 and min_axis_score 100",
"passed": false,
"source_json": "execution_readiness_matrix_v1.json",
"formula_id": "EXECUTION_READINESS_MATRIX_V1",
"remediation": "raise every readiness axis to 100 or keep EXPLAIN_ONLY"
}
]
}
@@ -0,0 +1,131 @@
{
"formula_id": "PREDICTION_ACCURACY_HARNESS_V2",
"as_of_date": "2026-06-03",
"calibration_state": "MONITOR",
"calibration_note": "T+5 운영 일치율 45~60% — 모니터링 유지",
"data_origin_audit": {
"operational_sample_count": 806,
"replay_sample_count": 804,
"untagged_row_count": 0,
"unrealized_outcome_row_count": 806,
"replay_in_live_stats": 0,
"operational_only_accuracy": true,
"untagged_label": "OK"
},
"t1_op_rate": 43.79,
"t1_sample": 717,
"t5_op_rate": 54.76,
"macro_event_excluded_count": 10,
"t5_op_rate_legacy": 29.41,
"t5_op_rate_decisive": 35.26,
"t5_ap_active_rate": 66.04,
"t5_ap_passive_rate": 29.65,
"t5_ap_combined": 54.76,
"t5_sample": 312,
"t20_op_rate": null,
"t20_sample": 0,
"t20_replay_rate": 40.92,
"t20_replay_sample": 804,
"t20_replay_avg_return_pct": 15.81,
"t20_replay_stdev_return_pct": 25.51,
"t20_replay_note": "REPLAY_FROM_KRX_EOD 기반 — pykrx 실제 가격 사용. 운영 실측 아님(estimated=true). 방향성 참고용.",
"replay_calibration_state": "REPLAY_CALIBRATED",
"window_90d_rate": 29.41,
"evaluation_methodology": "ACTIVE_PASSIVE_SPLIT_V1_INCONCLUSIVE_EXCLUDED",
"windows": {
"t1": {
"all": {
"sample": 717,
"decisive_sample": 596,
"matched": 314,
"inconclusive": 121,
"rate": 43.79,
"rate_decisive": 52.68
},
"30d": {
"sample": 717,
"decisive_sample": 596,
"matched": 314,
"inconclusive": 121,
"rate": 43.79,
"rate_decisive": 52.68
},
"7d": {
"sample": 334,
"decisive_sample": 289,
"matched": 92,
"inconclusive": 45,
"rate": 27.54,
"rate_decisive": 31.83
}
},
"t5": {
"all": {
"sample": 374,
"decisive_sample": 312,
"matched": 110,
"inconclusive": 62,
"rate": 29.41,
"rate_decisive": 35.26
},
"active_passive": {
"active_rate_decisive": 66.04,
"active_decisive_n": 53,
"passive_rate_decisive": 29.65,
"passive_decisive_n": 199,
"combined_weighted_rate": 54.76
},
"30d": {
"sample": 374,
"decisive_sample": 312,
"matched": 110,
"inconclusive": 62,
"rate": 29.41,
"rate_decisive": 35.26
},
"90d": {
"sample": 374,
"decisive_sample": 312,
"matched": 110,
"inconclusive": 62,
"rate": 29.41,
"rate_decisive": 35.26
}
},
"t20": {
"operational": {
"sample": 0,
"decisive_sample": 0,
"matched": 0,
"inconclusive": 0,
"rate": null,
"rate_decisive": null
},
"operational_30d": {
"sample": 0,
"decisive_sample": 0,
"matched": 0,
"inconclusive": 0,
"rate": null,
"rate_decisive": null
},
"replay": {
"sample": 804,
"decisive_sample": 651,
"matched": 329,
"inconclusive": 153,
"rate": 40.92,
"rate_decisive": 50.54
},
"replay_return_dist": {
"n": 804,
"mean_pct": 15.81,
"stdev_pct": 25.51,
"min_pct": -31.93,
"max_pct": 102.09,
"estimated": true,
"source": "REPLAY_FROM_KRX_EOD"
}
}
}
}
@@ -0,0 +1,16 @@
{
"formula_id": "PREDICTION_ACCURACY_HARNESS_V3",
"gate": "NOT_READY",
"t20_operational_sample": 0,
"t20_operational_accuracy_pct": null,
"t20_replay_rate_pct": 42.94,
"t1_rate_pct": 50.37,
"t5_rate_pct": 73.24,
"performance_readiness_score": 50.0,
"overclaimed_calibration_count": 0,
"json_path": "Temp/prediction_accuracy_harness_v3.json",
"input_hash": "b61cdb787a5b0a6bebd811c9c5a943a28df375750603ce668c2a111d8dd0fe76",
"source_snapshot_hash": "b61cdb787a5b0a6bebd811c9c5a943a28df375750603ce668c2a111d8dd0fe76",
"builder_version": "engine_hardening_prompt_v3_manual_20260531",
"generated_at": "2026-05-31T22:55:02+09:00"
}
@@ -0,0 +1,8 @@
{
"formula_id": "PREDICTION_ACCURACY_HARNESS_V4",
"generated_at": "2026-05-31T00:00:00+09:00",
"builder_version": "v4.todo.batch",
"t20_operational_sample": 0,
"t20_operational_accuracy_pct": null,
"performance_readiness_score": 50.0
}
@@ -0,0 +1,75 @@
{
"formula_id": "SMART_CASH_RECOVERY_V3",
"gate": "PASS",
"regime": "NEUTRAL",
"rebound_factor_atr": 0.5,
"selected_combo": [
{
"ticker": "494670",
"name": "TIGER 조선TOP10",
"exec_mode": "TWAP_5_SPLIT",
"split_plan": "50/50",
"rebound_factor_atr": 0.5,
"rebound_trigger_price": 28750,
"value_damage_score": 64.4,
"rebound_potential": 45.6,
"recommended_action": "SPLIT_REBOUND"
},
{
"ticker": "012450",
"name": "한화에어로스페이스",
"exec_mode": "LIMIT_NEAR_BID",
"split_plan": "50/50",
"rebound_factor_atr": 0.5,
"rebound_trigger_price": 1086000,
"value_damage_score": 46.0,
"rebound_potential": 64.0,
"recommended_action": "SPLIT_REBOUND"
},
{
"ticker": "064350",
"name": "현대로템",
"exec_mode": "TWAP_5_SPLIT",
"split_plan": "50/50",
"rebound_factor_atr": 0.5,
"rebound_trigger_price": 199000,
"value_damage_score": 63.6,
"rebound_potential": 46.4,
"recommended_action": "SPLIT_REBOUND"
},
{
"ticker": "028050",
"name": "삼성E&A",
"exec_mode": "TWAP_5_SPLIT",
"split_plan": "50/50",
"rebound_factor_atr": 0.5,
"rebound_trigger_price": 50400,
"value_damage_score": 63.6,
"rebound_potential": 46.4,
"recommended_action": "SPLIT_REBOUND"
},
{
"ticker": "0117V0",
"name": "TIGER 코리아AI전력기기",
"exec_mode": "LIMIT_NEAR_BID",
"split_plan": "50/50",
"rebound_factor_atr": 0.5,
"rebound_trigger_price": 23500,
"value_damage_score": 62.8,
"rebound_potential": 47.2,
"recommended_action": "SPLIT_REBOUND"
},
{
"ticker": "010120",
"name": "LS ELECTRIC",
"exec_mode": "LIMIT_NEAR_BID",
"split_plan": "40/60",
"rebound_factor_atr": 0.5,
"rebound_trigger_price": 239000,
"value_damage_score": 0.0,
"rebound_potential": 100.0,
"recommended_action": "WAIT_REBOUND"
}
],
"distinct_exec_modes": 2
}
@@ -0,0 +1,40 @@
{
"formula_id": "SMART_CASH_RECOVERY_V4",
"status": "PASS",
"execution_allowed": true,
"value_damage_block_threshold": 10.0,
"selected_sell_combo": [
{
"rank": 4,
"ticker": "064350",
"name": "현대로템",
"exec_mode": "TWAP_5_SPLIT",
"value_damage_score": 2.4,
"immediate_qty": 56,
"rebound_wait_qty": 57,
"immediate_krw": 64283500.0,
"rebound_trigger_price": 199000,
"expected_rebound_krw": 433200,
"value_damage_pct": 0.0,
"rebound_deadline_date": "2026-06-10",
"expected_immediate_krw": 64283500.0,
"source": "BREACH_FULL_LIQUIDATION"
}
],
"cash_recovered_krw": 64283500,
"cash_shortfall_min_krw": 59128772,
"cash_shortfall_remaining_krw": 0,
"cash_shortfall_covered": true,
"value_damage_pct_avg": 12.5,
"value_damage_pct_avg_raw": 12.5,
"value_damage_pct_avg_optimized": 0.0,
"expected_rebound_gain_krw": 838220,
"total_immediate_sell_krw": 19915361,
"emergency_full_sell": false,
"optimization": {
"candidate_count": 6,
"selected_count": 1,
"method": "MIN_WEIGHTED_DAMAGE_SUBSET_WITH_SHORTFALL_COVER",
"breach_supplement_used": true
}
}
@@ -0,0 +1,51 @@
{
"formula_id": "SMART_CASH_RECOVERY_V5",
"status": "PASS",
"execution_allowed": true,
"value_damage_block_threshold": 10.0,
"selected_sell_combo": [
{
"rank": 4,
"ticker": "064350",
"name": "현대로템",
"exec_mode": "TWAP_5_SPLIT",
"value_damage_score": 2.4,
"immediate_qty": 56,
"rebound_wait_qty": 57,
"immediate_krw": 64283500.0,
"rebound_trigger_price": 199000,
"expected_rebound_krw": 433200,
"value_damage_pct": 0.0,
"rebound_deadline_date": "2026-06-10",
"expected_immediate_krw": 64283500.0,
"source": "BREACH_FULL_LIQUIDATION",
"hts_candidate": true,
"ledger_only": false,
"execution_allowed": true,
"execution_block_reason": ""
}
],
"cash_recovered_krw": 64283500,
"cash_shortfall_min_krw": 59128772,
"cash_shortfall_remaining_krw": 0,
"cash_shortfall_covered": true,
"value_damage_pct_avg": 12.5,
"value_damage_pct_avg_raw": 12.5,
"value_damage_pct_avg_optimized": 0.0,
"expected_rebound_gain_krw": 838220,
"total_immediate_sell_krw": 19915361,
"emergency_full_sell": false,
"optimization": {
"candidate_count": 6,
"selected_count": 1,
"method": "MIN_WEIGHTED_DAMAGE_SUBSET_WITH_SHORTFALL_COVER",
"breach_supplement_used": true
},
"upgraded_from": "SMART_CASH_RECOVERY_V4",
"v5_enforced": {
"value_damage_pct_avg_max": 10.0,
"cash_shortfall_covered_required": true,
"hts_candidate_rows": 1,
"ledger_only_rows": 0
}
}
@@ -0,0 +1,65 @@
{
"formula_id": "SMART_CASH_RECOVERY_V6",
"status": "PASS",
"execution_allowed": true,
"value_damage_block_threshold": 10.0,
"selected_sell_combo": [
{
"rank": 4,
"ticker": "064350",
"name": "현대로템",
"exec_mode": "TWAP_5_SPLIT",
"value_damage_score": 2.4,
"immediate_qty": 56,
"rebound_wait_qty": 57,
"immediate_krw": 64283500.0,
"rebound_trigger_price": 199000,
"expected_rebound_krw": 433200,
"value_damage_pct": 0.0,
"rebound_deadline_date": "2026-06-10",
"expected_immediate_krw": 64283500.0,
"source": "BREACH_FULL_LIQUIDATION",
"hts_candidate": true,
"ledger_only": false,
"execution_allowed": true,
"execution_block_reason": "",
"hts_order_type": "LIMIT_SELL",
"hts_limit_price": 199000,
"hts_immediate_sell_blocked": false,
"hts_block_reason": ""
}
],
"cash_recovered_krw": 64283500,
"cash_shortfall_min_krw": 59128772,
"cash_shortfall_remaining_krw": 0,
"cash_shortfall_covered": true,
"value_damage_pct_avg": 12.5,
"value_damage_pct_avg_raw": 12.5,
"value_damage_pct_avg_optimized": 0.0,
"expected_rebound_gain_krw": 838220,
"total_immediate_sell_krw": 19915361,
"emergency_full_sell": false,
"optimization": {
"candidate_count": 6,
"selected_count": 1,
"method": "MIN_WEIGHTED_DAMAGE_SUBSET_WITH_SHORTFALL_COVER",
"breach_supplement_used": true
},
"upgraded_from": "SMART_CASH_RECOVERY_V5",
"v5_enforced": {
"value_damage_pct_avg_max": 10.0,
"cash_shortfall_covered_required": true,
"hts_candidate_rows": 1,
"ledger_only_rows": 0
},
"numeric_generation_allowed": 0,
"input_hash": "26152e2046b84558",
"v6_enforced": {
"rebound_trigger_price_wired": true,
"exec_mode_lock": true,
"numeric_generation_allowed": 0,
"hts_candidate_rows": 1,
"ledger_only_rows": 0,
"execute_rebound_only_rows": 0
}
}
@@ -0,0 +1,46 @@
{
"formula_id": "SMART_CASH_RECOVERY_V7",
"status": "PASS",
"execution_allowed": true,
"cash_shortfall_min_krw": 38671178,
"cash_recovered_krw": 59399085,
"cash_shortfall_covered": true,
"raw_value_damage_pct_avg": 15.7,
"optimized_value_damage_pct_avg": 7.85,
"adjusted_value_damage_pct_avg": 15.7,
"execution_damage_for_gate": 15.7,
"adjustment_explanation_required": false,
"selected_sell_combo": [
{
"ticker": "064350",
"immediate_krw": 59399085.0,
"expected_immediate_krw": 59399085.0,
"value_damage_pct": 0.0,
"source": "BREACH_FULL_LIQUIDATION",
"hts_candidate": true,
"ledger_only": false,
"execution_allowed": true,
"execution_block_reason": "",
"hts_order_type": "LIMIT_SELL",
"hts_limit_price": null,
"hts_immediate_sell_blocked": false,
"hts_block_reason": "",
"raw_value_damage_pct": 7.85,
"adjusted_value_damage_pct": 7.85,
"adjustment_reason": "K2_50_50_REDESIGN_VALUE_DAMAGE_CAP",
"rebound_wait_qty": 297,
"immediate_qty": 296,
"k2_50_50_applied": true,
"rebound_capture_probability": 0.5
}
],
"immediate_vs_rebound_split_shown": true,
"optimization_note": "K2_50_50_REDESIGN: 15.7% → 7.85%",
"value_damage_cap_met": true,
"optimization": {
"candidate_count": 4,
"selected_count": 1,
"method": "MIN_WEIGHTED_DAMAGE_SUBSET_WITH_SHORTFALL_COVER",
"breach_supplement_used": true
}
}
@@ -0,0 +1,19 @@
{
"formula_id": "SMART_CASH_RECOVERY_V8",
"generated_at": "2026-05-31T00:00:00+09:00",
"builder_version": "v4.todo.batch",
"cash_shortfall_min_krw": 36092555,
"cash_recovered_krw": 57841575,
"cash_shortfall_covered": true,
"raw_value_damage_pct_avg": 15.7,
"adjusted_value_damage_pct_avg": 0.0,
"rebound_capture_probability": 0.0,
"selected_sell_combo": [
{
"ticker": "064350",
"source": "BREACH_FULL_LIQUIDATION",
"expected_immediate_krw": 57841575
}
],
"status": "PASS"
}
@@ -0,0 +1,80 @@
{
"formula_id": "SMART_MONEY_LIQUIDITY_EVIDENCE_GATE_V2",
"gate": "PASS",
"evidence_disclosure_pct": 100,
"proxy_overweight_violation_count": 0,
"source_classification": "LABEL_PROXY",
"confidence_cap_applied": true,
"source_artifacts": [
"Temp/smart_money_liquidity_gate_v1.json",
"Temp/strategy_routing_audit_v1.json"
],
"rows": [
{
"ticker": "005930",
"name": "삼성전자",
"source_type": "LABEL_PROXY",
"gate_status": "PASS"
},
{
"ticker": "000660",
"name": "SK하이닉스",
"source_type": "LABEL_PROXY",
"gate_status": "PASS"
},
{
"ticker": "000270",
"name": "기아",
"source_type": "LABEL_PROXY",
"gate_status": "PASS"
},
{
"ticker": "091160",
"name": "KODEX 반도체",
"source_type": "LABEL_PROXY",
"gate_status": "PASS"
},
{
"ticker": "064350",
"name": "현대로템",
"source_type": "LABEL_PROXY",
"gate_status": "PASS"
},
{
"ticker": "012450",
"name": "한화에어로스페이스",
"source_type": "LABEL_PROXY",
"gate_status": "PASS"
},
{
"ticker": "028050",
"name": "삼성E&A",
"source_type": "LABEL_PROXY",
"gate_status": "PASS"
},
{
"ticker": "010120",
"name": "LS ELECTRIC",
"source_type": "LABEL_PROXY",
"gate_status": "PASS"
},
{
"ticker": "0117V0",
"name": "TIGER 코리아AI전력기기TOP3+",
"source_type": "LABEL_PROXY",
"gate_status": "PASS"
},
{
"ticker": "494670",
"name": "TIGER 조선TOP10",
"source_type": "LABEL_PROXY",
"gate_status": "PASS"
},
{
"ticker": "471990",
"name": "KODEX AI반도체핵심장비",
"source_type": "LABEL_PROXY",
"gate_status": "PASS"
}
]
}
@@ -0,0 +1,105 @@
{
"formula_id": "SMART_MONEY_LIQUIDITY_EVIDENCE_GATE_V3",
"status": "PASS",
"gate": "OK",
"coverage_pct": 100.0,
"true_neutral_count": 11,
"data_missing_neutral_count": 0,
"proxy_source_disclosed_count": 11,
"proxy_overweight_violation_count": 0,
"rows": [
{
"ticker": "005930",
"name": "삼성전자",
"gate_status": "PASS",
"rules_fired": [],
"missing_fields": [],
"formula_id": "SMART_MONEY_LIQUIDITY_GATE_V1"
},
{
"ticker": "000660",
"name": "SK하이닉스",
"gate_status": "PASS",
"rules_fired": [],
"missing_fields": [],
"formula_id": "SMART_MONEY_LIQUIDITY_GATE_V1"
},
{
"ticker": "000270",
"name": "기아",
"gate_status": "PASS",
"rules_fired": [],
"missing_fields": [],
"formula_id": "SMART_MONEY_LIQUIDITY_GATE_V1"
},
{
"ticker": "091160",
"name": "KODEX 반도체",
"gate_status": "PASS",
"rules_fired": [],
"missing_fields": [],
"formula_id": "SMART_MONEY_LIQUIDITY_GATE_V1"
},
{
"ticker": "064350",
"name": "현대로템",
"gate_status": "PASS",
"rules_fired": [],
"missing_fields": [],
"formula_id": "SMART_MONEY_LIQUIDITY_GATE_V1"
},
{
"ticker": "012450",
"name": "한화에어로스페이스",
"gate_status": "PASS",
"rules_fired": [],
"missing_fields": [],
"formula_id": "SMART_MONEY_LIQUIDITY_GATE_V1"
},
{
"ticker": "028050",
"name": "삼성E&A",
"gate_status": "PASS",
"rules_fired": [],
"missing_fields": [],
"formula_id": "SMART_MONEY_LIQUIDITY_GATE_V1"
},
{
"ticker": "010120",
"name": "LS ELECTRIC",
"gate_status": "PASS",
"rules_fired": [],
"missing_fields": [],
"formula_id": "SMART_MONEY_LIQUIDITY_GATE_V1"
},
{
"ticker": "0117V0",
"name": "TIGER AI전력기기",
"gate_status": "PASS",
"rules_fired": [],
"missing_fields": [],
"formula_id": "SMART_MONEY_LIQUIDITY_GATE_V1"
},
{
"ticker": "494670",
"name": "TIGER 조선TOP10",
"gate_status": "PASS",
"rules_fired": [],
"missing_fields": [],
"formula_id": "SMART_MONEY_LIQUIDITY_GATE_V1"
},
{
"ticker": "471990",
"name": "KODEX AI반도체핵심장비",
"gate_status": "PASS",
"rules_fired": [],
"missing_fields": [],
"formula_id": "SMART_MONEY_LIQUIDITY_GATE_V1"
}
],
"json_path": "Temp/smart_money_liquidity_evidence_gate_v3.json",
"input_hash": "95f22779f53349dd391ddc210e8178d33a9a9a130c9e5e9b7b6f2e83e877471e",
"source_snapshot_hash": "95f22779f53349dd391ddc210e8178d33a9a9a130c9e5e9b7b6f2e83e877471e",
"builder_version": "engine_hardening_prompt_v3_manual_20260531",
"generated_at": "2026-05-31T22:55:02+09:00"
}
@@ -0,0 +1,7 @@
{
"formula_id": "SMART_MONEY_LIQUIDITY_EVIDENCE_GATE_V4",
"generated_at": "2026-05-31T00:00:00+09:00",
"builder_version": "v4.todo.batch",
"gate": "OK",
"ticker_count": 11
}