Topic: 운영 데이터 인프라 REST 전환 + 밸류 과열 진단¶
Status: 🔄 진행 중 Started: 2026-06-08 (S348) Owner: PM + 데이터/시스템 Close Criteria: (1) 일일 수집 스크립트가 외부 FDR 캐시 의존 없이 kiwoom REST로 안정 동작 (2) 밸류 과열 진단(FA-M8)이 실전 종목에 end-to-end 검증 (3) KRX MCP 작동 확인
요약 (5줄 이내)¶
- 운영 루틴(POST_MARKET 등) 데이터 수집이 FDR 외부 GitHub 캐시에 의존해 매 거래일 실패하던 문제를 kiwoom REST로 전환
- 상한가/거래대금/뉴스 수집을 REST·MCP 기반으로 복구하고, carry-in/out 인계 메커니즘을 폐지(직전 리포트 직접 Read)
- PM 요청으로 "가격이 정당화하는 미래 매출/이익 = 합리적인가 과열인가"를 컨센서스 없이 TTM 실적으로 역산하는 FA-M8 신규 추가
- KRX/DART OpenAPI 키를 .mcp.json에 설정 (KRX는 MCP 재연결 후 적용)
- 완료/폐기 시
_archive/topics/로 통째 이동
WBS¶
1.1 carry-in/out 인계 폐지¶
- Status: ✅ 완료
- When: 2026-06-08 (S348)
- What: 리포트 루틴이 별도 carry 패키지에 종속되지 않고 직전 리포트(.md)를 직접 Read. morning 에이전트는 직전 evening 경로만 받아 Read, §0 carry-in 블록 제거(6→5섹션)
- Why: final_picks가 evening의 전일 종가(USD/KRW 1,530)를 stale 인용하던 문제. 인계 추상화가 stale 유발
- Output: 코드 8 + 명세 6 + test 1 (work_log Files Changed 참조)
- Decisions/Corrections: PM "별도 carry in/out에 종속 안 되도록 전면 폐지" + "§0 완전 제거"
1.2 데이터 수집 REST 전환¶
- Status: ✅ 완료
- When: 2026-06-08 (S348)
- What: (a) 거래대금 FDR StockListing(GitHub캐시 404) → kiwoom ka10030 (b) 상한가 ka10027(누락) → ka10017 신규 메서드 (c) 상한가 뉴스 깨진 naver_stock → m.stock API
- Why: FDR이 외부 GitHub 캐시에서 당일 날짜 CSV를 못 받으면 HTTP 404로 매 거래일 실패. ka10027은 +30% 상한가를 +21%대에 밀려 누락
- Output:
scripts/fetch_market_top.py,scripts/fetch_limit_up.py,scripts/kiwoom_rest_api.py(get_upper_lower_limit 추가) - Decisions/Corrections: PM "도구(kiwoom REST) 다 있는데 왜 WebSearch" / "공시 없으면 뉴스라도"
- Next Dependencies: SCRIPT-C/RS/TL(discovery_detector/theme_rs_history/detect_theme_leaders)도 FDR 의존 가능성 점검
1.3 DISCOVER enforce 버그 (D1 NEGATIVE 분기)¶
- Status: ✅ 완료
- When: 2026-06-08 (S348)
- What: D1=NEGATIVE면 universe/D2~D7 정당 skip하는데
_enforce_required가 D7_output.md를 강제 요구 → ENFORCE FAIL.REQUIRED_OUTPUTS_D1_NEGATIVE+d1_negative파라미터로 D7 제외 - Why: 폭락장(매크로 NEGATIVE)에 DISCOVER가 정상 완료(NO_CANDIDATE)인데 enforce가 실패 처리
- Output:
scripts/run_discover.py
1.4 밸류 과열 진단 (FA-M8, 신규)¶
- Status: 🔄 진행 중 (계산함수+에이전트 작성 완료, 실전 검증 미완)
- When: 2026-06-08 (S348)
- What: 현재 가격을 역번역해 implied growth(이익)/implied revenue(매출) 산출 → 과열도 판정. PER 트랙(흑자) + PSR 트랙(적자/전환주). 컨센서스 불요, TTM 실적 기반
- Why: 차트·수급은 "강하다"까지만, "그 강함이 합리적인가"는 못 답함. 패닉장 역행 상한가(SK네트웍스 NVIDIA동맹 등)가 실적 정당화 vs 기대 과열인지 판단
- Output:
scripts/valuation_implied.py(순수 계산함수),.claude/agents/fundamentals/valuation-overheat.md(FA-M8) - Decisions/Corrections: PM "데이터 만들어주면 해석할 서브에이전트" + "1차필터 아니라 여러 정보 중 하나" + "MCP 있는데 왜 Python으로 DART 호출"(Python은 순수계산만)
- Next Dependencies: 실전 종목 1회 end-to-end 호출 검증, trader/stock-deep-analysis와 연결 여부 PM 판단
1.5 KRX/DART OpenAPI 키 설정¶
- Status: 🔄 진행 중 (키 설정 완료, MCP 재연결 후 작동 검증 미완)
- When: 2026-06-08 (S348)
- What:
.mcp.jsonkorea-stock-mcp env에 KRX_API_KEY 추가(DART는 기존). 환경변수명은 공식 README 검증 - Why: KRX 키 없어 get_stock_base_info(상장주식수)·get_stock_trade_info(시총) MCP 실패하던 것
- Output:
.mcp.json - Next Dependencies: MCP 재연결(세션 재시작) 후 KRX MCP 실호출 검증
의사결정 로그¶
| 날짜 | 세션 | 결정 | 근거 |
|---|---|---|---|
| 2026-06-08 | S348 | carry-in/out 인계 전면 폐지 → 직전 리포트 직접 Read | final_picks stale 인용. 인계 추상화가 문제 |
| 2026-06-08 | S348 | 데이터 수집 FDR → kiwoom REST | FDR 외부 GitHub 캐시 404로 매 거래일 실패 |
| 2026-06-08 | S348 | 밸류 진단 = 데이터(Python 순수계산) + 해석(에이전트) 분리, MCP 우선 | "MCP 있는데 왜 DART 직접호출" |
| 2026-06-08 | S348 | 밸류 = 1차 필터 아닌 "여러 정보 중 하나" | 종목 강제 탈락 없이 밸류 관점 1개 |
참조¶
산출물 경로:
- Work Log: docs/work_logs/2026-06-08_S348_routine_infra_valuation.md
- 코드: scripts/{valuation_implied,fetch_market_top,fetch_limit_up,kiwoom_rest_api,run_discover}.py
- 에이전트: .claude/agents/fundamentals/valuation-overheat.md
- 설정: .mcp.json