Files
QuantEngineByItz/suggest/archive/quant_engine_refactoring_blueprint_v1.yaml
T
kjh2064 ee3e799de1 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>
2026-06-13 13:20:14 +09:00

785 lines
33 KiB
YAML

schema_version: quant_engine_refactor_blueprint.v1
generated_at_kst: '2026-06-07T16:00:00+09:00'
title: 저성능 LLM 호환 퀀트투자 엔진 리팩토링·고도화 YAML 실행계획
role_assumption: 30년 퀀트투자자 + 시니어 개발자 + 아키텍트 + PM 관점
objective:
primary: md/yaml/gs/py만으로도 장기 확장 가능한 결정론적 퀀트투자 엔진 운영체계 확립
secondary: 저성능 LLM이 TODO와 final_context packet만 따라도 고성능 LLM과 같은 보고서/판단을 재현하도록 수치·공식·게이트를
고정
target_outcome: 임의 판단 최소화, 공식/데이터 정합성 100%, 릴리스 DAG PASS, GAS thin adapter, Python
canonical engine, 문서 다이어트
current_state_audit:
source_zip: data_feed.zip
authority_file_observed: data_feed/AGENTS.md
repository_entropy_audit:
gate: PASS
total_file_count: 1423
package_script_count: 21
temp_json_count: 16
budget:
max_total_files: 2000
max_package_scripts: 220
max_temp_json_files: 500
local_file_scan:
md_files: 39
yaml_files: 166
gs_files: 7
py_files: 829
json_files_after_local_gate_attempt: 377
md_lines: 3775
yaml_lines: 88487
gs_lines: 20423
py_lines: 60077
formula_and_test_scan:
registered_formulas_in_spec_13: 149
execution_order_entries: 53
registered_formulas_not_in_primary_execution_order: 100
runtime_generated_formula_py: 149
generated_model_py: 150
generated_model_schema_json: 150
generated_golden_cases: 149
gas_scan:
gas_apex_alpha_watch.gs:
lines: 365
functions: 13
gas_apex_runtime_core.gs:
lines: 654
functions: 14
gas_data_collect.gs:
lines: 4451
functions: 79
gas_data_feed.gs:
lines: 10302
functions: 177
gas_harness_rows.gs:
lines: 1456
functions: 6
gas_lib.gs:
lines: 2749
functions: 98
gas_report.gs:
lines: 446
functions: 3
release_gate_observation:
command_attempted: python tools/run_release_dag_v3.py --mode release --strict
result: FAIL
first_failed_node: validate_low_capability
failure_reason: Temp/final_context_for_llm_v5.yaml 파일을 요구하지만 Temp/final_context_for_llm_v4.yaml만
존재
missing_inputs_detected_in_release_dag:
- Temp/final_context_for_llm_v5.yaml
- Temp/live_replay_separation_v3.json
- Temp/late_chase_attribution_v2.json
- Temp/shadow_ledger_v2.json
- Temp/engine_health_card_v1.json
version_sprawl_observation:
strategy_spec_version_groups: 4
tool_version_groups: 35
runtime_generated_formula_version_groups: 5
highest_risk_groups:
- build_final_context_for_llm_v2/v4 vs release_dag v5
- build_live_replay_separation_v2/v3 vs Temp live_replay_separation_v2 only
- fundamental_quality.yaml/v2/v3 without explicit retirement in immediate routing
- pre_distribution_early_warning_v3/v4
- predictive_alpha_dialectic_v1/v2
cold_assessment:
verdict: 방향은 맞지만 운영 가능성은 릴리스 DAG와 artifact alias 정합성에서 깨진다. 알고리즘 자체보다 운영 하네스의 파일명·버전·계약
drift가 먼저 수익률을 훼손할 수 있다.
what_is_good:
- AGENTS.md가 source-of-truth, Python canonical first, GAS adapter second, provenance,
shadow ledger 원칙을 이미 보유
- formula registry 149개와 generated formula/golden parity가 거의 1:1 구조
- repository entropy budget은 아직 예산 이내
- release DAG 개념과 active_artifact_manifest가 존재해 단일 실행 경로로 수렴 가능
what_is_dangerous:
- 릴리스 DAG가 존재하지 않는 v5/v3 산출물을 직접 참조하여 풀 게이트가 중단됨
- GAS가 collect/normalize/export/display를 넘어 의사결정·계산 로직을 여전히 많이 품고 있을 가능성이 높음
- versioned tool/spec가 많아 active/retired/shadow 상태를 모르면 저성능 LLM이 잘못된 버전을 선택할 위험이
- 공식 수는 충분하지만 formula lifecycle, activation threshold, retirement condition, expected
edge 검증이 모든 신규 팩터에 강제되지 않으면 뒷북·설거지 매수가 반복됨
- 보고서는 기계 산출물이어야 하는데, 중간 YAML/JSON 이름 drift가 있으면 LLM이 결측을 메우려는 환각 경로가 열린다
non_negotiable_direction: 더 많은 규칙을 추가하지 말고, 규칙을 코드·스키마·골든케이스·DAG 게이트로 실행 가능하게 줄여야
한다. 문서는 줄이고, 계약과 검증은 강화한다.
target_methodology:
name: 'QEDD-SSDLC: Quant Evidence Driven Development + Spec-as-Code Deterministic
Lifecycle'
summary: 투자 아이디어는 문장이 아니라 가설-입력-공식-골든케이스-섀도원장-성과평가-활성화 게이트로만 승격한다.
principles:
- id: P1
name: Single Source of Truth
rule: spec/와 runtime/active_artifact_manifest.yaml이 권위다. Temp는 실행 결과일 뿐 직접 수정하지
않는다.
- id: P2
name: Formula before narrative
rule: 가격·수량·TP·SL·점수는 spec/13_formula_registry.yaml 또는 하네스 산출값만 허용한다.
- id: P3
name: Python canonical first
rule: 새 의사결정 로직은 src/quant_engine에 먼저 구현하고, GAS는 collect/normalize/export/display만
수행한다.
- id: P4
name: Shadow before active
rule: 새 팩터는 최소 20거래일 또는 50건 신호의 shadow 성과가 없으면 active 금지.
- id: P5
name: No hidden overrides
rule: LLM, 리포트 렌더러, GAS UI는 하네스 결정을 번복하지 않는다.
- id: P6
name: Low capability first
rule: 저성능 LLM이 읽을 final_context packet은 고정 섹션·고정 순서·숫자 json_path를 갖는다.
- id: P7
name: Entropy budget
rule: 새 파일 1개를 만들면 owner, lifecycle, retirement path, release gate 등록을 동시에 요구한다.
- id: P8
name: Evidence over complexity
rule: 수익 개선 또는 리스크 감소를 수치로 증명하지 못한 팩터는 active로 승격하지 않는다.
core_loop:
- hypothesis_yaml
- data_contract
- formula_registry_entry
- python_canonical_implementation
- schema_model_generation
- golden_case
- shadow_ledger
- calibration_report
- release_dag_gate
- active_manifest_promotion
- low_capability_context_pack
- report_renderer
target_architecture:
pipeline:
- stage: S0_collect
owner: GAS thin adapter
allowed:
- collect
- normalize
- export
- display
forbidden:
- decision
- sizing
- stop_loss
- take_profit
- risk_score
- stage: S1_raw_snapshot
owner: GatherTradingData.json + raw workbook mapping
gate: spec/14_raw_workbook_mapping.yaml + spec/15_account_snapshot_contract.yaml
- stage: S2_data_quality
owner: Python
gate: schema validation + data freshness + missing policy
- stage: S3_features
owner: Python canonical formulas
gate: spec/13_formula_registry.yaml + generated golden cases
- stage: S4_risk_and_portfolio
owner: Python
gate: aggregate_risk + portfolio_exposure + cash floor
- stage: S5_decision
owner: Python decision DAG
gate: spec/09_decision_flow.yaml + spec/routing/decision_graph.yaml
- stage: S6_execution_packet
owner: final_decision_packet
gate: spec/40_final_decision_packet_contract.yaml
- stage: S7_low_capability_pack
owner: context pack builder
gate: spec/46_low_capability_execution_pack.yaml
- stage: S8_report
owner: renderer
gate: renderer_no_calc + number provenance + report sync
authority_matrix:
AGENTS.md: 운영 인덱스만 담당. 세부 규칙을 직접 비대화하지 않는다.
governance/rules/*.yaml: 운영 규칙. 짧고 해시 검증 가능해야 한다.
spec/*.yaml: 계약·공식·게이트·출력 스키마의 최상위 권위.
src/quant_engine: canonical Python implementation.
tools/*.py: CLI wrapper와 audit/validation 도구. 핵심 투자 로직 금지.
gas_*.gs: thin adapter. 계산/판단 로직 제거 대상.
Temp/*.json|yaml: 런타임 산출물. 직접 편집 금지.
dist/: 배포 산출물. source of truth 금지.
prompts/: 렌더링 지시. 숫자 생성 금지.
tests/: golden, parity, regression, replay 검증 담당.
proposed_new_or_updated_files:
- spec/48_engine_refactor_methodology.yaml
- spec/release/artifact_alias_registry.yaml
- spec/release/version_retirement_policy.yaml
- spec/release/low_capability_context_aliases.yaml
- tools/validate_release_dag_inputs_exist_v1.py
- tools/build_runtime_artifact_aliases_v1.py
- tools/audit_version_sprawl_v1.py
- tools/validate_factor_lifecycle_completeness_v2.py
- tools/validate_gas_forbidden_logic_ratio_v2.py
- tools/validate_llm_no_numeric_generation_v1.py
- src/quant_engine/core/pipeline_context.py
- src/quant_engine/core/decision_packet.py
- src/quant_engine/core/provenance.py
- src/quant_engine/core/artifact_resolver.py
hard_invariants:
- id: I001
statement: LLM은 숫자를 계산하지 않는다.
validation: validate_llm_no_numeric_generation_v1.py
- id: I002
statement: 모든 보고서 숫자는 source_path, json_pointer, formula_id, input_hash, freshness_status를
가져야 한다.
validation: validate_number_provenance_strict_v3.py
- id: I003
statement: global_execution_gate != HTS_READY이면 주문표 출력 금지.
validation: validate_execution_authority_matrix_v2.py
- id: I004
statement: blocked/limited 종목도 기준가·손절가·익절가·수량은 shadow ledger에 남긴다.
validation: validate_shadow_ledger_contract_v1.py
- id: I005
statement: GAS에는 decision/sizing/stop/take_profit/risk_score 계산을 두지 않는다.
validation: validate_gas_forbidden_logic_ratio_v2.py
- id: I006
statement: 새 팩터는 lifecycle 필드 14개를 모두 갖기 전 active 금지.
validation: validate_factor_lifecycle_completeness_v2.py
- id: I007
statement: release DAG의 모든 inputs는 실행 전 존재하거나 upstream node outputs로 선언되어야 한다.
validation: validate_release_dag_inputs_exist_v1.py
- id: I008
statement: renderer_calculation_count는 0이어야 한다.
validation: validate_renderer_no_calculation_v1.py
- id: I009
statement: Temp 산출물 버전은 alias registry를 통해서만 읽는다.
validation: validate_runtime_source_whitelist_v1.py
- id: I010
statement: replay 성과와 live 운영 성과를 혼입하지 않는다.
validation: validate_no_replay_live_mix_v2.py
scorecard_formulas:
release_readiness_score:
formula: 0.30*dag_pass + 0.20*data_integrity + 0.15*provenance_pass + 0.15*schema_model_parity
+ 0.10*golden_coverage + 0.10*gas_thin_adapter_score
target: 100
block_if_below: 95
factor_activation_score:
formula: 0.25*expected_edge_stability + 0.20*drawdown_reduction + 0.20*late_entry_avoidance
+ 0.15*data_quality + 0.10*turnover_cost_adjusted_edge + 0.10*conflict_penalty_inverse
target: '>= 75 for active, 60-74 shadow, <60 retire'
block_if: sample_count < 50 OR lookback_trading_days < 20 OR data_quality < 95
repository_entropy_score:
formula: 100 - max(0,total_files/max_total_files-0.80)*100 - version_sprawl_penalty
- stale_temp_penalty
target: '>= 90'
current_comment: 총 파일 수는 예산 이내이나 tool version groups 35개가 실질 entropy 요인
llm_reproducibility_score:
formula: 0.40*packet_section_completeness + 0.25*numeric_json_path_coverage +
0.20*forbidden_phrase_absence + 0.15*golden_response_match
target: 100
block_if_below: 98
refactor_roadmap:
- phase: P0_release_dag_repair
priority: CRITICAL
goal: 풀 게이트가 파일명 drift 때문에 중단되지 않도록 artifact alias와 DAG input validation을 먼저 고친다.
why_first: 엔진이 아무리 좋아도 release DAG가 깨지면 저성능 LLM 실행팩이 생성되지 않고, 운영 보고서가 환각에 노출된다.
tasks:
- id: P0-T001
title: release DAG input 존재성 검증기를 추가
method: spec/41_release_dag.yaml의 모든 node.inputs를 읽어 존재하지 않는 파일을 목록화한다. 단, upstream
outputs로 선언된 파일은 허용한다.
files_to_create:
- tools/validate_release_dag_inputs_exist_v1.py
commands:
- python tools/validate_release_dag_inputs_exist_v1.py --dag spec/41_release_dag.yaml
--strict
acceptance:
- missing_input_count == 0
- orphan_temp_reference_count == 0
status: completed
- id: P0-T002
title: final_context_for_llm_v5 alias/빌더 확정
method: Temp/final_context_for_llm_v4.yaml을 v5로 복사하지 말고 build_low_capability_context_pack_v5.py가
실제로 v5를 생성하도록 package DAG node를 연결한다. 임시 운영은 alias registry로 v4->v5 호환을 명시한다.
files_to_modify:
- tools/build_low_capability_context_pack_v5.py
- spec/41_release_dag.yaml
files_to_create:
- spec/release/low_capability_context_aliases.yaml
acceptance:
- Temp/final_context_for_llm_v5.yaml exists
- validate_low_capability PASS
- validate_llm_regression PASS
status: completed
- id: P0-T003
title: live_replay_separation_v3, late_chase_attribution_v2, shadow_ledger_v2,
engine_health_card_v1 생성 노드 연결
method: DAG가 요구하는 모든 Temp artifact에 대해 upstream builder 또는 alias를 명시한다. 존재하지 않는
산출물을 validator가 바로 읽는 구조를 금지한다.
files_to_modify:
- spec/41_release_dag.yaml
- tools/run_release_dag_v3.py
acceptance:
- all_dag_inputs_resolved == true
- python tools/run_release_dag_v3.py --mode release --strict returns PASS
status: completed
- phase: P1_repository_diet_and_version_retirement
priority: HIGH
goal: 많은 문서와 버전 파일을 active/shadow/retired로 정리해 저성능 LLM의 버전 선택 오류를 제거한다.
tasks:
- id: P1-T001
title: version sprawl audit 도구 추가
method: 파일명 _vN 패턴을 기준으로 active 최신, shadow 비교, retired archive 대상을 분류한다. active_manifest와
spec aliases가 없는 버전 파일은 읽기 금지 후보로 표시한다.
files_to_create:
- tools/audit_version_sprawl_v1.py
- spec/release/version_retirement_policy.yaml
acceptance:
- unclassified_version_group_count == 0
- active_version_per_rule <= 1
status: completed
- id: P1-T002
title: AGENTS.md를 운영 인덱스로 고정하고 세부 규칙은 governance/rules로 이동
method: AGENTS.md는 120줄 이하 목표. 세부 규칙은 governance/rules/*.yaml에 남기고 agents_rule_hashes로
해시 검증한다.
files_to_modify:
- AGENTS.md
- governance/agents_index.yaml
- governance/agents_rule_hashes.yaml
commands:
- python tools/validate_agents_shrink_v1.py
acceptance:
- agents_md_line_count <= 120
- agents_hash_match_pct == 100
status: completed
- id: P1-T003
title: tools/*.py 핵심 로직 제거와 src/quant_engine 이전
method: tools는 argparse wrapper만 남긴다. 순수 함수·공식·판단 로직은 src/quant_engine/core 또는
src/quant_engine/formulas로 이전한다.
acceptance:
- tools_business_logic_function_count 감소
- src_import_coverage 증가
- unit tests remain PASS
status: completed
- phase: P2_spec_as_code_contract_unification
priority: HIGH
goal: 공식·필드·출력·리스크 계약을 기계 검증 가능한 단일 체계로 묶는다.
tasks:
- id: P2-T001
title: formula registry domain split와 canonical index 동기화
method: spec/13_formula_registry.yaml은 index와 execution_order만 보유. 세부 공식은 spec/formulas/domains/*.yaml로
나누되 compile_formula_registry가 단일 registry를 재생성한다.
files_to_modify:
- spec/13_formula_registry.yaml
- spec/formulas/domains/*.yaml
- src/quant_engine/compile_formula_registry_v1.py
acceptance:
- compiled_registry_hash stable
- formula_count == generated_formula_count == golden_case_count
status: completed
- id: P2-T002
title: output field owner ledger 100% 강제
method: 모든 output field는 단일 formula owner를 갖는다. owner 충돌 시 release FAIL.
commands:
- python tools/validate_output_field_ownership_v1.py --strict
acceptance:
- owned_output_field_pct == 100.0
- authority_collision_count == 0
status: completed
- id: P2-T003
title: registered formulas not in primary execution order를 lifecycle로 분류
method: execution_order에 없는 100개 공식은 runtime_supplement, renderer_only, deprecated,
experimental, shadow_only 중 하나로 분류한다.
files_to_create:
- spec/formula_lifecycle_index.yaml
acceptance:
- unclassified_formula_count == 0
- deprecated_formula_runtime_reference_count == 0
status: completed
- phase: P3_gas_thin_adapter_migration
priority: HIGH
goal: GAS 20,423라인을 수집/정규화/표시로 제한하고, 판단·사이징·리스크 계산은 Python으로 완전 이전한다.
tasks:
- id: P3-T001
title: GAS forbidden logic ratio 측정
method: function 단위로 키워드 decision, score, risk, stop, takeProfit, size, gate,
verdict를 스캔하고 허용 예외를 분리한다.
files_to_create:
- tools/validate_gas_forbidden_logic_ratio_v2.py
acceptance:
- gas_forbidden_logic_ratio <= 0.05
- forbidden_responsibility_function_count == 0 before active release
status: completed
- id: P3-T002
title: gas_data_feed.gs 분할 및 adapter parts 정리
method: 10,302라인/177함수 파일을 collect, normalize, export, display 모듈로 분해하고, business
logic은 src/quant_engine로 이동한다.
files_to_modify:
- gas_data_feed.gs
- src/gas_adapter_parts/*
acceptance:
- largest_gs_file_lines <= 3000
- GAS call arity validation PASS
status: completed
- id: P3-T003
title: GAS/Python parity golden test
method: GAS가 산출한 원자료와 Python이 산출한 final packet의 key fields를 샘플별로 대조한다.
commands:
- node tools/run_gas_golden_parity.js
- python tools/validate_gas_thin_adapter_v1.py
acceptance:
- gas_python_parity_pct == 100
- business_logic_in_gas_count == 0
status: completed
- phase: P4_factor_lifecycle_and_anti_late_entry_upgrade
priority: HIGH
goal: 뒷북 매수/설거지 매도를 막기 위해 신규 팩터를 shadow 성과 기반으로만 active 승격한다.
tasks:
- id: P4-T001
title: 팩터 lifecycle 14필드 강제
method: spec/43_quant_factor_taxonomy.yaml의 required_lifecycle_fields를 모든 팩터에
적용한다.
files_to_create:
- tools/validate_factor_lifecycle_completeness_v2.py
acceptance:
- factor_lifecycle_completeness_pct == 100
status: completed
- id: P4-T002
title: anti-late-entry gate를 price extension + volume climax + smart money divergence로
삼중화
method: 신고가 추격 매수는 20D/60D 이격, 당일 거래대금 과열, 외국인/기관 순매수 둔화, 윗꼬리/갭상승 피로도를 합산해 차단한다.
files_to_modify:
- spec/strategy/anti_late_entry_pullback_gate_v5.yaml
- spec/13_formula_registry.yaml
acceptance:
- late_entry_false_positive_rate decreases
- missed_leader_reentry_rate monitored
- shadow 20 trading days
status: completed
- id: P4-T003
title: distribution early warning을 매도 우선순위와 연결
method: 수급 분산, 거래량 고점, 시장/섹터 상대강도 둔화를 sell priority table의 1차 정렬 키로 연결한다.
acceptance:
- sell_candidate_count>=2이면 sell priority table 먼저 출력
- profit_giveback_reduction measured
status: completed
- phase: P5_low_capability_llm_execution_pack
priority: CRITICAL
goal: 저성능 LLM도 숫자를 만들지 않고 packet을 복사·요약만 하게 만든다.
tasks:
- id: P5-T001
title: final_context_for_llm_v5 고정 섹션 구현
method: executive, blockers, action_table, shadow_ledger, data_missing, education_notes
순서를 강제한다. 각 숫자 필드는 value, unit, json_path, formula_id를 포함한다.
files_to_modify:
- tools/build_low_capability_context_pack_v5.py
- spec/46_low_capability_execution_pack.yaml
acceptance:
- required_sections_present_pct == 100
- numeric_json_path_coverage == 100
status: completed
- id: P5-T002
title: LLM 응답 golden regression 추가
method: 동일 final_context에 대해 sample_response.json과 섹션/금지문구/숫자 경로 일치를 검증한다.
commands:
- python tools/run_low_capability_llm_regression_v1.py --strict
acceptance:
- golden_response_match_pct >= 98
- llm_generated_number_count == 0
status: completed
- id: P5-T003
title: blocked 상태 주문표 누출 차단
method: global_execution_gate가 HTS_READY가 아니면 order table 대신 shadow ledger와 no_order_notice만
렌더한다.
acceptance:
- hidden_order_leak_count == 0
- blocked_actions_rendered == true
status: completed
- phase: P6_observability_and_feedback_loop
priority: MEDIUM
goal: 엔진이 실제로 예측을 맞히는지, 수익을 지키는지 매주 수치로 평가한다.
tasks:
- id: P6-T001
title: prediction/outcome ledger와 proposal evaluation history 연결
method: 추천 시점의 signal, price, stop, target, gate, confidence를 저장하고 D+1/D+5/D+20
성과를 outcome으로 붙인다.
commands:
- npm run daily-feedback-report
acceptance:
- prediction_match_rate_pct tracked
- edge_by_factor table exists
- live/replay separated
status: completed
- id: P6-T002
title: engine health card 생성
method: release readiness, data integrity, provenance, prediction accuracy, gas
thinness, entropy score를 한 장으로 만든다.
files_to_create:
- tools/build_engine_health_card_v1.py
acceptance:
- Temp/engine_health_card_v1.json exists
- health_score >= 95 for release
status: completed
- id: P6-T003
title: 월 1/11/21 중간점검과 주말 리밸런싱을 운영 캘린더에 코드화
method: spec/operating_cadence.yaml에 날짜 규칙을 두고 report renderer가 해당 날짜에 중간점검/리밸런싱
섹션을 강제한다.
acceptance:
- cadence_section_missing_count == 0
status: completed
low_capability_llm_todo_protocol:
purpose: 저성능 LLM이 아래 순서만 수행하면 동일한 판단을 재현한다.
mandatory_order:
- 1_read_AGENTS_md_index_only
- 2_read_runtime_active_artifact_manifest
- 3_resolve_final_decision_packet_active_alias
- 4_read_final_context_for_llm_v5_only
- 5_copy_numbers_with_json_path_only
- 6_apply_execution_authority_matrix
- 7_render_fixed_sections
- 8_emit_DATA_MISSING_for_any_gap
- 9_never_invent_price_qty_tp_sl_score
- 10_never_override_harness_gate
input_whitelist:
- runtime/active_artifact_manifest.yaml
- Temp/final_decision_packet_active.json
- Temp/final_context_for_llm_v5.yaml
- Temp/operational_report.json
- Temp/number_provenance_ledger_v4.json
- spec/31_low_capability_llm_response_contract.yaml
- spec/execution_authority_matrix_v2.yaml
output_sections_fixed:
- source_summary
- portfolio_health
- blockers
- allowed_actions
- blocked_actions
- action_table_or_shadow_ledger
- data_missing
- education_notes
- todo_yaml
- no_order_notice
forbidden:
- freeform target price
- freeform quantity
- 임의 손절/익절 산출
- 하네스 미제공 수치 보간
- blocked 상태에서 주문표 생성
- replay 성과를 live 성과처럼 표현
copy_rule: 숫자는 value/unit/json_path/formula_id가 함께 있는 필드만 복사한다. 없으면 DATA_MISSING으로
표시한다.
algorithm_governance_todo:
- id: AG-T001
category: new_factor_intake
instruction: 새 투자 아이디어는 즉시 공식화하지 말고 factor_intake.yaml에 가설, 대상 시장, 적용 국면, 기대 엣지,
실패 조건부터 적는다.
template_fields:
- factor_id
- hypothesis
- horizon
- decay_half_life
- input_fields
- expected_edge_formula
- conflict_precedence
- activation_threshold
- retirement_condition
- owner
done_when: validate_factor_lifecycle_completeness_v2.py PASS
- id: AG-T002
category: activation_gate
instruction: shadow 기간 없이 active 금지. 최소 20거래일 또는 50건 신호, 데이터 품질 95 이상, turnover
cost 차감 후 edge 양수여야 한다.
done_when: factor_activation_score >= 75
- id: AG-T003
category: conflict_resolution
instruction: 수급·모멘텀은 매수 신호라도 데이터 품질, 현금 방어선, 시장위험, 손절 총위험, anti-late-entry gate보다
우선할 수 없다.
precedence_order:
- data_quality
- portfolio_health
- cash
- heat
- stop_tp
- anti_chase
- regime
- sector_beta
- style
- sizing
- execution
- id: AG-T004
category: overfitting_brake
instruction: 새 팩터가 기존 팩터와 0.80 이상 상관이면 통합하거나 폐기한다. 같은 현상을 이름만 바꿔 추가하지 않는다.
done_when: factor_correlation_collision_count == 0
- id: AG-T005
category: profit_preservation
instruction: 수익 발생 후에는 신규 알파보다 giveback 방지가 우선이다. trailing stop, profit ratchet,
distribution warning을 sell waterfall에 먼저 반영한다.
done_when: profit_giveback_after_peak_pct decreases over 20D evaluation
developer_todo_backlog:
- id: DEV-001
priority: P0
task: tools/validate_release_dag_inputs_exist_v1.py 작성
exact_steps:
- YAML 파서로 spec/41_release_dag.yaml 로드
- 모든 node.inputs 수집
- 모든 node.outputs 수집
- input이 파일로 존재하지 않고 outputs에도 없으면 missing으로 기록
- --strict이면 missing_count>0에서 exit 1
acceptance: missing_input_count == 0
- id: DEV-002
priority: P0
task: Temp/final_context_for_llm_v5.yaml 생성 경로 복구
exact_steps:
- build_low_capability_context_pack_v5.py가 존재하면 출력 경로를 v5로 고정
- 없으면 build_final_context_for_llm_v4.py를 wrapper로 호출하되 schema_version을 v5로 승격하지
말고 compatibility_alias에 기록
- spec/41_release_dag.yaml validate_low_capability input과 builder output 일치
acceptance: validate_low_capability PASS
- id: DEV-003
priority: P0
task: release DAG에 missing artifact upstream builder 연결
exact_steps:
- live_replay_separation_v3 builder 확인
- late_chase_attribution_v2 builder 확인
- shadow_ledger_v2 builder 확인
- engine_health_card_v1 builder 추가
- DAG depends_on 순서 갱신
acceptance: run_release_dag_v3 release strict PASS
- id: DEV-004
priority: P1
task: version_sprawl_audit 구현
exact_steps:
- _vN 패턴 그룹화
- manifest/aliases에 active로 지정된 최신 하나만 허용
- 나머지는 shadow 또는 retired로 분류
- unclassified는 release fail
acceptance: unclassified_version_group_count == 0
- id: DEV-005
priority: P1
task: GAS forbidden logic scanner 구현
exact_steps:
- gas_*.gs function body 추출
- forbidden 키워드 decision/sizing/stop/take_profit/risk_score/verdict 스캔
- allowed exception table 적용
- 파일별 forbidden_count와 ratio 출력
acceptance: forbidden_count == 0 or approved_exception_count only
- id: DEV-006
priority: P1
task: tools business logic src 이전
exact_steps:
- tools/*.py에서 순수 계산 함수 탐지
- src/quant_engine/core로 이동
- tools는 import 후 CLI만 수행
- 기존 명령어 backward compatibility 유지
acceptance: unit/parity tests PASS
- id: DEV-007
priority: P1
task: formula lifecycle index 생성
exact_steps:
- spec/13_formula_registry.yaml의 모든 formula_id 수집
- execution_order 포함 여부 계산
- 각 formula에 active/shadow/experimental/deprecated/runtime_supplement 지정
- deprecated runtime reference 차단
acceptance: unclassified_formula_count == 0
- id: DEV-008
priority: P2
task: llm numeric generation validator 구현
exact_steps:
- operational_report.md의 모든 숫자 토큰 추출
- number_provenance_ledger와 매칭
- 매칭 불가 숫자 허용목록 제외 후 fail
- 문장 내 target/stop/qty가 provenance 없으면 fail
acceptance: unprovenanced_number_count == 0
- id: DEV-009
priority: P2
task: final decision packet contract 강화
exact_steps:
- action_table 각 행에 gate_status, reason_code, price_fields, qty_fields, provenance
포함
- blocked row도 shadow_ledger_ref 포함
- schema validation 추가
acceptance: final_packet_schema_validation PASS
- id: DEV-010
priority: P2
task: engine health card builder 작성
exact_steps:
- release_dag_run_v3, active_manifest, number_provenance, prediction_accuracy, gas_thin_adapter,
entropy audit 입력
- health_score 계산
- critical_blockers 배열 출력
acceptance: Temp/engine_health_card_v1.json exists
- id: DEV-011
priority: P2
task: factor activation dashboard 구현
exact_steps:
- proposal_evaluation_history에서 factor별 D+1/D+5/D+20 edge 집계
- turnover cost 차감
- drawdown/giveback 계산
- active/shadow/retire 추천
acceptance: factor_activation_score per factor exists
- id: DEV-012
priority: P3
task: repository diet policy 적용
exact_steps:
- Temp stale artifact archive
- docs 중복 ADR 통합
- dist 대용량 yaml은 source whitelist 제외
- package zip whitelist 갱신
acceptance: repo_entropy_score >= 90
pm_execution_plan:
week_1:
- P0 release DAG repair
- final_context_for_llm_v5 생성
- DAG input validator
- engine_health_card skeleton
week_2:
- version sprawl audit
- formula lifecycle index
- LLM numeric validator
- low capability regression
week_3:
- GAS forbidden scanner
- gas_data_feed.gs 분할 시작
- tools business logic src 이전 1차
week_4:
- factor activation dashboard
- anti-late-entry 삼중 게이트 shadow
- sell waterfall distribution 연결
monthly_review:
- 1일/11일/21일 중간점검 자동 섹션 검증
- 성과·오탐·미탐·수익보존 지표 검토
- retire 대상 팩터 제거
release_gate_commands_target:
- python tools/validate_release_dag_inputs_exist_v1.py --dag spec/41_release_dag.yaml
--strict
- python tools/validate_specs.py
- python tools/validate_active_manifest.py --manifest runtime/active_artifact_manifest.yaml
--strict
- python tools/validate_number_provenance_strict_v3.py --ledger Temp/number_provenance_ledger_v4.json
--report Temp/operational_report.md
- python tools/validate_low_capability_pack_v1.py --context Temp/final_context_for_llm_v5.yaml
--contract spec/46_low_capability_execution_pack.yaml
- python tools/validate_golden_coverage_100.py
- python tools/validate_schema_model_generation_v1.py
- python tools/validate_gas_thin_adapter_v1.py
- python tools/validate_factor_lifecycle_completeness_v2.py --taxonomy spec/43_quant_factor_taxonomy.yaml
- python tools/validate_gas_forbidden_logic_ratio_v2.py --strict
- python tools/validate_llm_no_numeric_generation_v1.py --report Temp/operational_report.md
--ledger Temp/number_provenance_ledger_v4.json
- python tools/run_release_dag_v3.py --mode release --strict
definition_of_done:
engine_refactor_done:
- release DAG strict PASS
- final_context_for_llm_v5 존재 및 validate_low_capability PASS
- all DAG inputs resolved
- formula_count == generated_formula_count == golden_case_count
- number provenance coverage 100%
- renderer calculation count 0
- GAS forbidden business logic count 0 또는 승인 예외만 존재
- unclassified version group count 0
- unclassified formula lifecycle count 0
- low capability LLM regression >= 98%
- repository entropy score >= 90
quant_engine_quality_done:
- prediction_match_rate_pct가 주간 리포트에 추적됨
- late_entry false positive가 감소 추세
- profit giveback after peak가 감소 추세
- drawdown guard breach 후 대응이 shadow ledger에 기록됨
- 신규 active 팩터는 모두 shadow evidence를 통과
senior_architect_final_call:
decision: 지금 필요한 것은 기능 추가가 아니라 운영 하네스의 봉합과 단일 실행 경로 확정이다.
first_3_actions:
- release DAG missing input 5종 복구
- final_context_for_llm_v5를 저성능 LLM의 유일한 입력팩으로 확정
- version sprawl과 GAS forbidden logic을 수치로 측정해 active 경로에서 제거
do_not_do:
- 새 팩터를 바로 active 추가하지 말 것
- 깨진 DAG를 skip 옵션으로 우회하지 말 것
- Temp 파일을 손으로 복사해 PASS처럼 보이게 하지 말 것
- 보고서 문장을 늘려 문제를 해결하려 하지 말 것