From 6d06897fd74463965e83874e8ba1124746d85c91 Mon Sep 17 00:00:00 2001 From: kjh2064 Date: Mon, 22 Jun 2026 23:07:04 +0900 Subject: [PATCH] =?UTF-8?q?WBS-7.8/7.10:=20=EA=B8=B0=EC=88=A0=EC=9E=A5?= =?UTF-8?q?=EB=B2=BD=20=ED=99=95=EC=A0=95=20&=20=EC=9A=B4=EC=98=81?= =?UTF-8?q?=EC=A0=88=EC=B0=A8=20=EB=AA=85=EB=AC=B8=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- spec/16_data_gaps_roadmap.yaml | 86 ++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) diff --git a/spec/16_data_gaps_roadmap.yaml b/spec/16_data_gaps_roadmap.yaml index 7d7b7c5..04ec6e0 100644 --- a/spec/16_data_gaps_roadmap.yaml +++ b/spec/16_data_gaps_roadmap.yaml @@ -766,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에 명문화한다.