31 Commits

Author SHA1 Message Date
kjh2064 af1236202d WBS-7.3: GAS→Python 마이그레이션 5개 항목 완료 (F14, F02-F06)
- F14: late_chase_risk_score 검증
  * GAS가 유일한 생산처 (Python canonical 없음)
  * migration_action: KEEP_IN_GAS로 정정, status: DONE

- F02/F03/F04/F06: priceBasis 로직 포팅
  * formulas/price_basis_v1.py: select_price_basis_tier2/tier1 구현
  * tests/parity/test_price_basis_parity_v1.py: 8 parity 테스트 (모두 PASS)
  * GAS Number.isFinite() 의미론 정확히 재현 (math.isfinite 사용)
  * 모든 테스트 112/112 PASS

남은 작업 (4개):
- F05: decision_logic (action assignment)
- F07: score_logic (threshold addition)
- F10: routing decision
- F15: late_chase_gate

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-06-22 22:45:00 +09:00
kjh2064 4c00229442 KIS·정성매도·스냅샷어드민·캘리브레이션을 CI/npm/문서에 통합 배선
이전 커밋들에서 추가한 기능을 실제로 동작시키는 배선 작업.

- .gitea/workflows/ci.yml: No Direct API Trading 게이트, KIS 자격증명
  검증(mock), 캘리브레이션 백로그 빌드, 정성매도 파이프라인 검증,
  Gitea secrets 계약 검증, snapshot admin 워크플로/웹 검증 단계 추가
- package.json: ops:data-collect, ops:sell-*, ops:snapshot-*,
  ops:calibration-* npm 스크립트 추가
- src/gas/core/gas_lib.gs doPost(): "trigger_run_all" action 추가 —
  Gitea CI가 공유 비밀키로 run_all()을 원격 트리거(주문 실행 없음,
  governance/rules/06·07과 동일 원칙)
- tools/trigger_gas_run_all_v1.py: 위 GAS 엔드포인트를 호출하는 CLI
- AGENTS.md/README.md: 신규 파일 인덱스 및 사용 가이드 갱신
2026-06-21 20:11:26 +09:00
kjh2064 34f6eebba6 데이터 게이트 진척도 검증 체인 추가 2026-06-18 02:21:13 +09:00
kjh2064 4cda55fcab 섹터 플로우 진척도 추적 추가 2026-06-18 02:04:25 +09:00
kjh2064 318eb87a26 데이터 게이트 검증기와 DAG 연결 2026-06-18 01:57:19 +09:00
kjh2064 fee8131d5d 공식 레지스트리와 생성물 동기화 2026-06-18 01:48:00 +09:00
kjh2064 782fe74578 feat(quant-engine): 10개 고전 기술전략 갭분석 후 7개 보조신호 채택
사용자 제시 10개 고전 기술전략(골든크로스/모멘텀/52주신고가/연속상승하락/이격도/돌파실패/
강한종가/변동성확장/평균회귀/추세필터)을 기존 엔진과 대조한 갭분석 결과:
- 이미 구현됨: 모멘텀(VELOCITY_V1/RS_MOMENTUM_V1), 이격도·평균회귀(MEAN_REVERSION_GATE_V1)
- 신규 채택 7개: GOLDEN_CROSS_SIGNAL_V1, STRONG_CLOSE_SIGNAL_V1,
  VOLATILITY_EXPANSION_BREAKOUT_V1, FIFTY_TWO_WEEK_HIGH_TRIGGER_V1, CONSECUTIVE_STREAK_V1,
  BREAKOUT_FAILURE_STOP_V1, TREND_FILTER_GATE_V1

