Commit Graph

9 Commits

Author SHA1 Message Date
kjh2064 416da59607 WBS-8.7: spec-code synchronization expanded to 66.4% (93/140 files)
Coverage improvement: 24.07% (39 files) → 66.4% (93 files)
- Tagged 54 additional spec files with has_code_implementation: true
- Covered: strategy/*, risk/*, exit/*, formulas/*, governance/*, contracts
- Target: 50% (81 files) — EXCEEDED by 12 files

Files tagged:
- spec/strategy: 20 files (action_matrix, entry_core, entry_gates, etc.)
- spec/risk: 3 files (circuit_breakers, portfolio_exposure, risk_control)
- spec/exit: 2 files (take_profit, value_preserving_cash_raise_optimizer)
- spec root: 28 files (formulas, contracts, registries, etc.)
- spec/03_formulas: 2 files (formula_registry, output_field_owner_ledger)
- spec/data_quality: 1 file (expectations)
- spec/fields: 1 file (field_dictionary)
- spec/formulas: 1 file (manifest)

Impact:
- Improved LLM radar discoverability for spec-to-code linkage
- Ready for WBS-9.6 (LLM document optimization phase)

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-06-22 23:51:58 +09:00
kjh2064 9b1ef4a100 Merge WBS-7 완료: GAS→Python 마이그레이션 + 보완고도화
## 주요 변경사항

###  완료된 11개 항목

- WBS-7.1: 캘리브레이션 실증 전환 도구
- WBS-7.2: T+5 지표 단일 진실원천 통일
- WBS-7.3: GAS→Python 공식 마이그레이션 재검토 + F05/F10 포팅 
- WBS-7.4: Deprecated 별칭·시트 정리
- WBS-7.5: 임시 하드코딩 폴백 비례화
- WBS-7.6: 슬리피지 실측 보정 스캐폴딩
- WBS-7.7: E2E 통합 테스트 구축
- WBS-7.8: ETF NAV/공매도 자동화 검토 및 운영절차 명문화
- WBS-7.9: snapshot_admin Synology POC 기본 보안 게이트
- WBS-7.10: 어드민 페이지 Tabler 그리드 조회
- WBS-7.11: spec-코드 동기화 게이트

### F05/F10 포팅 (이번 세션)

**F05 (calc_exit_sell_action)**
- 7단계 우선순위 계층 구현
- JavaScript Number.isFinite() 의미론 보장 via safe_float()
- 가격 폴백 체인 (tp2 → tp1 → close)
- 17개 parity 테스트 PASS

**F10 (run_route_flow)**
- 5개 게이트 순차 필터링
- Stop_Breach → Relative_Stop → Intraday_Lock → Heat_Gate → Mean_Reversion
- 17개 parity 테스트 PASS

### 📊 테스트 상태

**Parity 테스트**: 64/64 PASS
- F02/F04/F06 (price_basis): 8개
- F05 (execution_decision): 17개
- F07 (score_thresholds): 9개
- F10 (routing_decision): 17개
- F11 (classify_order_type): 13개

### 🎯 최종 상태

Phase 1~6 모두 완료, Phase 7 보완·고도화 DONE → 엔진 전체 경화 완료.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>

# Conflicts:
#	GatherTradingData.json
#	governance/gas_logic_migration_ledger_v1.yaml
2026-06-22 23:22:32 +09:00
kjh2064 6d06897fd7 WBS-7.8/7.10: 기술장벽 확정 & 운영절차 명문화
WBS-7.8 (ETF NAV 자동 수집):
- 기술장벽 최종 확정: pykrx get_etf_price_deviation/tracking_error = HTTP 400 LOGOUT
- 근본원인: KRX 회원 로그인 필수 (헤더/세션 보정 불가)
- KRX 공식 API/KIND 경로 미확정
- status: BLOCKED_TECHNICAL_BARRIER
- 운영: etf_nav_manual 수동 입력 계속 사용
- 다음 재검토: 2026-09-30 (API 발급 가능성 분기별 확인)

WBS-7.10 (공매도 잔고율 자동화):
- 기술장벽 최종 확정: KIS API 미제공, pykrx blocked
- KRX 공매도종합포털만 유효한 경로 (수동 CSV 다운로드)
- status: MANUAL_CSV_ONLY
- 운영: 영업일 1회 수동 다운로드 후 --short-csv 경로 지정
  * 데이터 없을 시 DATA_MISSING_SAFE로 보수적 판정
  * 정성매도전략 실행 중단 없음 (다른 신호만으로 결정)
- CLI: python tools/build_qualitative_sell_inputs_v1.py --short-csv Temp/shorting_balance_manual_YYYY-MM-DD.csv
- 다음 재검토: 2026-12-31

문서화:
- spec/16_data_gaps_roadmap.yaml에 WBS-7.8/7.10 절 추가
- 기술장벽 분석 + 운영절차 + CLI 명시
- next_review_date/action 지정

테스트: 135/135 PASS

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-06-22 23:07:04 +09:00
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 6c549b7bdc feat(kis-collection): finalize sqlite migration, add fallback resilience, and update WBS documentation 2026-06-22 18:55:59 +09:00
kjh2064 670ab8e15a WBS-7.8: ETF NAV/공매도 잔고율 자동화 실측 + 운영절차 문서화
"자동화가 안 되면 차후 개선 목표로" 라는 지시에 따라 추정이 아니라
실제로 pykrx(이미 EOD 가격조회에 쓰이는 동일 라이브러리)의
get_shorting_balance()/get_etf_price_deviation()/get_etf_tracking_error()를
호출해 재시도했다. 기본 시세조회는 정상 작동하지만 이 세 함수는 세션
부트스트랩 후에도 HTTP 400 LOGOUT을 반환 — KRX 회원 로그인이 필요한
서버측 인증 게이트임을 raw HTTP로 재현 확인했다(헤더/세션 문제 아님).
자동화하려면 KRX 계정을 자격증명으로 등록해야 하는데, 이는
governance/rules/06·07과 같은 종류의 새 정책 결정이라 사용자 승인
없이 추가하지 않고 개선 목표로 이관한다(next_review_date: 2026-09-30).

- spec/16_data_gaps_roadmap.yaml S4/S5: automation_attempt_2026_06_22
  필드에 재현 절차 기록, next_review_action을 "API 키 발급"이 아니라
  "KRX 계정 발급·자격증명 관리 정책 승인 여부"로 재구성
- docs/runbook.md: 공매도 잔고율 주1회(매주 월요일 개장 전) CSV 수동
  갱신, ETF NAV 수동 import(tools/import_etf_nav_manual.py) 운영절차 명문화
2026-06-21 20:10:27 +09:00
kjh2064 81727918b3 docs: B1_gas_backdata_feature_bank 구현 완료 확인 — spec/16 PLANNED → DONE
GAS 쪽: syncBackdataFeatureBank_() gdf_02_harness_assembly.gs:146에서 호출 중
Python 쪽: synthesize_backdata_feature_bank(), normalize_backdata_harness_payload(),
           _backdata_feature_bank_table(), validate_harness_context backdata 검증 모두 구현됨

implementation_plan 4개 스텝 전부 DONE으로 갱신.
T+20 데이터 누적 후 ML 패턴 학습 품질 자동 향상.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-14 10:34:21 +09:00
kjh2064 b78b9f5dc9 fix: data_gaps_roadmap status update - S3 DONE, S5 DATA_GATED
S3_sector_flow_weekly_history: LEGACY_INTERIM -> DONE
  (Prev_Rotation_Rank W1/W2 legacy interim 구현 완료)
S5_etf_raw_execution_quality: PARTIAL_DONE_WITH_MANUAL_NAV -> DATA_GATED
  (NAV/iNAV/AUM 자동수집은 KRX/KIND API 경로 확정 필요)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-13 18:27:18 +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