Topic M: 에이전트 실체화 — 누적 지식 + 루틴 연결 + 강제 실행¶
Status: 🔄 진행 중 Created: S264 (2026-05-05) Priority: HIGH
배경¶
현재 에이전트는 "역할 이름만 다른 같은 Claude". 3가지 근본 문제:
- 누적 학습 없음: 세션 간 연속성 제로. "US10Y 4.5%가 3번째"를 기억하는 구조 없음
- 루틴 간 단절: MORNING→POST_MARKET→EVENING이 독립 실행. 이전 결과 미참조
- 판단 피드백 없음: 예측 vs 실제 비교가 시스템에 돌아오지 않음. 같은 실수 반복
WBS¶
M.1 누적 메모리 — S267 완료¶
- M.1.1 mcp__memory KG 활용: verdict_log(4종목) + issue(9개) 등록
- M.1.2 3개 스킬 자동화: postmortem/candidate-pipeline/news-radar에 갱신 패턴 내장
- M.1.5 Threshold Tracker — 보류 (우선순위 낮음)
M.2 실행 강제 — S267 완료¶
- M.2.1 SKILL_PRINCIPLES: E1(재량스킵금지) + E2(도구근거전용) + P3(시계열필수)
- M.2.2 코드 강제 3중: run_routine PENDING + enforce훅 매턴주입 + post_agent 스키마검증
- M.2.3 설정문서 슬림화: 루틴 4개 파일 82% 감소 (2459→449줄)
- M.2.4 시계열 강제: §0.5/§4/§6/§7에 5d/20d 누적 인용 필수
M.2.5 Phase B 파이프라인 정형화 — S268 완료¶
- 프롬프트 템플릿:
.claude/agents/prompts/phase_b_templates.md(6개 에이전트 스키마+입력경로) - 입력 매핑:
run_routine.pyPhase 4 agent_inputs 자동 포함 - day-trader 파일 기반: 6개 표준 패키지 JSON 직접 Read (PM 요약 제거)
- rs_post_market 스킬 Step 4 전면 교체
- v2 실행 검증: 5개 도메인 + day-trader 정형 파이프라인 성공
M.2.6 상한가 D+1 6축 판정 — S268 완료¶
- analyze_limit_up.py에 score_6axis() 추가
- 6축: theme_leader / structural_change / policy_backed / monopoly / supply_quality / news_directness
- 4+/6 = D+1_TRACK, 2-3 = D+1_WATCH, 0-1 = NOISE
- rs_post_market §3.5에 자동 판정 인용 강제
M.2.7 Hook 강제 — S268 완료¶
- enforce_pipeline_inputs.py: PreToolUse Agent → 파일경로+스키마 키워드 없으면 block
- enforce_report_quality.py: PostToolUse Write → §3.5 d1_verdicts 미인용 시 경고
- detect_theme_leaders.py: 정렬 composite 1차 + L-Score 2차로 변경
M.2.8 per_stock verdict 필수화 — S269 완료¶
- 5개 도메인별 StockVerdict Pydantic 모델 (Macro/Sentiment/Sector/Fundamentals/Chart)
- per_stock = Field(...) 필수. 없으면 gatekeeper REJECT
- chartist: position(7종) + entry_type(4종) + sl + rr_ratio + top_signal
- day-trader: verdict_matrix로 5개 verdict 교차 → GO 4조건 판정
- enforce_pipeline_inputs.py에 verdict 키워드 추가
- EVENING 실전: macro/sector verdict 정상 작동 확인
M.2.9 news-curator 2단계 분리 — S269 완료¶
- 1단계 classify(foreground): 분류+등급만 → Write _classified.json
- 2단계 drilldown: S/A급만 WebSearch → Write _full.json
- policy_scan.py: 동적 쿼리 제거. 코드는 RSS만, 동적 검색은 에이전트 판단
M.2.10 뉴스 수집 코드화 + 루틴 연결 + CLI 자동화 — S270 완료¶
- 뉴스 수집 5개 스크립트 신규: parse_telegram/telegram_daily_merge/fetch_policy_updates/fetch_broker_research/fetch_export_stats
- run_routine.py morning_open 5→11스텝. evening +1(수출통계)
- Phase 5 claude -p CLI 자동 리포트: 전 시간대(8개) 등록. 도구 사용 모드(WebSearch/Read/Write)
- 스킬 5개 재작성: 입력/처리/출력/성공기준/검증 + 좋은예시/나쁜예시
- daily_view candidate_scenarios: 재료→주도주→3단계 stage + kill. EVENING 재료→MORNING 시나리오 확정
- 리포트 연결 체인: aux_files daily_view 강제 + {today} 치환
- WAIT 종목 수집 확장 (GO+WAIT 5종목)
- 보관 정책: raw 3일, daily/parsed 7일 자동 삭제
- REPORT_TEMPLATES 슬림화 → 스킬 참조만
- PM 피드백: 거래대금 변화 중심 / 파생 해석 필수 / 놓친 시그널 논리 확장 / 설정→스킬 분리
M.2.11 rs_.md 설정→UNIT 분리 — S271 완료*¶
- rs_*.md 7개에서 방법론/도구/성공기준/예시를
docs/units/14개 독립 문서로 분리 - rs_*는 실행 체크리스트(순서+입출력+참조)만 남김. 합계 1,665줄 → 559줄 (66% 감소)
- UNIT 문서 14개: 분석 블록 단위. 여러 시간대에서 재사용 (예: position_monitor.md → 4개 루틴)
- AGENT_TOOL_CATALOG.md §10.5에 UNIT 카탈로그 추가
- 3계층 확정: 스킬(워크플로우) > UNIT(분석 블록) > 에이전트(단일 행동)
M.3 에이전트 지식/경험 주입 — 제외 (PM 결정 S271)¶
M.2.12 POST_MARKET 파이프라인 연결 — S273 완료¶
- UNIT 5 매매 검토 -> UNIT 6 candidate_scenarios 자동 등록
- Stage 변경 -> verdict_list/wait_watchlist/daily_view 감시 파일 반영 의무화
- 뉴스 -> POLICY_TRACKER 갱신 -> 리포트 순서 강제
- S3 leader-judge 펀더멘탈 보너스(DART MCP OP YoY)
- WAIT 체류 규칙: SL 미확보 10거래일 만료 / 수급 5거래일 만료
- 추가 주목 D+N 추적 의무화
M.2.13 EVENING 재설계 + 코드 강제 — S274 완료¶
- rs_evening.md: EVE-1~6 코드 케이스 매핑. UNIT 0 제거. POST_MARKET 복사 금지.
- EVE-2(Discovery Lens) / EVE-3(리서치 전수) / EVE-4(섹터매체 6개) / EVE-5(원문 발췌) 강제
- run_evening_analysis.py 신규: NC-6→NC-6C→UNIT 5/GO/WAIT/Stage 교차 → 드릴다운 3단계
- Q1~Q4 금지 패턴: 4단계 추론 / 뉴스-종목 카테고리 불일치 / POST_MARKET 데이터 복사
- dev_phase_state.json 오래된 task 주입 문제 발견+해결
- S274: 드릴다운 3단계→1회 통합 호출 완료(Windows 셸 인자 제한 해결). 전체 S등급 3건 파이프라인 검증 성공
- S274: dev_phase_state.json 2시간 자동 만료 추가(auto_task_manager.py)
M.2.14 이브닝 파이프라인 v3 전면 재구축 — S276 완료¶
- rs_evening.md: R1~R5/Q1~Q8 절차 → 3단계(메타분석→재료확인→판단) + 리스크 레이더 6영역
- run_evening_analysis.py v3.0: 13 Phase 코드 강제 파이프라인
- Phase 0~7: 코드(환경/과거리포트/미장섹터/정책/국내재료/리스크/테마후보/종목스코어링)
- Phase 8~12:
claude -p로 5개 에이전트 순차 호출 (macro→sector→news→stocks→day-trader) - 에이전트가 과거 리포트(PM 10일+EVE 5일)를 읽고 해석하는 구조로 전환
- Phase 12 day-trader가 최종 리포트를 직접 작성
- 20260508 풀 시뮬레이션 성공: 29.7KB 최종 리포트
- KB 정리: 존재하지 않는 KB 경로 참조 전부 제거 (7개 파일)
- 기관/공격적 트레이더 프레임워크 리서치 2건 → KB 저장
M.2.15 에이전트 질문 체계 재설계 — S277 완료¶
3인 분석가 프레임워크(성상현/이선엽/문홍철)를 에이전트 프롬프트에 적용:
적용 완료 (프롬프트 수정, 코드 변경 0): - macro-economist.md: 유동성 렌즈 L1~L5 (Net Liq방향/VIX텀스트럭처/HY방향/서프라이즈/2차구성요소) + 교차검증 X1~X2 - sector-analyst.md: 섹터 모멘텀 렌즈 T1~T4 (RS가속도/매출기반lifecycle/참여자구성변화/구조적테마판별) + 섹터 체력 판정 - news-curator.md: 촉매 분류 렌즈 (Hard/Soft 분류 + 3요소 평가 + Priced-in 판단 + 1차vs2차효과 모순 체크) - fundamentals-analyst.md: 단기 트레이딩 렌즈 (어닝 가속 체크 + Red Flag 4항목) - sentiment-analyst.md: 포지셔닝 렌즈 (참여자 구성 변화 방향 + COT/파생 극단성 판단) - day-trader.md: 교차검증 레이어 X1~X6 (채권vs주식/컨센서스과밀/Priced-in/효과모순/RedFlag/포지셔닝극단) - run_evening_analysis.py Phase 8~12: 각 에이전트 프롬프트에 렌즈 적용 지시 반영
배제 (데이터 접근 제한 또는 과도한 공수): - GS 프라임 브로커리지 (비공개) → 대안: 프로그램 매매+외인 선물 OI - 다크풀 데이터 (비공개) → 대안: 시간외 대량매매+블록딜 공시 - 옵션 Unusual Activity (KRX 실시간 제한) → 대안: P/C ratio 방향 - 실시간 주문흐름 (HTS 필요) → 보류 - Volume Profile HVN/POC → C5 겹침 지지로 대체
Phase B 완료 (S277, 코드 변경):
- collect_macro_series.py에 fetch_fred_liquidity() 추가: WALCL/TGA/RRP → Net Liquidity 자동 계산 + HY_SPREAD 방향 + OFR_FSI
- yfinance 티커에 VIX3M(^VIX3M) 추가 → compute_vix_term_structure(): ratio + contango/backwardation/flat 자동 판정
- compute_risk_on_off_score(): VIX+HY방향+구리금비율+DXY+OFR 5지표 → regime(risk-on/mixed/risk-off) 자동 산출
- data_sources.yaml fred 섹션에 WALCL/WTREGEN/RRPONTSYD/STLFSI2 등록
- 실행 검증: Net Liquidity 5,831,743M(expanding), VIX term contango(0.839), Risk mixed(1/5)
KB 레퍼런스: knowledge_base/market/institutional_trader_frameworks.md, knowledge_base/market/short_term_trader_domain_analysis.md
M.2.16 Phase 10.5 + Phase 11 stocks 정밀화 — S278 완료¶
- candidate_from_theme.py: 거래대금 절대 규모 가중치 추가 (1000B+→+2, 300B+→+1, <100B→-1)
- Phase 10.5: 테마 한꺼번에 → 테마별 분리 실행 (각 top 3, 중복제거)
- Phase 11 stocks 프롬프트: 800줄→100줄. Section B(GO/WAIT 관리) 제거. 1~2종목 집중
- Phase 10.5 주입문: "출발점" → "참고용 검증". 재료 수혜경로가 출발점
- ats_main.json 태깅 오류 수정: 라온로보틱스(-반도체장비), 수산세보틱스(-전력설비)
- ats_main.json 테마 추가: 로보티즈/에스비비테크/세진로보틱스/메리티로보/에스피지/로보스타에 "로봇감속기/액추에이터"
- rs_evening.md STEP 3-B: candidate_from_theme 테마별 분리 + 대장주 필터 + 1~2종목 선정
- POLICY_TRACKER에 NDS 2026 추가 (FY2027 $1.5T, 자율시스템 $53.6B)
- 검증: 반도체 top3에 삼성전자/한미반도체 정상 도출, 로봇감속기 테마에 로보티즈/에스피지 연결
M.2.17 Chartist 불균형 프레임 + VSA 도구 + 재진입 판정 — S279 완료¶
PM 통찰에서 출발: "매수/매도는 1:1 대응. 차트는 패턴이 아니라 참여자 간 불균형의 흔적."
코드 구현 (mtf_chart_profiler.py):
- compute_vsa_metrics(): VSA 3축 정량화(spread/vol/close 정규화) + effort-vs-result 선형회귀 잔차 + 8유형 이벤트 자동 분류
- OHLCV delta: buyVol = vol*(C-L)/(H-L) + cum_delta_5d/20d 누적
- intraday_volume_profile(): 키움 5분봉 900봉 기반 정밀 VP (POC/VA/HVN/LVN)
- volume_profile_poc() 강화: HVN/LVN 추가
- B→A 피드백: phase 조건부 phase_bias 12유형 매핑 (trend_acceleration, dead_cat_bounce 등)
- extract_chart_snapshot(): verdict 저장용 판정 시점 스냅샷
백테스트 (vsa_backtest.py, FDR 기반 look-ahead 없음): - 7종목 × 2기간 = 2,195 거래일 검증 - 유효 신호: demand_bar(승률74%), trend_acceleration(T+10 +6.84%), shakeout_candidate(62%) - 무효 신호: dead_cat_bounce(0%), accumulation_absorption(47%) - 라벨 수정: distribution_warning→trend_acceleration, trend_continuation→trend_reinforcement
에이전트 전면 재구성: - chartist.md(C10): 패턴분류 → 불균형 프레임(Q1~Q4: 공간/동태/귀속/방향). 4묶음→불균형지도/동태/진입/방향확인 - vsa-events.md(C8): 3축+phase_bias+백테스트 결과 전면 재작성 - support-resistance.md(C5): VP HVN/LVN 기반 지지 판단 - volume-trajectory.md(C2): OHLCV delta 추가 - candle-balance.md(C7): close_position 3분위 + 백테스트 결과
하락 대장주 재진입 판정 (leader_stock_status.md): - 5축 교차: 재료생존 + VP HVN지지 + 수급전환 + 시장환경 + VSA phase_bias - 3축 동시 전환 트리거: close_zone+delta_5d+vs_POC 양방향 전환 = 재진입 확정 - 대한광통신 백테스트 검증: 4/24 "관찰" → 4/27 3축 전환(+19.9%) → D+7 +39.5% - 스캔 범위: 60일 내 이전 LEADING 전 테마 대장주 전수(30~50종목 매일)
리포트 "진입 기회 보드" (rs_post_market.md UNIT 8 신설): - 즉시 진입 / 조건부 대기 / COOLING 재진입 후보 / 추적 중단 4섹션 - 리포트 끝만 봐도 내일 행동 파악 가능
스킬/커맨드 반영: - stock-deep-analysis: M1에 [D]불균형 + [E]5축 재진입 추가 - candidate-pipeline: 2단계 chartist 호출에 VP/VSA/5축 명시 - rs_post_market: UNIT 5에 COOLING 전수 스캔 + 5축 + 3축 추적 - rs_afternoon: 관찰 종목 3축 추적 추가
M.2.18 60일 주도테마/주도주 추적시스템 + POST_MARKET 리포트 파이프라인 — S280 완료¶
PM 피드백: "리포트에서 계속 같은 종목 반복. COOLING 대장주의 쉬는건지/끝난건지 판정이 없음. 주도테마는 세부가 아니라 큰 덩어리."
추적시스템 (track_theme_leaders.py 신규):
- detect_theme_leaders.py 일별 스냅샷 → 60일 누적 시계열 + 상태 전이 감지 + dashboard.json
- [G] 그룹 단위 집계: ats_main.json theme_groups → canonical_theme() 동적 매핑
- 테마 독립성 지표: 반도체 RS 상관계수 (파운드리 0.99=베타, CXL -0.72=독자)
- falling_leaders: peak 거래대금 1,000억+ 필터 (market_top amount_억 기준, FDR 단위 혼재 해결)
- 거래대금 200위 확대 (fetch_market_top 100→200, detect_theme_leaders 연동)
리포트 파이프라인 (run_postmarket_report.py 신규):
- Phase 1~8 claude -p CLI 순차 호출. Python 오케스트레이터가 순서 강제
- 종목 중복 방지: Phase 5(LEADING 간결) / Phase 6(GO/WAIT) / Phase 7(COOLING 6축) / Phase 8(보드+carry)
- Phase 7 COOLING 6축: 차트/수급/재료/구조적경쟁력(독과점·병목·가격결정권)/펀더멘탈실체(매출·EPS)/시장환경
- 테스트: Phase 5/7/8 성공. Phase 6 실패(verdict_list 접근 — S281 수정)
UNIT 5 재설계 (leader_stock_status.md):
- 구조 역전: Part A(COOLING 대장주 전수 점검) → Part B(LEADING 테이블 1개) → Part C(UNIT 8 참조)
- 대장주 = 테마당 1~2개, 최대 3개. 5종목 나열 금지
ats_main.json 정비: 5G→광통신 그룹 이동, 함정→조선 추가
M.2.19 EVENING 풀파이프라인 실전 + Chartist 4-bundle 실전 — S281 완료¶
PM 피드백: "chart 축이 종가 시계열 나열이면 안 됨. 4-bundle(VP/VSA/SR/MTF)로 해야 함. 개인 주도 종목 ≠ 나쁨. 동종 그룹 비교해서 섹터 문제인지 종목 문제인지 구분해야 함."
EVENING 풀파이프라인:
- run_evening_analysis.py Phase 8~12 전체 실전 성공 (27분, 5개 에이전트)
- 산출물: macro.md(23KB) + sector.md(25KB) + news.md(25KB) + stocks.md(10KB) + evening_report.md(17KB)
- PM이 에이전트 결과를 교차 반영하여 최종 이브닝 리포트 작성
Chartist 4-bundle 실전: - SK이터닉스(475150) mtf_chart_profiler 실행: VP(일봉 POC 55,797 + 분봉 POC 59,323) / VSA(trending decline + close_zone lower + cum_delta_5d -196만) / SR(fib 38.2% 50,543) / MTF(월주봉 MA20 위 ↔ 일봉 falling 불일치 = pullback 가능) - 프로파일러 판정: HEALTHY_PULLBACK + ENTRY_CANDIDATE(R:R 5.19) - 분봉 분석: 5분봉 900봉으로 5/11 장중 행동 해석. 48,800(3/19 중심선 48,600 근처)에서 14:10 대량거래(45,057) 방어 확인
재생에너지 그룹 비교: - 4종목 동시 프로파일: SK이터닉스 / SK오션플랜트(accumulating+shakeout) / 씨에스윈드(decline 9d, R:R 3.77) / HD현대에너지솔루션(decline 5d) - 전부 5d -11~15% + 거래량 수축 = 섹터 전체 반도체 쏠림 유동성 고갈. 종목 고유 문제 아님 - 미국 peer(SEDG +7%, RUN +5.9%)는 반등 중 = 글로벌 테마 자체는 살아있음
PM 통찰 반영: - "개인 주도 = 나쁨" 기계적 라벨링 금지. 수급 주체 성격을 인지하되 선악 판단 분리 - SL/지지선 신뢰도 한계: shakeout vs 진짜 붕괴를 실시간 구분 불가 → 비중 관리로 대응 - US10Y 4.35% 상단 유지 = 채권-주식 모순 심화 시 채권을 먼저 믿어야 함
M.2.20 리포트 품질 일관성 + 6축 파이프라인 코드화 — S282 진행 중¶
PM 피드백: "5/11과 5/12 리포트 품질이 너무 다르다. 동일 시스템인데 왜 결과가 들쭉날쭉한가. 각 에이전트에 받는 데이터, 사용도구, 담당역할, 기술방법, 성공조건, 조건 달성을 위한 재시도를 포함해서 매일 일정한 품질이 나오도록 구성해라."
진단:
- 5/11(935줄): PM과 7시간 대화 + 8차례 반복 수정. 6축 상세, COOLING 10종목 전수
- 5/12(383줄): claude -p 원샷 15분. 6축 누락, 포맷 불일치, 불필요 단락 추가
- 근본 원인: claude -p가 명세를 부분적으로만 따름. 성공조건 검증 없음
- 데이터는 있었음(step_E3 6축, theme_leaders 11축, dashboard COOLING 전부). 활용이 안 된 것
완료 항목:
1. analyze_stock_6axis.py 신규: LEADING+COOLING 종목 6축 자동 판정 (차트/수급/재료/구조적경쟁력/펀더멘탈/시장환경 → [긍정/중립/부정] + N/6 합산). --both 옵션으로 pool+falling_leaders 동시 실행. 5/12 데이터 19종목 검증 완료
2. run_routine.py Phase 1에 step 6A 추가 (analyze_stock_6axis.py --both)
3. rs_post_market.md 전면 재작성: 5/11 포맷 기준. TL;DR 금지, UNIT별 포맷 템플릿 고정, COOLING 독립 UNIT 7, 중복 금지 규칙
4. run_routine.py 프롬프트: "명세 읽고 따르라" + 데이터 파일 4개 경로 명시 + 6축 표준 참조
5. CLAUDE.md §4: "최소 단계 원칙" 추가 — 연기 제안 금지, 바로 실행
6. 5/12 재실행 검증: UNIT 1(5/11 포맷 일치), UNIT 3(6축 O/X 테이블), UNIT 5(6축 [태그]+N/6)
7. rs_evening.md STEP 3-B: analyze_stock_6axis.py --context evening 호출 경로 추가
미완료 — 다음 세션 최우선:
- run_report_pipeline.py 구현: UNIT별 에이전트 분리 호출 + 성공조건 검증 + 실패 시 재시도
- 각 UNIT 에이전트에 포함할 것: 받는 데이터 / 사용 도구 / 담당 역할 / 기술 방법 / 성공조건 / 재시도 로직
- claude -p 한 번이 아니라 UNIT별 개별 호출 → 검증 → 조립
- 설계 문서: docs/planning/unit_agent_pipeline.md (작성 완료)
- 3개 시간대(MORNING/POST_MARKET/EVENING) 전부 동일 구조 적용
PM 시장 분석 통찰 (S282): - 5/12 급락 구조: 외인 포지션 전체 축소(미결제약정 -6,120 감소 + 현물 -2.9조 + 선물 -11,824계약) + 빚투 36조 반대매매 연쇄 + 김용범 발언은 촉매. USD/KRW 1,460→1,488로 환차익 실현 동반 - 에너지 다변화 테제: 원전/태양광/연료전지/수소/풍력 전부 기회. "누가 먼저 모멘텀을 가져오느냐"가 진입 타이밍. 태양광은 머스크 발언 + SpaceX S-1(5/15~22)이 촉매 - OCI홀딩스 역산: SpaceX 계약 ~1조원을 시장이 1회성(PSR 1x)으로 반영. 구조적 스토리 재평가 시 PER 멀티플 적용 → 추가 업사이드 2~3배
M.2.22 마크다운 파싱 레이어 + 파이프라인 전환 — S287 완료¶
parse_agent_output.py생성: 4 도메인 파서 (leader/limitup/narrative/flow)- POST_MARKET 에이전트 4개 출력 형식 JSON→마크다운 전환 (theme-ranker 제외)
run_post_market_pipeline.py개편: run_agent_md() + Phase 3→4 연결 수복- 이브닝 인프라 전환: utils.py(call_agent .md fallback) + step_verify(6개 프롬프트) + step_report(이중 로딩) + step_verdict(_try_json)
- 이브닝 에이전트 .md 8개 출력 형식 마크다운 전환
- hook 12개 절대경로 수정
- 5/15 실행 검증: POST_MARKET 리포트 성공, 이브닝 섹션1 매크로 성공
- 발견: 이브닝 5축 판정이 "재료 저수지" 목적과 충돌 → M.2.23에서 역할 재정의
M.2.23 이브닝 파이프라인 역할 재정의 — S288 완료¶
이브닝 v5.0→v5.1. 5축 종목 판정 제거 → 재료 저수지 + 통합 서사 리포트.
완료:
1. 5축 종목 판정(flow/chart/fund/substance + verdict) 제거. step_verify는 macro/sector만 보존
2. step_reservoir.py 신규: 환경 조건부 활성화 (favorable→구조적+준구조적 승격, neutral→구조적만, unfavorable→보관)
3. 재료 수집 복원: 텔레그램 daily_merge 호출 추가, RSS headline키 수정, 증권사 categories 구조 대응 (25→49건)
4. THEME_SYNONYMS 대폭 확장: HBM소재→반도체 재료부품, HBM장비→반도체 장비 등 30+ 매핑
5. 경제지표 age<=7d 필터, curator/validator에 48시간 freshness 원칙 추가
6. report-synthesizer.md 신규: 글로벌→섹터→재료→테마 통합 서사. 표+수치+해석 통합
7. 자산 전체 범위 (부동산 제외): 한국주식+미국ETF+채권+원자재+환율+BTC
8. 종목 추천 금지: 이브닝=테마/자산 방향, POST_MARKET=종목 6축 검증. carry_forward로 연결
역할 분리 확정: - 이브닝: "어떤 테마/섹터/자산이 유리한 환경인가" (방향 판단) - POST_MARKET: "이 테마에서 어떤 종목을 GO/WAIT/PASS" (종목 판정)
M.2.24 이브닝 10섹션 마무리 + POST_MARKET 연결 — 미착수¶
- KOSIS API 연동 (수출통계 월별 데이터 코드 수집 → export-checker WebSearch 대체)
- 텔레그램 수집 0건 해결 (daily_merge → daily 파일 파싱 구조)
- material-validator 캐시 반환 문제 (48시간 freshness 프롬프트 효과 검증)
- v5.2 전체 클린 실행 검증 (에이전트 7개 순차 호출 안정성)
- POST_MARKET이 carry_forward 읽어서 테마별 종목 6축 검증 연결
M.2.21 EVENING v4 모듈화 + 서브에이전트 재구성 — S284 진행 중¶
PM 지시: "리포트 포맷에 맞춰서 서브에이전트를 재구성하고, 데이터 수집부터 리포트 작성까지 파이프라인으로 강제 실행"
완료:
1. report_format_design.md 원자 명세서 작성 — 38개 UNIT x 7필드(질문/방법/도구/성공조건/실패행동/출력/의존) + WEEKLY REVIEW(W.1~W.4)
2. run_evening_analysis.py v4 모듈화 — 1200줄 단일 → 7개 모듈(step_global/scorecard/materials/themes/verify/verdict/report)로 분리. 오케스트레이터는 70줄
3. .claude/agents/evening/ 서브에이전트 7개 신규 — sector-flow(1.2), material-curator(2.1, NC-3+NC-6+드릴다운 통합), material-validator(2.2~2.4), flow-check(3.4), chart-check(3.5), fundamental-check(3.6), substance-check(3.7)
4. 에이전트 호출 방식: "Read .claude/agents/evening/{name}.md and follow its instructions" + 데이터 주입
5. 판정 로직 코드화: step_scorecard(6축 스코어카드 + VIX/미장 오버라이드), step_verdict(5축 교차, 차트 STOP=절대 STOP)
6. 데이터 수집 8개 소스: 텔레그램/RSS/정책/증권사/경제지표(FRED)/수출통계/주요인물(WebSearch)/ISSUE_LOG
7. naver_stock.py 신규 — claude_trader 의존성 제거
8. sector-flow: yfinance로 10개 섹터 28종목 + 변화+누적 프레임 해석
9. 5/13 전체 파이프라인 실행 성공 — 17,240자 리포트 생성. structural 재료 6개 자동 수집(Warsh/AI Diffusion/Trump-Xi/Colossus/최태원/NVIDIA-IREN)
10. PICK_LOG(W.1) 구조 구현 — data/pick_log/ 자동 기록
미완료 — 다음 세션: 1. 드릴다운이 종목을 직접 지목함 → 서브테마까지만 도달하고 종목 선정은 UNIT 3.3~3.7이 해야 함. material-curator 명세 수정 필요 2. 경제지표/수출통계/투자구루/IB/증권사 리포트가 리포트에 반영 안 됨 — 수집은 되지만 curator가 활용 안 함 3. 섹션 1(금리/원자재/환율/유동성/변동성) 해석이 코드 생성 문장 — 해석용 에이전트 or 기존 에이전트 활용 필요 4. chart_check 에이전트가 간헐적으로 JSON Write 실패 — timeout 또는 mtf_chart_profiler 실행 문제 5. Python 환경 불일치(C:\Python314 vs anaconda ats_cpt) — fredapi/playwright 설치로 임시 해결했으나 근본 수정 필요
M.2.27 morning/evening 에이전트 출력부 점검 + 4요소 보강 — S294 완료¶
- 출력부 점검: morning/ 4개 + evening/ 12개 전수 점검. 출력부 전원 마크다운 명시(
## 출력 (마크다운)/ ```markdown 블록), raw JSON 출력 명세 0건, 메타 설명 지시 0건 → postmarket v2 같은 문제 없음, 조치 불필요 - 4요소(질문/성공기준/출력포맷/실패시처리) 결손 보강 12건:
- 성공기준 추가 8개: morning(signal-synthesizer/sector-transfer/global-scanner/material-grader) + evening(figure-checker/export-checker/policy-checker/report-synthesizer)
- 재시도(실패시처리) 추가 4개: evening(figure-checker/export-checker/policy-checker/macro-interpreter)
- 성공기준은 각 에이전트 행동/출력 명세에서 검증 가능 항목 추출, 재시도는 완비 에이전트(flow-check 등) 패턴 준수
- 16개 morning/evening 에이전트 4요소 전원 완비
S294 미해결 (이월): - 나머지 95개 에이전트(macro/sector/chartist/fundamentals/sentiment/news/trader/postmarket) 4요소 결손 보강 — PM 결정으로 보류 - S293 이월 잔존: daily_view 5/20 afternoon 미실행, run_6axis verdicts.json overwrite 버그
M.2.28 leader-opportunity 파이프라인 연결 + 6축 단일 풀 — S294 완료¶
PM 지적: "시장환경/수급/재료/차트 교차로 기존+오늘까지 주도주 중 매매 기회 온 종목을 판단하는 서브에이전트가 없다. 기능은 있는데 리포트 파이프라인에 미연결."
진단: 기능 부품은 존재하나 v4 파이프라인 미연결 — step_leading/cooling/entry.py가 orphan(7-phase 리스트 미등록), 소비 에이전트(cooling-check/leading-analysis/entry-board.md) 미작성, rs_post_market.md가 존재하지 않는 run_post_market_pipeline.py 참조. 원인: S293 v1→v2 통합에서 v1 Phase 5/7/8 누락.
신규 — leader-opportunity 에이전트 (PM-6):
- .claude/agents/postmarket/leader-opportunity.md — 5-lens 발굴: ①재료 역추적 ②수급 지속 유입 ③신고가 매물소화 ④눌림목 조정 ⑤거래대금 재유입
- GO/WAIT/PASS 판정기 아님 — "지금 봐야 할 종목 + 왜 + 다음 행동" 출력. lens 교차 종목 우선
- scripts/postmarket/step_opportunity.py 신규 → v4 Phase 8 등록 + step_report UNIT 8
6축 단일 풀 전환 (PM 설계):
- analyze_stock_6axis --both → {date}_pool.json 단일 파일, 종목마다 pool_status 태그(leading/cooling). 재료 소멸 시 태그만 전환, 파일 분리 없음
- 구 --both 버그: leading+cooling 합쳐 _leading.json 하나만 저장, cooling.json 영영 미생성 → 단일 풀로 해결
- step_extract.py pool.json 읽고 태그 분리 + 구 분리파일 fallback
flow 갭 수복:
- collect_stock_flow_series.load_watchlist_codes()에 leader pool(theme_leaders pool + dashboard falling_leaders) 추가
- run_routine.py FS step을 6A 앞으로 이동 — 6축 수급축 작동 전제
부수: SCRIPT-E3 fetch_validated_news ImportError 복원(naver_stock.py), orphan step 3개 _archive 이동, rs_post_market.md 8 에이전트 문서화. 5/20 POST_MARKET 리포트 종단 생성 검증(UNIT 1~8).
M.2.29 파이프라인 버그 2건 수정 (verdicts overwrite + daily_view 폐기) — S294 완료¶
버그 1 — run_6axis verdicts.json overwrite:
- synthesize.py --code 단일 모드가 verdicts.json을 통째로 덮어써 순차 호출 시 직전 종목 판정 유실
- 수정: --code 모드일 때 기존 verdicts.json 읽어 merge (--all은 전체 재산출이라 그대로). 검증 통과(AAA+BBB 둘 다 보존)
버그 2 — daily_view 미생성 → daily_view 폐기:
- 진단: daily_view JSON 생성이 morning_open claude -p 프롬프트 지시에만 의존(코드 강제 없음) → 비결정적 누락. 5/16/18/20 미생성
- PM 결정: daily_view를 루틴 산출물에서 제거. 각 루틴이 직전 리포트 .md를 직접 읽음 (생성 단계 소멸 = 문제 원천 소멸)
- daily_view 13개 키 분석: 모닝 스냅샷·체크포인트는 morning_open/각 루틴 리포트에 이미 존재. 고유 키 theme_timeline은 독립 파일로
- 변경 13파일: run_routine.py(Phase 0 morning_open 리포트 주입 + 참조 제거) / step_extract.py / step_themes.py(theme_timeline → data/theme_timeline/) / rs_mid_morning·rs_afternoon.md / lifecycle-tagger.md / docs/units 6개 / candidate_stage.md / daily_view_checkpoint.md 폐기 / AGENT_TOOL_CATALOG.md
- candidate_scenarios → data/tracking/candidate_scenarios.json 롤링 파일로 재배치 (위치만 이동, 새 로직 없음)
M.2.30 리포트 메타/부속 제거 + 뉴스 수집 노이즈 정리 — S295 완료¶
PM 리뷰(이브닝 리포트 정독)에서 출발한 연쇄 정리. "리포트는 PM이 봐야 할 것만. 직전 리포트 참조는 맥락 파악용이지 본문 재게시용 아님."
리포트 sanitizer 신설 (scripts/report_sanitize.py):
- sanitize_report() — yaml 출력 덤프 / "한계 명시"·"성공기준 점검" QA 메타 / "Sources" 출처 목록 / "포트폴리오 비중"·"한 줄 행동 명령" 제거. 헤더형 + bold 인라인형 모두.
- evening/postmarket/morning 3개 조립부(step_report.py)에 조립 직전 1회 적용.
- 원칙: 한계는 verdict에 반영하거나 데이터로 보강할 대상이지 별도 표시 대상 아님. 표시 자체로는 신뢰도가 변하지 않음.
§0 carry-in 미렌더링: evening/step_report.py — POST_MARKET 인계를 §0으로 본문 재게시하던 것 제거. carry_in은 맥락 입력용.
final-picks 정리: decision/final-picks.md + step_final_picks.py(evening+morning) — 포트폴리오 비중·한 줄 행동 명령을 출력 명세·step 프롬프트 양쪽에서 제거. (에이전트 .md만 고치면 step 프롬프트가 재지시하는 drift 패턴 확인.)
뉴스 수집 노이즈 3종 제거 (step_materials.py + data_sources.yaml):
- kwtok(키움증권 토큰) 채널 제거 — 이데일리FX [AI시그널] 봇 504건/일
- RSS Fed 행정공시 패턴 필터 / RSS Al Jazeera 스포츠 패턴 필터
- 블라인드 슬롯 컷(텔레그램 [:30]/RSS [:20]/curate [:40]) 전면 폐기 — PM: "슬롯 개수가 목적이 아니라 좋은 정보 수집이 목적." 노이즈만 기계적으로 거르고 중요도 판정은 큐레이터에 위임.
M.2.31 이브닝 재료 체인 원자화 (현행 NC-3 이식) — S295 완료¶
PM 지적: "리포트 중심 에이전트가 쓰는 NC-3이 구버전 아니냐."
진단: evening/material-curator(monolith)가 수집정리+촉매분류+테마매핑+인물발언 7-in-1. 내장한 "NC-3 방법론"이 구버전(Hard/Soft 2분류 + 3요소 곱) — 현행 정본 news/5axis-scorer(Q1~Q6 + Catalyst 5종 + Earnings Path + T-Score + 매트릭스)와 drift. 원자화 원칙 위반.
신규 원자 에이전트 2개 (evening 전용 사본, 현행 NC-3/NC-6 기준):
- evening/material-grader.md (NC-3) — Q1~Q6 + Catalyst 5종 + Earnings Path + T-Score + Timeline + 매트릭스 + substance_flags. 2-pass 자체 선별(NOISE→즉시 D)로 대량 재료 단일 호출 처리.
- evening/theme-mapper.md (NC-6) — 3축 + 매핑체인 + ats_main 테마 + activation + 구버전 validator 파급경로 흡수.
코드 재배선: step_materials.py curate→grade / validate→map_themes + _dedup(). step_themes.py 파서 _parse_theme_mapping. step_report.py §9 "재료 평가". run_evening_analysis.py Phase D 갱신.
폐기: material-curator·material-validator → .claude/agents/_archive/.
검증: 5/20 evening 재실행 — grader S:2/A:6/B:11/C:9/D:88, theme-mapper 정상, watchlist 4테마/37종목. 종단 동작 확인.
M.2.32 morning_view.json → morning_open.md 마이그레이션 (POST_MARKET) — S295 완료¶
PM 확인: "morning_open으로 daily_view 생성은 안 하고 마크다운 직접 읽기로 바꿨다."
진단: daily_view JSON 폐기(M.2.29)는 정상이나 POST_MARKET 전환이 절반만 완료. step_extract.py는 morning_open.md 직접 읽기로 전환됐으나 step_signals.py(signal-scorecard)·step_discovery.py + 에이전트 스펙 3개(signal-scorecard/discovery-detector/market-narrator)가 폐기된 morning_view.json을 계속 지목 → signal-scorecard가 carry_forward 추정으로 폴백 → 5/21 아침 실제 시그널(S1~S5) 대신 5/20 evening 파생 시그널을 채점.
수정: morning_view.json 참조 12곳을 docs/morning_open/{date}_morning_open.md 직접 읽기로 전환 (step 2개 + 에이전트 스펙 3개).
이월: 5/21 POST_MARKET 리포트는 구 코드로 생성 — UNIT 3 적중률이 carry_forward 추정 기준. 다음 세션에서 v4 재실행하여 정확한 시그널로 재채점 (PM 지시).
M.2.33 시장 전체 현물 수급 결정적 수집 — S296 완료¶
PM 지적: "PM-0b 리포트의 현물 수급(외인/기관/개인)이 '데이터 미확보'로 넘어갔다."
진단: market-flow-analyzer(PM-0b) 스펙 Step 1이 당일 현물 수급을 WebSearch로만 확보 — 검색이 페이지 메타정보만 반환해 빈번히 실패. 같은 리포트 UNIT 1(narrator)은 뉴스 검색으로 수치를 갖고 있어 리포트 내 모순 발생. pykrx는 KRX 엔드포인트 변경으로 전면 불능(OHLCV조차 실패) 확인.
신규 — collect_market_investor_flow.py:
- Naver investorDealTrendDay.naver(sosok 01/02, page 1~2)에서 KOSPI/KOSDAQ 일별 순매수(현물) 20거래일 수집 — 개인/외국인/기관계 + 기관 6분류(금융투자/보험/투신/은행/기타금융/연기금) + 기타법인. 단위 억원.
- summarize(): 당일 / 5d / 20d 누적 + 외인·기관·개인 BUY/SELL/MIXED direction. 산출 data/market_investor_flow/{ISO}.json.
파이프라인 연결:
- run_routine.py post_market에 MI step 등록(D 다음)
- step_extract.py: market_investor_flow 파일 직접 로드 → unit2 주입 (dashboard/limit_up 동일 패턴)
- step_derivatives.py: unit2 truncation 5000→12000자 (investor flow 보존)
- market-flow-analyzer.md: 입력표·도구·Step 1 재작성 — WebSearch 추정 금지, 주입 JSON 사용. 빈 경우만 WebSearch 폴백
검증: 5/21 재실행 — UNIT 2 현물 수급이 KOSPI 외인 당일 -2,212억/5d -18.1조/20d -42.5조, 기관계 +29,008억(금융투자 단일 축), 개인 -26,754억 + KOSDAQ로 채워짐. "데이터 미확보" 해소.
M.2.34 후보 차트 확인 단계 신설 (Phase 8.5) — S296 완료¶
PM 지적: "재료·수급으로 종목이 좁혀지면 차트 분석도 같이 움직여야 한다. 주도테마 주도주는 상시 감시 대상이어야 한다."
진단: POST_MARKET v4 파이프라인 8 phase에 차트 분석 단계 0개. 6축의 "차트축"은 RRG 사분면 1개를 긍정/중립/부정 태깅한 게 전부(analyze_stock_6axis.py L79-101) — 가격 구조(지지/저항·진입가·손절·R:R)가 아님. leader-opportunity가 결론을 "차트 봐라"로 사람에게 위임. mtf_chart_profiler(VP/VSA/SR/MTF 4-bundle) 등 차트 도구는 강하나 candidate-pipeline/6axis-pipeline에서만 쓰이고 POST_MARKET 후보 흐름에 미연결.
mtf_chart_profiler 감사: 이름은 MTF이나 불균형 lifecycle 엔진(VSA/journey/FVG)이 전부 일봉 단일 TF. 월/주봉은 tf_structure 골격만, 분봉은 VP 1개만(VSA/journey 없음). PM 결정 — 추세골격·일봉 엔진(20~60d 윈도우)은 현행 유지, 분봉은 "꼭 필요한 지점(진입가·손절)에서만" 연결.
구현:
- mtf_chart_profiler.py — best_sl 후보에 분봉 VP HVN 추가(현재가 2~10% 대역, 일봉 손절보다 타이트하면 채택, basis=intraday_hvn). 분봉 VP는 기존엔 수집·표시만 되고 SL/TP 산출 미연결이었음.
- scripts/postmarket/step_chart.py 신설 — phase8.md '종합' 섹션에서 후보 코드 파싱 + 6축 풀 주도주 → 합산 최대 8종목 profile_stock 실행 → 진입/손절/R:R/VSA 마크다운. 거래대금 200위 전체가 아닌 좁혀진 소수에만 = "꼭 필요한 부분에서만".
- run_postmarket_report_v4.py Phase 9 등록 + step_report.py PHASE_MAP UNIT 8.5 병합.
검증: 5/21 — 후보 5 + 주도주 5 → 8종목 차트 확인, R:R 1.26~7.28 산출, 분봉 HVN 손절 4종목(336260·000660·005930·298040) 채택. 리포트 23,073자 종단 생성.
알려진 잔여: tracking_status.direction이 unknown으로 나옴(classify_tracking_status 기존 동작 — 본 작업 범위 밖, 별도 점검 대상).
M.2.35 차트 진입 판정 에이전트 신설 (Phase 8.6) — S296 완료¶
PM 지적: "Phase 8.5에 에이전트와 데이터가 연결됐냐, 누가 해석하냐."
진단: M.2.34의 Phase 8.5는 데이터 레이어만 — step_chart.py(코드)가 mtf_chart_profiler(코드)를 돌려 진입/손절/R:R/VSA라는 구조화된 사실(수치)을 산출하고 표로 포맷할 뿐, 그 수치를 읽고 진입 판정하는 해석 주체가 파이프라인에 없었음. PM 요구("차트 에이전트도 같이 움직여야")의 절반만 충족.
신규 — postmarket/chart-entry-judge (PM-6.6):
- 입력: {today}_phase8.md(leader-opportunity 후보+lens 맥락) + {today}_phase8b.md(Phase 8.5 차트 수치)
- 교차 판정: 종목별 진입/대기/회피. 차트(국면·R:R·VSA) × 재료 생존 × 수급 방향 3축 교차. 6도메인 GO(day-trader)와 구분 — 차트 진입 타이밍 판정.
- 비대칭 근거(PM 지시): 진입=6항목 전부(차트 국면/불균형/진입가·손절·R:R/재료/수급/invalidation 신호), 대기·회피=1~2줄 간결. 진입은 자본 투입이라 사후 메타분석 대상이므로 깊게, 대기·회피는 "지금 아니다"의 기록이라 간결.
코드: step_chart_judge.py 신설 + run_postmarket_report_v4.py Phase 10 등록 + step_report.py PHASE_MAP UNIT 8.6(phase8c).
검증: 5/21 — 진입 0 / 대기 5 / 회피 3. 신고가 급등 돌파 당일·dead_cat 등으로 진입 정당화 종목 없음을 판정, 엠케이전자는 "근접하나 R:R 1.52 미달 → 대기"로 사유 명시. 리포트 24,755자.
M.2.36 주도주 상시 감시 + 진입 알람 (Phase 8.7) — S296 완료¶
PM 지적: "주도테마 주도주 상시 감시 체계는? 단순 감시가 아니라 좋은 눌림목·재료수급 유입·돌파자리 — 진입 가능 위치라는 알람이 중요. 그리고 그 알람은 수급·차트·재료를 연결한 해석이어야 한다."
진단: 감시 자체는 있음(daily POST_MARKET이 주도주 풀을 8.5/8.6으로 매일 훑음). 그러나 알람으로서 3가지 갭 — ①변화(transition) 미강조: 매일 새로 판정만, "어제 대기→오늘 진입" 순간을 안 띄움 ②8.5/8.6 대상이 캡 8종목으로 좁음 ③day-over-day 연속 추적 부재.
2-tier 설계 (PM의 "꼭 필요한 부분에서만" 원칙):
- 1단(가벼움) leader_trigger_scan.py — 6축 풀 leading 전체에 FDR 일봉 기반 트리거 4종(눌림목/거래량수축/지지근접/돌파임박) 스크리닝 → 신호 잡힌 종목만 추출. data/tracking/leader_triggers_{date}.json.
- 2단(무거움) mtf_chart_profiler + chart-entry-judge — 후보 ∪ 트리거 주도주에만 정밀 차트·해석. 해석 주체는 8.6(이미 존재) — 알람 레이어가 해석을 새로 하지 않고 8.6 결과를 소비.
- step_chart.py 입력을 캡 5 → 트리거 기반으로 전환(MAX_STOCKS 10).
알람 레이어 step_leader_alarm.py (Phase 8.7):
- 8.6 verdict를 data/tracking/leader_watch.json에 day-over-day 롤링(종목당 30이력).
- transition 감지: 대기·회피→진입(★진입 위치 도달) / None→진입(신규) / 진입→대기·회피(해제) / 회피→대기(회복).
- 리포트 최상단 "오늘의 알람" 섹션(step_report.py assemble에서 UNIT 1 앞 삽입). 변화 없으면 "알람 없음".
코드: run_postmarket_report_v4.py Phase 11 등록. 검증: 5/21 — 트리거 스캔 8종목 중 7 트리거, 8.5/8.6 정상, leader_watch.json 8종목 시딩, 알람 0건(첫 실행은 baseline이라 transition 없음 — 다음 실행부터 변화 감지). 리포트 25,030자.
M.2.37 EVENING 중복 제거 + 정책 write-back + 파생 폐기 — S297 완료¶
PM 지적 연쇄: ①POLICY_TRACKER가 갱신 안 됨 ②§1~§2.5에 중복이 많음 ③외인 선물이 장마감 리포트와 중복 ④파생 포지셔닝이 forward edge가 약함.
Phase 8.7 알람 단위 검증: test_leader_alarm.py 신규 — 합성 입력 격리 주입, 7개 transition 분기 + 멱등성 PASS 19/0. S296 "알람 0건"은 baseline 특성 확인.
정책 추적 write-back 신설: policy-checker가 §3 생성만 하고 POLICY_TRACKER.md에 되쓰지 않아 한 달째 미갱신. policy-checker.md에 행동 5~6단계(write-back + 시한 30일+ 크로스이벤트 아카이브) + Edit 도구 추가, step_sections 프롬프트 강제, utils call_agent allowedTools +Edit. POLICY_TRACKER_ARCHIVE.md 신규(별도 파일, 30일 기준). POLICY_TRACKER 수기 갱신 4건.
EVENING 중복 제거 (MORNING 패턴 이식): §1~§2.5 6개 에이전트가 동일 global_data를 각자 소비 → 원시 지표(10Y/HY/환율) 최대 4회 재서술. POST_MARKET·MORNING은 데이터 unit 분리 + 상류 출력 전달로 중복 없음 — EVENING만 누락. macro §1 = 원시 지표 단일 owner, 하류(triaxis/intermarket)는 raw 대신 §1·triaxis 출력을 입력받아 인용만.
파생/포지셔닝 폐기: 외인 선물/VKOSPI/옵션은 forward edge 약함(리포트 결론이 "보류, 현물 데이터 대기") + POST_MARKET UNIT 2와 중복. derivatives + capital-flow 폐기, §2.5 = triaxis + intermarket(매크로 사이클)만. 방향성 예측 4축은 파생 비의존.
검증: triaxis·intermarket 인용 전환 ✅ / policy-checker write-back ✅. 파생 폐기는 다음 정규 EVENING에서 확인.
M.4 자동 드릴다운 — 보류¶
NC-3 Q1~Q6이 이미 드릴다운 구조. 문제는 설계가 아니라 실행(E1/E2로 강제 완료).
성공 기준¶
- MORNING 예측이 POST_MARKET 서사에 자동 연결 (daily_view 체인)
- EVENING 탐색 결과가 다음 MORNING에 자동 주입
- verdict_log HIT/MISS 이력이 다음 GO 판정 시 day-trader 프롬프트에 포함
- 분야별 적중률이 누적되고, MISS 분야에 수집 보강이 자동 트리거
의사결정 로그¶
| 날짜 | 결정 | 근거 |
|---|---|---|
| S264 | Topic 신설 | PM: 에이전트가 KB 안 읽고, 누적 학습 안 되고, 드릴다운 안 됨 |
| S264 | 토론/합의 구조 제외 | PM: "토론 합의는 선호하지 않음" |
| S264 | LangGraph 제외 | PM: 기존 스킬/스크립트로 충분 |
| S282 | claude -p 원샷 → UNIT별 에이전트 분리 호출 전환 |
PM: "동일 시스템에서 결과가 달라지면 안 됨. 각 에이전트에 데이터/도구/역할/기술방법/성공조건/재시도를 포함" |
| S282 | 리포트 맞춤 에이전트가 아니라 기존 전문 에이전트 활용 | PM: "chartist/sentiment/sector/fundamentals가 이미 있잖아. VP/VSA/SR/MTF를 통해 매매 기회를 포착하고 싶은 것" |
| S282 | CLAUDE.md §4 최소 단계 원칙 추가 | PM: "필수 항목 확인하고 바로 진행해. 다음 세션 제안 금지" |
| S266 | 파라메트릭 지식 차단 코드 강제 | tool_choice 강제 + Retrieve→Generate 분리 |
| S266 | mcp-DEEPwebresearch 도입 | 재귀적 웹 리서치 탐색 엔진 |
| S267 | mcp-DEEPwebresearch 제거 | Gemini API 유료 키 필요. 설치 시 미확인. WebSearch 대체 확인 |
| S267 | M.1 verdict_log + issue 완료 | mcp__memory KG 활용. 4종목+9이슈+5릴레이션 |
| S267 | M.2 방향 전환: 템플릿→실행강제 | NC-3 Q1~Q6 이미 있음. 문제는 실행. E1/E2 + 코드 3중 강제 |
| S267 | 설정문서 82% 슬림화 | 코드 중복/레거시/금지문/공통규칙→REPORT_COMMON 추출 |
| S267 | 루틴 간 단절 진단 | PM: "개별 작업으로 실행되고 연결이 안 됨. 시스템이 진화하지 않음" |
| S267 | M.3 신설: 지식주입 리서치 우선 | PM: "에이전트가 지식과 경험을 활용하려면 어떻게 해야 하는지 리서치부터" |
| S268 | Phase B 정형파이프라인 + 6축상한가 + hook강제 | PM: 에이전트가 데이터 직접 Read. 6축 D+1 판정. hook 강제 |
| S269 | per_stock verdict 필수화 | PM: "5개 도메인 모두 종목별 verdict 있어야 day-trader가 교차 가능" |
| S269 | verdict Optional→필수 (코드 강제) | PM: "코드로 강제하는 방법은?" → Pydantic Field(...) 필수 |
| S269 | news-curator 2단계 분리 | news-curator Write 실패(드릴다운에 토큰 소진) → classify/drilldown 분리 |
| S269 | policy_scan 동적 쿼리 제거 | PM: "수집 원천이 이미 있는데 왜 중복 검색? 코드는 RSS만" |
| S269 | 시계열/변화 중심 리포트 | PM: "스팟 나열 금지. 당일+5d+20d 누적+방향 필수" |
| S268 | Phase B 파이프라인 정형화 | PM: "PM이 요약하지 말고 에이전트가 데이터 직접 Read". 프롬프트 템플릿+입력매핑+day-trader 파일기반 전환 |
| S268 | detect_theme_leaders.py 정렬 수정 | PM: "테마 지형도와 대장주 순위 불일치". composite 1차+L-Score 2차로 변경 |
| S268 | analyze_limit_up.py 6축 판정 추가 | PM: "상한가 D+1 판정에 다차원 재료 검토 필요". 6축 자동 판정(theme_leader/structural/policy/monopoly/supply/news) |
| S268 | enforce hook 2개 신규 | enforce_pipeline_inputs.py(PreToolUse Agent block) + enforce_report_quality.py(PostToolUse Write 경고) |
| S281 | EVENING 풀파이프라인 실전 성공 | 5Phase(macro→sector→news→stocks→day-trader) 27분 완료. 에이전트 결과 + PM 교차 최종본 |
| S281 | Chartist 4-bundle 실전 적용 | 종가 시계열 나열 → VP/VSA/SR/MTF 4묶음 실전 해석으로 전환. PM 피드백 반영 |
| S281 | 개인 주도 종목 라벨링 금지 | PM: "개인이 올린 종목이 나쁘다고 생각하지 않음". 수급 주체 성격 인지 ≠ 선악 판단 |
| S281 | 동종 그룹 비교 분석 확립 | 단일 종목 판단 → 동종 4종목 비교로 "섹터 문제 vs 종목 문제" 구분 |
| S271 | rs_*.md 설정→UNIT 분리 (방법3) | PM: "스킬 분리 이외에 더 좋은 방법?" → 3안 비교 → UNIT 독립 문서 채택. 스킬(워크플로우)>UNIT(블록)>에이전트(행동) 3계층 |
| S271 | M.3 제외 | PM: "M3는 이미 제외된 작업" |
| S273 | POST_MARKET 파이프라인 연결 4건 | PM: "UNIT 5→6 연결 안 됨, 감시 파일 미반영, 정책 TRACKER 방치" |
| S273 | EVENING UNIT 0 제거 | PM: "EVENING에 POST_MARKET 내용 복사하지 마. 읽으면 되잖아" |
| S273 | 종목 선정 파이썬 강제 | PM: "CLI 형태로 코드화해서 임의로 건너뛰기 못하게" |
| S273 | dev_phase_state.json 초기화 | 5/6 오래된 task가 모든 CLI 호출에 "MCP 추적" 주입 |
| S273 | 드릴다운 1회 통합 필요 | Windows 셸 인자 길이 제한으로 Step 2~3 prev_output 전달 실패 |
| S274 | JSON 파싱 요구 제거, 마크다운 출력 수용 | claude -p에서 JSON 강제 불가능(CLAUDE.md가 오버라이드). run_routine.py Phase 5와 동일 패턴(--allowedTools + 마크다운)으로 통일 |
| S274 | dev_phase_state 2시간 자동 만료 | 오래된 task가 모든 프롬프트에 주입되는 문제 재발 방지 |
| S276 | rs_evening.md 3단계 구조 전환 | PM: "규칙 추가가 아니라 실제로 파이프라인이 돌아가야" → R1~R5/Q1~Q8 폐기, 메타분석→재료→판단 3단계 |
| S276 | 에이전트가 리포트를 읽는 구조 | PM: "에이전트가 데이터를 직접 받는 게 아니라 리포트를 읽고 해석" → Phase 8~12 입력을 과거 리포트 파일로 전환 |
| S276 | day-trader가 리포트 작성 주체 | PM: "리포트 작성은 데이트레이더가 한다" → Phase 12에서 day-trader가 최종 리포트 직접 Write |
| S276 | 코드로 전체 강제 | PM: "클로드 에이전트는 끼어들지 않아. 다 시스템 에이전트와 서브에이전트가 담당" → run_evening_analysis.py가 전 Phase 제어 |
| S276 | KB 참조 정리 | PM: "설정과 스킬에서 kb를 직접 사용하는 건 아니니까 삭제해" → 7개 파일에서 존재하지 않는 KB 경로 제거 |
| S276 | 단기 트레이더 프레임워크 리서치 | PM: "공격적 트레이더 관점으로 어떤 질문을 하고 어떤 데이터로 답하는지" → 6개 도메인별 분석 프레임워크 KB 저장 |
| S277 | 3인 분석가 프레임워크 적용 | PM: 성상현(유동성 시계)/이선엽(구조적 파도)/문홍철(교차검증) DNA를 에이전트 프롬프트에 이식. 이름이 아니라 의사결정 알고리즘을 주입 |
| S277 | 프롬프트 수정만, 코드 변경 0 우선 | 수집 불가 데이터(GS프라임/다크풀/UOA/실시간주문흐름)와 과도한 공수(Volume Profile) 배제. 즉시 적용 가능한 것만 Phase A |
| S284 | EVENING v4 모듈화 + 서브에이전트 재구성 | PM: "각 질문이 원자화되어야 하고, 어떻게 기술/성공조건/실패행동까지 명세서로. 오케스트레이션은 호출만" |
| S284 | 드릴다운은 서브테마까지만 | PM: "리노공업이 왜? 소켓업체가 저것뿐인가. 반도체 소부장 -> 대장주를 수급/차트/펀더로 결정해야지" |
| S284 | 코드에서 해석 생성 금지 | PM: "누구 마음대로? 서브에이전트 명세를 수정해서 실제로 작동하는지 확인해야지 임의로 수정하면 안 됨" |
| S284 | 에이전트 파일이 SSoT | PM: "서브에이전트를 만들라는게 뭔지 몰라? .claude/agents/에 에이전트 정의 파일을 만드는 것" |
| S284 | 변화+누적 프레임 필수 | PM: "모든 수치 데이터는 스팟이 아니라 N일 변화와 누적으로 제공. 30일 +100% 후 -20%는 있을 수 있는 조정" |
| S277 | Phase B 코드 변경 동일 세션 실행 | PM: "이 부분은?" → FRED Net Liq + VIX3M + Risk스코어 코드 확장 즉시 실행. 공수 낮아서 분리 불필요 |
| S277 | OFR FSI graceful skip | STLFSI2 시리즈 수집 시도했으나 데이터 없음/ID 불일치. 나머지 4개 지표로 Risk스코어 산출. 향후 확인 |
| S277 | stocks 프롬프트: 재료→수혜 종목 탐색 방향 전환 | PM: "재료가 나왔으면 어디가 수혜인지 확인하는 과정이 없다". news 수혜 경로에서 종목을 찾아가도록 STEP 1~3 구조화 |
| S277 | day-trader 역할 재정의: 분석자→연결자 | PM: "에이전트가 종합한 내용을 연결하는 작업만 하는 것". 리포트 템플릿 6개 섹션 강제. 새 분석 금지, 인용만 |
| S277 | 리포트 논리 체인 강제 | PM: "환경→자금→재료→수혜종목으로 수렴해야". 각 섹션이 이전 섹션 결론에서 출발하는 구조 |
| S277 | Phase 10.5 코드 강제 수집 | PM: "에이전트가 도구 안 부르면 코드로 강제". Phase 10 완료 후 news.md→테마 파싱→ats_main 종목 매핑→collect_stock_flow_series 실행. 13테마 57종목 48파일 수집 검증 |
| S277 | stocks Section A/B 분리 | PM: "재료→수혜와 기존 포지션 관리가 섞이면 안 된다". Section A(재료에서 출발, 기존 종목 제외) / Section B(기존 GO/WAIT 관리) |
| S277 | Phase 7.5 제거 | Phase 10.5가 정확한 시점(뉴스 이후). Phase 7.5(뉴스 전 scored_candidates 기반)는 중복이므로 제거 |
| S277 | Phase 10.5: candidate_from_theme 4축 스코어링 | flow_series 수집만이 아니라 가격모멘텀+거래대금+수급+차트 4축 스코어링 결과를 프롬프트에 직접 주입. 에이전트가 무시 불가 |
| S277 | Phase 10.5: S/A 섹션 한정 테마 추출 | PM: "재료랑 상관없는 종목이 많다". news.md 전체가 아닌 S/A등급 섹션에서만 테마 파싱. 12→7테마로 정제(2차전지/광통신/원전/철강/반도체장비 제거) |
| S277 | Write+stdout 이중 저장 | 에이전트 Write 비결정적 문제 해결. 코드가 Write 성공 시 사용, 실패 시 stdout 자동 저장 |
| S278 | Phase 10.5 테마별 분리 실행 | PM: "반도체인데 LG전자가 1위로 나온다". 7개 테마 한꺼번에 → 테마별 top 3 분리. 크로스 오염 제거 |
| S278 | 거래대금 절대 규모 가중치 | PM: "거래대금이 적은 종목이 왜 나와?". amt_5d_avg 1000B+→+2, <100B→-1. 소형주 자동 감점 |
| S278 | ats_main 태깅 오류 수정 | 라온로보틱스 "반도체 장비" 제거, 수산세보틱스 "전력설비" 제거 |
| S278 | 로봇 밸류체인 테마 추가 | PM: "감속기나 기어 쪽 연결 안 되나". 7종목에 "로봇감속기/액추에이터" 태그 추가 |
| S278 | stocks Section B 제거 | PM: "감시종목이 계속 나오는데 불필요". 기존 GO/WAIT 분석은 추적 시스템에서 관리 |
| S278 | stocks 1~2종목 집중 | PM: "5종목까지 필요없어. 1~2종목만 심혈 기울여서". 800줄→100줄 |
| S278 | PRE-SCORED 역할 변경 | PM: "재료 수혜경로에서 출발해야지 왜 리스트에서 출발하냐". PRE-SCORED는 참고용 수급 검증으로 격하 |
| S278 | NDS 2026 POLICY_TRACKER 추가 | PM: "NDS 관련 정책 트래커에 반영 안 됐다". FY2027 $1.5T + 자율시스템 $53.6B |
| S280 | 60일 추적시스템 신설 | PM: "주도테마 주도주 60일 추적시스템 구성해야지". track_theme_leaders.py + dashboard.json |
| S280 | POST_MARKET 리포트 파이프라인 | PM: "claude -p로 순차 호출해서 스킵/재배열 못하게". run_postmarket_report.py Phase 1~8 |
| S280 | UNIT 5 구조 역전 | PM: "계속 같은 종목 반복. COOLING 먼저 보여줘". Part A(COOLING)→Part B(LEADING 간결)→Part C(참조) |
| S280 | [G] 그룹 단위 집계 | PM: "CXL은 주도테마가 아니야. 반도체가 오르니까 같이 오른 것". theme_groups → canonical_theme 동적 매핑 |
| S280 | 테마 독립성 지표 | PM: "CXL이 독자 테마면 하이닉스는 왜 들어가 있어?". 반도체 RS 상관계수로 베타/독자 판별 |
| S280 | 6축 COOLING 판정 | PM: "독점/과점, 가격결정권, 매출성장률, EPS도 봐야지". Phase 7에 구조적경쟁력+펀더멘탈실체 축 추가 |
| S280 | 거래대금 200위 + 가중치 변경 | PM: "거래대금 200위 기준으로". fetch_market_top 200위, amount_absolute x2.0 가중 |
| S280 | 6축 분석 표준 + Chartist 4묶음 통일 | PM: "UNIT7 정도의 분석이 표준. 전통적 라벨 쓰지 마". Phase 5/6/7 동일 프레임. "상한가=과열" 금지 |
| S280 | Phase 2 KOSPI200 선물만 | PM: "글로벌 선물/VIX/COT는 이브닝 영역". 장마감 리포트는 우리 시장 포커스 |
| S280 | 판정 추적 시스템 | PM: "판정이 맞는지 틀리는지 추적해야지". track_leader_verdicts.py. 5d 미충족=WRONG |
| S280 | 조건 미충족=분석 오류 | PM: "자동 pass가 아니라 우리가 제대로 분석 못한 것". EXPIRED→WRONG으로 변경 |
| S290 | M.2.25 v5.2 파이프라인 실전 검증 | 신규 skill 추가 X. v1→v2 전환에서 누락된 파생/수급 데이터 수집·해석 복원. 5/15 evening 리포트 종단 생성 성공 (52KB, 10/10 섹션) |
| S290 | R1 — fetch_derivatives_sentiment JSON 저장 | 689줄 stdout-only 스크립트에 _collected 모듈 dict + 7 section stash + data/derivatives/derivatives_{YYYY-MM-DD}.json 자동 저장. G1(COT) + G2(야간선물) + G3'(SPY/QQQ P/C+MaxPain) + G7(파이프라인 정지) 일괄 해결 |
| S290 | R2 — spec doc 정합성 | rs_evening_v2.md PHASE 0를 실제 run_evening_analysis.py v5.2 진입점으로 갱신 + AGENT_TOOL_CATALOG의 fetch_derivatives_sentiment 출력 9섹션 명시 |
| S290 | R5 — 한국 섹터매체 11종 복원 | v1 STEP 2-C 누락 4매체 (seminet/steeldaily/shippingnewsnet/cnews) 추가. step_materials.py 8번째 소스 kr_sector_media 등록. material-curator "7개 소스→8개 소스" |
| S290 | R6 — postmarket/derivatives.md 입력 키 매핑 | UNIT 2의 5섹션 각각에 raw.xxx 입력 키 명시 + freshness 3 영업일 stale=보고만 룰 |
| S290 | R3 (G4 미장 섹터 ETF) 폐기 | PM 정정: "G4가 왜 나옴? v1에 없던 신규 기능 추가는 범위 외" → 폐기 |
| S290 | R1-B (KRX OpenAPI 옵션 P/C) 보류 | 키 인식 OK ("Unauthorized API Call" ≠ "Unauthorized Key"), 그러나 27 endpoint 전부 401. PM 마이페이지 활용신청 승인 확인 필요 |
| S290 | 금리 데이터 불일치 fix (PM 지적) | (1) US10Y 4.45 stale → 4.59 (5/15 종가). step_global이 파일 존재만 보고 freshness 안 봄. 12h stale 체크 추가. (2) US2Y 3.59 = ^IRX (13W T-Bill, 3M) 버그. ^IRX 제거 + FRED DGS2 직접 호출 후 global_assets에 inject. 2-10 스프레드 0.86%→0.59% 정정 |
| S290 | broker_research 0건 근본 원인 | fetch_broker_research.py가 from naver_stock import fetch_all_research ImportError. naver_stock.py에 research 함수 5개 (market/economy/industry/bond/all_research) 신규 구현. 모바일 API 필드 매핑 (writeDate/brokerName/endUrl/readCount) 정정 |
| S290 | fetcher --date 인자 (P2) | fetch_broker_research.py --date YYYYMMDD --window-days N 지원. 5/15 backfill 검증: 40건→윈도우 30건 저장 (삼성 파업/Warsh/미중 정상회담 시점 정확) |
| S290 | freshness 헬퍼 일반화 (P0) | scripts/evening/utils.py에 is_stale(path, max_age_hours) + freshness_age_hours(path) 추가. step_materials.py policy_scan 섹션에 12h stale 체크 적용 |
| S290 | policy_scan 경로 미스매치 fix | step_materials가 data/policy/{date}_policy_scan.json 잘못된 경로 봤음. 실제는 data/policy_scan/{date}.json. fix + new schema(sources[region][]) 파싱 |
| S290 | 데이터 freshness 5대 근본 원인 정리 (PM 질문 답) | A.freshness 체크 부재 / B.fetcher 날짜 인자 부재 / C.producer-consumer 경로 미스매치 / D.JSON 저장 부재 / E.upstream 코드 깨짐. F.루틴 실행 시점 부적절 (postmarket이 장 시작 전 새벽에 돌아 carry-in이 전일 종가 참조) |
| S292 | 신규 4 atom 4-Layer 불균형 명세 + FVG detection | 5/11 합의 반영. trader/imbalance-{map,dynamics,origin,structure} + mtf_chart_profiler detect_fvg. 구 wave-candle-integrity/absorption-progress 폐기 |
| S292 | 명세-코드 괴리 — leader-judge 호출 누락 | PM 지적: "코드가 claude -p로 호출하는데 어떻게 누락?" 확인 결과 orchestrator는 외부 스크립트 A 구조 정상이나 Phase 3에서 market/leader-selector(5질문 정성) 호출. sector/leader-judge(4기준 정량+lead_lag_pattern+펀더 보너스)는 orphan |
| S292 | build_leader_input.py 신규 + ats_main 176테마 역색인 | PM: "종목별 테마 파일과 연결되서 작동해야". 후보 풀 3→8~12 확장 (pm_themes top3 + 동일 테마 ats_main 종목 avg_amt_20d 정렬) |
| S292 | run_post_market_pipeline.py Phase 3 교체 | leader-selector → build_leader_input + sector/leader-judge 테마별 fan-out + fan-in pm_leaders.md. AGENT_TOOLS에 mcp__korea-stock-mcp__get_financial_statement 권한 부여(펀더 보너스 작동) |
| S292 | parse_leader_targets YAML 파서 보강 | sector/leader-judge YAML 출력 (## Theme + leaders/sub_leaders) 1순위, 기존 마크다운 테이블 fallback. Phase 4 6axis 인계 정상 작동 |
| S292 | evening 리포트 구조 재정렬 | PM 지적: "주시 자산 나열·carry_forward는 PM이 보는게 아냐". 0번 carry-in / 10번 종합 / carry_forward 삭제. 신규 §10 "테마별 주도주" (재료 → 테마 매핑 → 주도주 6축 verdict). rs_evening_v2.md 명세도 새 4단계 흐름(재료→테마선별→움직임→주도주)으로 갱신 |
| S292 | ENFORCE_PIPELINE hook 도메인메인 차단 | chartist/sentiment-analyst/fundamentals-analyst/macro-economist/sector-analyst 호출 시 표준 패키지 스키마 누락 차단. evening 컨텍스트는 evening/* 전용 사용 필수. PHASE 2 16건 차단 → evening/chart-check/flow-check/fundamental-check/substance-check로 우회 |
| S292 | synthesize VETO_SUBSTANCE 룰 우려 (이월) | 001450 현대해상이 chart/flow/material/fund/env 5축 긍정인데 substance unrelated(테마 매출 0%)로 자동 거부. 본업 100% 종목(보험/정유) 부적절 — 보너스로 전환 검토 carry |
| S292 | 방산주 5/19 갭상승 트리거 식별 | N1(Pravda Japan 5/18 "한국 = NATO 무기 공급자" 프레이밍) + N2(NATO Tarja Jaakkola 방한 + 2차 DAPA-NATO 협의) + 한일 정상회담 안보의제 + 기존 폴란드 K9/천무 carry. structural A급. 켄코아 정점 +24% → 오후 +7% 차익실현 패턴 |
| S293 | leader-judge 셸 escape 해결 | claude -p "$(cat agent.md)" 백틱(mcp 토큰명) 셸 평가 — 단일따옴표도 Windows git-bash subprocess 경유 시 무력화. --append-system-prompt-file 파일 경로 전달로 회피. run_post_market_pipeline + run_6axis_pipeline 양쪽 적용 |
| S293 | VETO_SUBSTANCE → 보너스 전환 | PM 지적: 본업100% 자동거부 부적절. V4 자동 PASS 제거, compute_substance_bonus() 신설 (core +0.05 / partial +0.02 / unrelated -0.10). 현대해상 0.52→0.42 |
| S293 | postmarket v1→v2 통합 | v4 production이 v1(postmarket/) 호출, v2(postmarket_v2/)는 orphan. step 모듈 v2 7 에이전트로 재배선 + step_signals/step_discovery 신규. v2 출력부 JSON→마크다운 재작성 (리포트 49,540→18,259자, JSON 9→0) |
| S293 | 커맨드 버전 일원화 | PM: "v1/v2 분리 없애고 기본형으로". rs_*_v2.md → 기본형 통합 후 v2 삭제. postmarket_v2 디렉토리 → postmarket rename, 구 v1 → _archive/agents/postmarket_v1/ |
| S293 | v4 stale phase 미정리 버그 | 에이전트가 구버전 phase{N}.md 보고 "Surgical Changes" 명분 덮어쓰기 거부 → JSON 잔존. v4 시작 시 {today}_phase*.md 삭제 추가 |
| S293 | 288180 단발 확정 | DART 5/15~19 단독 공시 없음(분기보고서 5/15만) + 5/20 -29.99% 하한가 → 단발 세력성 확정 |
| S294 | morning/evening 출력부 점검 결과 조치 불필요 | morning 4 + evening 12 에이전트 출력부 전수 점검. 전원 마크다운 명시, JSON/메타 0건. postmarket v2 문제 없음 |
| S294 | 4요소 결손 12건 보강 | 성공기준 8개 + 재시도 4개 추가. 16개 morning/evening 에이전트 4요소 전원 완비 |
| S294 | 95개 에이전트 4요소 확대 보류 | PM 결정: 나머지 도메인(macro/sector/chartist/...) 4요소 감사는 진행하지 않음 |
| S294 | leader-opportunity 에이전트 신설 + v4 Phase 8 연결 | PM: "주도주 중 매매 기회 종목 판단 서브에이전트가 파이프라인에 없다". 5-lens 발굴 에이전트 + step_opportunity → v4 Phase 8 |
| S294 | GO/WAIT/PASS 판정기 아닌 발굴 에이전트 | PM: "뭘 사라고 할 것이냐만 있으면 됨. 다양한 관점으로 종목을 찾는 것". verdict 라벨 금지, 행동 지향 출력 |
| S294 | 6축 단일 풀 + pool_status 태그 | PM: "다 분리하지 말고 하나 pool로 관리, 태그로 갖고 있다 재료 소멸하면 태그만 전환". analyze_stock_6axis --both → pool.json |
| S294 | flow 갭 수복 (FS step 이동) | 6축 수급축 전부 미확인 — leader pool이 watchlist에 없어 flow 미수집. load_watchlist에 leader pool 추가 + FS를 6A 앞으로 |
| S294 | SCRIPT-E3 fetch_validated_news 복원 | S290 naver_stock.py 재작성 시 함수 누락(fetch_broker_research와 동일 유형). fetch_stock_news + 종목명 is_direct/biz_tag 래퍼로 복원 |
| S294 | synthesize.py verdicts overwrite 수정 | --code 단일 모드가 verdicts.json 통째 덮어쓰기 → 기존 읽어 merge. run_6axis 순차 호출 시 판정 유실 해결 |
| S294 | daily_view 폐기 | PM: "데일리뷰 따로 안 보고 모닝오픈 리포트 읽으면 되잖아". daily_view 생성이 claude -p 비결정성에 의존해 만성 누락. 루틴이 직전 리포트 .md 직접 읽기로 전환 |
| S294 | theme_timeline / candidate_scenarios 독립 파일화 | daily_view 폐기로 고유 키 2개가 갈 곳 상실 → theme_timeline은 data/theme_timeline/, candidate_scenarios는 data/tracking/candidate_scenarios.json 롤링 파일로 |
| S295 | 리포트 sanitizer 신설 | PM: "한계 명시·Sources·YAML 덤프·포트폴리오 비중·한 줄 행동 명령은 PM이 봐야 할 게 아냐". report_sanitize.py — 조립 직전 1회. 전 루틴 공통 |
| S295 | 한계는 verdict 반영 대상, 표시 대상 아님 | PM: "한계가 있다는 걸 표시한다고 신뢰도가 오르거나 바뀌냐". 한계 → verdict 약화 또는 데이터 보강. 별도 라벨 금지 |
| S295 | §0 carry-in 본문 재게시 제거 | PM: "리포트 참조는 시장변화 맥락 파악용이지 리포트 작성용이 아님" |
| S295 | 뉴스 수집 슬롯/티어 폐기 | PM: "왜 슬롯을 정해놓냐. 중요한 뉴스 찾는 게 목적이지 슬롯 갯수가 목적 아냐. 티어 불필요 — 좋은 정보는 어디서 나왔든 수집". 노이즈만 기계적 필터, 중요도는 큐레이터 |
| S295 | kwtok 봇 채널 제거 | 이데일리FX [AI시그널] 봇 504건/일이 top-30 독식. 채널 자체 제거 (kwusa 실뉴스는 유지) |
| S295 | 이브닝 재료 체인 원자화 (현행 NC-3 이식) | PM: "리포트 중심 에이전트의 NC-3이 구버전 아니냐 → 조사·판단 후 현행 NC-3를 원자화 포함하여 구현. evening 전용 사본 생성". material-curator monolith 해체 → material-grader(NC-3)+theme-mapper(NC-6) |
| S295 | morning_view.json → morning_open.md 마이그레이션 절반 완료 발견 | daily_view 폐기 후 postmarket step_signals/step_discovery + 에이전트 스펙 3개가 폐기된 JSON 계속 지목 → signal-scorecard가 엉뚱한 시그널 채점. 12곳 .md 직접 읽기로 전환 |
| S297 | 정책 추적 write-back 신설 | PM: "정책 추적이 갱신 안 됨". policy-checker가 §3 생성만 하고 POLICY_TRACKER 원본에 안 되씀 → 행동 5~6단계(write-back + 30일 아카이브) + Edit 도구. POLICY_TRACKER_ARCHIVE.md 신설 |
| S297 | EVENING 중복 = 데이터 미분리 진단 | PM: "1 에이전트 1 데이터 1 질문인데 왜 겹치냐". 질문은 원자화됐으나 10Y·HY 등 공유 입력이 여러 에이전트에 중복 투입. POST_MARKET·MORNING은 unit 분리 + 상류 출력 전달로 해결 — EVENING만 누락 |
| S297 | EVENING에 MORNING 패턴 이식 | macro §1 = 원시 글로벌 지표 단일 owner. triaxis/intermarket이 raw 대신 상류 출력 md를 받아 인용만 |
| S297 | EVENING 파생/포지셔닝 폐기 | PM: "파생으로 시장 방향 미리 예상하는 게 별로 안 중요. 한국장은 이미 반영". 외인 선물/VKOSPI는 POST_MARKET UNIT 2 중복, 야간선물은 MORNING이 적기. derivatives + capital-flow 폐기, §2.5 = triaxis + intermarket만 |