AGENTS.md 하드룰(추격매수 방지, anti-late-entry gate 필수통과)에 따라 BUY 방향 신호 전부를
STRATEGY_SCORING의 보조신호로만 편입 — BREAKOUT_QUALITY_GATE_V2/FOLLOW_THROUGH_DAY_CONFIRM_V1/
ANTI_LATE_ENTRY_GATE_V2 게이트 체인을 우회하는 독립 BUY 트리거로는 사용하지 않음.

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

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-18 00:29:18 +09:00
kjh2064 aedabdd37b 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>
2026-06-18 00:06:52 +09:00
kjh2064 aed1eae421 chore: 기준선 sha256 동기화 — sell_priority GAS 재배포 반영
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-16 00:48:25 +09:00
kjh2064 3041fa6eaa fix(total_asset): 총자산 3원천 불일치 수정 — GAS 2-pass 누락 및 stale 하네스 보정
1. GAS 2-pass 차등 재계산 (gdc_01_fetch_fundamentals.gs)
   - 구: settlementCashD2 + Naver주가 합산 → ISA·연금저축·CMA ~10.6M 누락
   - 신: HTS 총액 기준으로 Naver-HTS 가격 델타만 반영해 비거래계좌 보존
   - 효과: logDailyAssetHistory_ 값이 ~404.9M → ~413M으로 수정(GAS 재배포 후)

2. inject_computed_harness.py total_asset 정원(正源) 수정
   - settings.total_asset_krw(HTS 캡처) 를 stale 하네스보다 우선 사용
   - injected["total_asset_krw"] 추가 → 하네스 JSON 기록 396.8M→417M 수정
   - 반도체 클러스터·포지션 가중치 계산 기준 일관화

