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
This commit is contained in:
@@ -652,6 +652,10 @@ phase_5_platform_transition:
|
||||
mock_api_validation: "PASS"
|
||||
no_direct_trading_gate: "PASS"
|
||||
provenance_completeness_gate: "PASS"
|
||||
notes: >
|
||||
`GatherTradingData.xlsx`는 runtime seed 재생성 fallback으로만 허용한다.
|
||||
collector 본문은 `GatherTradingData.json`만 사용하며, xlsx는 Prepare Raw Seed Snapshot
|
||||
단계에서만 허용된다.
|
||||
evidence_artifacts:
|
||||
- ".gitea/workflows/kis_data_collection.yml"
|
||||
- "Temp/kis_api_credentials_validation_v1.json"
|
||||
@@ -762,3 +766,89 @@ phase_5_platform_transition:
|
||||
# - Stage2_Gate PENDING: T+20 표본 누적 후 자동 평가
|
||||
# - 주요 지표: outcome_quality=85.23(PASS) guidance_proof=99.26(PASS)
|
||||
# - 미수집 펀더멘털(ROE/OPM/FCF/Revenue): CHECK_58/59 해결 시 자동 개선
|
||||
|
||||
# ─────────────────────────────────────────────────────────────────────────────
|
||||
# WBS-7.8 (ETF NAV 자동 수집) — 기술장벽 확정 & 운영절차 명문화
|
||||
# ─────────────────────────────────────────────────────────────────────────────
|
||||
phase_wbs_7_8_etf_nav_automation:
|
||||
status: BLOCKED_TECHNICAL_BARRIER
|
||||
wbs_ref: WBS-7.8
|
||||
deadline: "2026-12-31"
|
||||
problem_statement: >
|
||||
ETF NAV, 괴리율, 추적오차, AUM 자동 수집이 미구현. 현재는 etf_nav_manual 탭에
|
||||
수동 입력만 가능.
|
||||
automation_attempts:
|
||||
- date: "2026-06-22"
|
||||
tool: "pykrx (이미 EOD 가격 조회로 사용 중)"
|
||||
methods_attempted:
|
||||
- "get_etf_price_deviation() — ETF 괴리율"
|
||||
- "get_etf_tracking_error() — 추적오차"
|
||||
- "get_shorting_balance() — 공매도 잔고율 (WBS-7.10과 공유)"
|
||||
result: "모두 HTTP 400 LOGOUT"
|
||||
root_cause: "KRX 회원 로그인 필수 (KRX_ID/KRX_PW 환경변수 미설정 경고)"
|
||||
evidence: "raw HTTP로 재현 확인 — 헤더/세션 보정으로 해결 불가"
|
||||
automation_path_confirmed_blocked:
|
||||
- "pykrx: KRX 인증 게이트 (회원 로그인 불가)"
|
||||
- "KRX 공식 API: 접근 경로 미확정"
|
||||
- "KIND: 공개 데이터셋 접근 불확실"
|
||||
- "운용사 PDF export: 수동만 가능"
|
||||
fallback_procedure: "spec/16_data_gaps_roadmap.yaml:S5_etf_raw.implementation 참조 — etf_nav_manual 수동 입력"
|
||||
next_review_date: "2026-09-30"
|
||||
next_review_action: >
|
||||
KRX 정보데이터시스템/KIND 공식 API 또는 공개 데이터셋 발급/이용약관 변경 여부를
|
||||
재확인한다. 변경이 없으면 next_review_date를 다음 분기로 갱신하고 BLOCKED 유지,
|
||||
변경이 있으면 P1_kis_core_api_collector와 동일한 패턴으로 착수 여부를 결정한다.
|
||||
implementation_note: >
|
||||
2026-06-22 WBS-7.8 기술장벽 최종 확정. 자동화 불가능하므로 운영절차를
|
||||
명문화한다. etf_nav_manual 수동 경로 외에 대체 경로 없음.
|
||||
|
||||
# ─────────────────────────────────────────────────────────────────────────────
|
||||
# WBS-7.10 (공매도 잔고율 자동화) — 기술장벽 확정 & 운영절차 명문화
|
||||
# ─────────────────────────────────────────────────────────────────────────────
|
||||
phase_wbs_7_10_shorting_balance_automation:
|
||||
status: MANUAL_CSV_ONLY
|
||||
wbs_ref: WBS-7.10
|
||||
deadline: "2026-07-15"
|
||||
problem_statement: >
|
||||
공매도 잔고율(short_balance_ratio)은 KIS Open API에서 제공하지 않으며,
|
||||
KRX 공매도종합포털 CSV 다운로드만 유효한 경로다. 이 데이터는
|
||||
qualitative_sell_strategy_v1에서 short_interest_pressure 계산에 필요하다.
|
||||
data_source:
|
||||
official: "KRX 공매도종합포털 (data.krx.co.kr/contents/MDC/MDI/mdioper/BBGO1910/)"
|
||||
format: "일일 CSV 다운로드 (날짜별 종목별 공매도 잔고 %)"
|
||||
coverage: "KOSPI/KOSDAQ 전 상장종목"
|
||||
update_frequency: "일일 (T+1, 오전 10시경)"
|
||||
kis_api_check:
|
||||
status: "NOT_PROVIDED"
|
||||
verification: "KIS Open API 공식 문서 검색, 임금운용 담당자 확인"
|
||||
alternative_kis_endpoints: []
|
||||
krx_direct_check:
|
||||
status: "BLOCKED_KRX_MEMBER_LOGIN"
|
||||
tool: "pykrx.get_shorting_balance()"
|
||||
error: "HTTP 400 LOGOUT (KRX_ID/KRX_PW 환경변수 미설정)"
|
||||
root_cause: "KRX 회원 계정 필수, 헤더/세션 보정 불가"
|
||||
date_confirmed: "2026-06-22"
|
||||
workaround_procedure:
|
||||
method: "수동 KRX CSV 다운로드 경로"
|
||||
steps:
|
||||
- "1. KRX 공매도종합포털 접속 (로그인 필요: 일반 계정, 증권회원사 계정, KRX 회원사 계정 모두 가능)"
|
||||
- "2. '당일 공매도현황' 탭에서 종목 선택 또는 전체 다운로드"
|
||||
- "3. CSV 파일 저장: spec 문서에 기입된 경로 (예: Temp/shorting_balance_manual_YYYY-MM-DD.csv)"
|
||||
- "4. build_qualitative_sell_inputs_v1.py --short-csv 플래그 사용해 수동 경로 지정"
|
||||
frequency: "영업일 1회 (run_all 실행 전, 또는 자동 스케줄 전에 수동 다운로드)"
|
||||
operational_note: >
|
||||
현재 정성매도전략은 short_interest_pressure=DATA_MISSING일 때 항상 보수적
|
||||
(낮은 conviction)으로 판단한다. 공매도 데이터가 없으면 다른 4개 신호만 사용해
|
||||
결정하므로, 영업 중단 가능성은 없다 — 다만 정밀도 제한.
|
||||
cli_interface:
|
||||
usage: "python tools/build_qualitative_sell_inputs_v1.py --short-csv Temp/shorting_balance_manual_YYYY-MM-DD.csv"
|
||||
missing_data_handling: "status=DATA_MISSING_SAFE로 수정(보수적 판정)"
|
||||
validation: "CI에서 --short-csv 미제공 시 DATA_MISSING 경고 출력"
|
||||
next_review_date: "2026-12-31"
|
||||
next_review_action: >
|
||||
이후 분기에 KIS API 업그레이드 또는 KRX 공개 데이터 경로 변경 여부를
|
||||
재확인한다. 변경이 없으면 MANUAL_CSV_ONLY 상태 유지, 변경이 있으면
|
||||
자동화 착수 여부를 결정한다.
|
||||
implementation_note: >
|
||||
2026-06-22 WBS-7.10 기술장벽 최종 확정. 자동화 경로 불가능하므로
|
||||
수동 CSV 운영절차를 governance/rules에 명문화한다.
|
||||
|
||||
Reference in New Issue
Block a user