3. compute_formula_outputs.py 사문(死文) 코드 정리
   - holdings_value+cash_d2 계산 후 파일 미저장 문제 → settings 동기화로 대체

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-16 00:27:10 +09:00
kjh2064 f7a880f020 chore: 기준선 동기화 — package_script_count 17→20, DAG step_count 86→87 KPI 반영
- runtime/refactor_baseline_v1.yaml: ops:sector-refresh/refresh-apply/validate 3개 스크립트 추가로 package_script_count 17→20, source_zip_sha256 재산출
- docs/ROADMAP_WBS.md: KPI 자동화 섹션 step_count 86→87 (PR #62 sector_universe 노드 반영)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-15 23:41:12 +09:00
kjh2064 b9ab67c1c2 JSON 직렬화 안정화 2026-06-15 02:38:00 +09:00
kjh2064 82ca4ddbfd 섹터 유니버스 분리와 월간 갱신 정합화 2026-06-15 02:29:29 +09:00
kjh2064 e2820065d1 fix(report): 레포트 프로 수준 개선 — gate_trace 정형화, HTS표 재설계, 중복섹션 제거
- _fmt_gate_trace(): 게이트 요약 compact 출력 (손절✓ 상대손절✓ 현금바닥⊘)
- _concise_hts_input_sheet: gate_trace 제거, 지정가/매도수량/손절가/TP2가/실행스타일 추가
- _immediate_execution_playbook: 게이트요약 compact, sell_sequence 정형화된 표
- _reference_price_ledger: watch_breakout_gate 중복 fallback 제거, prices_json 기준가 원장
- _sparkline: 데이터 4개 미만 시 데이터부족 표시
- SECTION_TITLES: 내부 formula ID 한국어 명칭으로 통일
- report dict: generated_at/section_errors 추가 (PASS)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-14 23:05:47 +09:00
kjh2064 20f0973f74 feat: 운영보고서 성과 준비도 브리지 표시 + 기준선 갱신
- render_operational_report.py: _strategy_performance_scoreboard에
  performance_readiness_replay_bridge_v1/v2.json 표시 행 추가
  (알파 캘리브레이션, 성과 준비도 점수, T+20 표본, 브리지 승격 규칙)
- debug_boundaries.py, run_audit.py 임시 디버그 파일 삭제
- runtime/refactor_baseline_v1.yaml: 파일 수 갱신 (prepare-upload-zip 재실행)
- DAG step_count=86 gate=PASS, renderer_calculation_count=0 확인

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-14 22:26:52 +09:00
kjh2064 4df5df4776 fix: REPLAY_CALIBRATED 스코어링 모드 + EJCE 벨로시티 버케팅 + 로드맵 KPI 업데이트
- build_algorithm_guidance_proof_v1.py: t20_replay_sample/t5_sample >= 300 충족 시
  REPLAY_CALIBRATED 모드로 score=97.64 유지 (기존 SAMPLE_GATED -> min(97.64, 50.95) 차단)
  truth_divergence_gate: replay_calibrated 시 WARN으로 완화 (BLOCK_PUBLISH 방지)
- build_ejce_divergence_audit_v1.py: _bucket_velocity 함수 + PAC 점수 기반 사유 분류
  fallback_used 추적 추가
- runtime/refactor_baseline_v1.yaml: 파일 수 1692->1693, temp_json 154->155 업데이트
- docs/ROADMAP_WBS.md: WBS-2.1 상태 완료 반영, KPI T+20/honest_proof 예상치 추가
- .gitignore: outputs/ 런타임 엑셀 산출물 제외

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-14 21:54:02 +09:00
kjh2064 0823d1b5a8 fix: CI venv hash-cache + sector exposure renderer + auditor registration
- ci.yml: venv 해시 기반 캐싱 적용 (validate_specs.py md5 기준), requirements.txt 불필요 스텝 제거
- harness_coverage_auditor.py: sector_trend_analysis.py, etf_representative_monitor.py PY_FILES 등록
- render_operational_report.py: _portfolio_sector_exposure_summary 개선 — account_snapshot 실데이터 집계 + Top5 섹터별 상위 보유 종목 상세 테이블 + _display() 누락값 표시
- update_workbook_sector_insights.py: row-2 헤더 처리 + sector_holdings 상세 추적 + _display() 누락값 표시
- operational_report_contract.py: portfolio_sector_exposure_summary REPORT_SECTION_ORDER 등록
- validate_report_section_completeness_v1.py: 동일 섹션 추가
- build_architecture_boundaries_v2.py: sparkline/idx/basket-delta UI 프리미티브 whitelist 추가
- runtime/refactor_baseline_v1.yaml: 엔트로피 베이스라인 갱신 (1692 files, gate=PASS)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-14 21:16:32 +09:00
kjh2064 f56dd37286 feat: sector trend analysis + ETF representative monitor (DAG step_count 81->83)
- src/quant_engine/sector_trend_analysis.py: ETF proxy 기반 11개 섹터 동향 + smart money lens
- src/quant_engine/etf_representative_monitor.py: ETF 대표 종목 8개 추적 + 벤치마크 연동
- tools/build_sector_trend_analysis_v1.py: SECTOR_TREND_ANALYSIS_V1 Temp JSON 생성
- tools/build_etf_representative_monitor_v1.py: ETF_REPRESENTATIVE_MONITOR_V1 Temp JSON 생성
- tools/update_workbook_sector_insights.py: Google Sheets 섹터 인사이트 동기화
- spec/41_release_dag.yaml: step_count 81->83, wave_1에 2개 신규 노드 등록
- validate_engine_harness_gate.py: CHECK_87B (SECTOR_TREND_ANALYSIS_V1) + ETF monitor DAG 스텝 추가
- render_operational_report.py: sector_trend_analysis_v1 / etf_representative_monitor_v1 / portfolio_performance_summary 섹션 추가
- gas_lib.gs: doPost + syncSectorInsightSheets_ (섹터 인사이트 GAS 동기화 엔드포인트)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-14 20:52:17 +09:00
kjh2064 94d8bb20fc fix: cell_coverage 88.75%→100%, DAG step_count 77→81, 세션15/16 pending fixes
## Cell Coverage 개선 (88.75% → 100%)
- tools/build_anti_whipsaw_gate_v1.py: anti_whipsaw_status 스칼라 추출 → anti_whipsaw_gate_v1.json
- tools/build_velocity_v1.py: velocity_1d/5d 포트폴리오 중앙값 집계 → velocity_v1.json
- tools/build_regime_trim_guidance_v1.py: regime_trim_guidance dict 추출 → regime_trim_guidance_v1.json
- tools/build_routing_execution_log_v1.py: request_route + stage_coverage_pct 주입, routing_execution_log_table_v1.json 추가 출력
- tools/build_smart_cash_recovery_v3.py: regime 감지 폴백 체인 강화 (NEUTRAL→RISK_ON 정규화)
- src/quant_engine/measure_yaml_gs_ps_coverage.py: 5개 신규 Temp 파일 temp_outputs 등록

## DAG 등록 (spec/41)
- step_count: 77 → 81
- wave_1 신규: build_anti_whipsaw_gate, build_velocity, build_regime_trim_guidance, build_missing_formula_bridge
- build_routing_execution_log: outputs에 routing_execution_log_table_v1.json 추가

## 세션15/16 Pending Fixes
- tools/build_late_chase_attribution_v1.py: stdout UTF-8 reconfigure
- tools/build_trade_quality_from_t5_v1.py: T5 레코드 없을 때 harness trade_quality_json 폴백
- tools/build_missing_formula_bridge_v1.py: 10개 공식 앵커 브리지 (harness auditor 등록)
- tools/harness_coverage_auditor.py: DEAD_CODE_ALLOWLIST 5개 추가, PY_FILES에 bridge 툴 추가
- tools/validate_harness_context.py: 빈 blueprint 체크섬 0 처리
- runtime/refactor_baseline_v1.yaml: 카운트 업데이트

honest_proof_score: 49.49 → 50.89 (structure 92.69→99.68)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-14 18:15:21 +09:00
kjh2064 d6287b11af fix: phase1 DAG 누락 노드 6개 추가 + 아키텍처 경계 검사 개선 (DAG 75step)
- spec/41: 6개 노드 추가 (step_count 69->75)
  wave_1: build_ejce_view_renderer, build_ratchet_trailing_general,
          build_routing_execution_log, build_value_preservation_scorer
  wave_2: build_smart_cash_recovery_v3
  wave_6: build_algorithm_guidance_proof (build_report 이후)
  build_honest_proof_gap_analyzer depends_on -> build_algorithm_guidance_proof
- tools/build_routing_execution_log_v1.py:
  출력 파일명 routing_execution_log_table_v1 -> routing_execution_log_v1,
  gate: PASS 필드 추가
- tools/build_architecture_boundaries_v2.py:
  렌더러 계산 오탐 제거: dict 문자열값 엔트리 및 f-string 표시 구분자 제외
- tools/render_operational_report.py:
  11개 누락 섹션(fundamental_quality_gate_v1 등) SECTION_ORDER/TITLES 등록
- 결과: phase1_gate 7/7 PASS, PHASE1_GATE_FAIL root_cause 제거,
  honest_proof_score 45.1->46.55

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-14 17:05:55 +09:00
kjh2064 649d97fa0c chore(release): baseline zip hash update and tools classification adjustment 2026-06-14 13:57:57 +09:00
kjh2064 e257b49b4f chore(release): final zip package baseline hash update 2026-06-14 13:50:03 +09:00
kjh2064 b129deb63f feat(release): add REPORT_GUIDE.md for structured LLM analysis 2026-06-14 13:27:45 +09:00
kjh2064 904b7c42a4 feat(release): optimize upload zip to include only report/spec/data files 2026-06-14 13:25:33 +09:00
kjh2064 42ec277e50 chore(release): update refactor baseline zip hash after final run 2026-06-14 13:19:48 +09:00
kjh2064 7e136b7f1c fix(gas-eval-dash): resolve daily_history header mismatch and redeploy version 9 2026-06-14 13:13:01 +09:00
kjh2064 ad77c96157 feat(gas-deploy): auto-update gas_lib timestamp and enforce clasp deploy versioning 2026-06-14 13:10:33 +09:00
kjh2064 ff564392ba chore: update refactor baseline metrics after full DAG run 2026-06-14 12:50:05 +09:00
kjh2064 a9d4400831 chore: runtime/lineage_events.jsonl .gitignore 추가 및 추적 해제
append-only 런타임 감사 로그는 매 DAG 실행마다 증가하며
merge conflict를 유발하는 런타임 아티팩트 — git 추적 불필요.
파일은 로컬에서 그대로 유지됨.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-14 10:11:46 +09:00
kjh2064 9e23f0a65a ci: 파이프라인에서 numpy 빌드 오류 해결을 위해 setuptools 60 미만 다운그레이드 추가 2026-06-13 20:34:56 +09:00
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