콘텐츠로 이동

Topic: 주간 복기 시스템 (Weekly Retrospective — 렌즈 교정기)

Status: 🔄 리포트 복기를 "채점기"에서 "자금 흐름 렌즈"로 전면 재설계 (S352, 2026-06-20~21). 단일 cycle-scorer → 4개 직렬 서브에이전트 파이프라인으로 분해 + 인용 강제 토큰 + 자기검증 의무. discover 복기(/rd)는 S351 그대로. 상세 §10. 다음 세션 잔여: §10.6.

S352 핵심 전환 (PM 단계적 교정으로 도달): 복기 = "맞았다/틀렸다 채점"이 아니라 "자금이 글로벌→한국 어디로 이동했고(변화+누적), 다음 주 어느 방향일지 렌즈를 만들고, 우리 시스템이 그 흐름을 읽었나". 산출물 = 다음 주 매매에 끼고 갈 자금 흐름 렌즈. (이전 §9 "응축 레짐 채점"도 폐기 아니라 이 렌즈 구조에 흡수)

S351 확장 (06-15): discover 복기에서 시작해 종목선정 파이프라인 근본 진단으로 확장(selector 재설계·DART 수집 복구·우선주 제외). 종목 레벨 후속은 topic_discover_pipeline_followups.md 소관. 본 Topic은 시장·섹터·테마 리포트 복기에 집중. Owner: PM + 어시스턴트 전제: 설계 + 26일 복기 실증(§8) + 본체 1차 구현(§9). 트리거(주말 1회)·VERIFIED 루프는 잔여. Decisions/Corrections (S350): 복기를 실제 26일 돌려 "관찰 에이전트의 매크로 렌즈 월권" 구조결함 발견 → morning 4에이전트 교정(별도 실행). 내 가설("변동성=매크로붕괴")이 데이터에 반증됨 = 복기의 본질 실증. 재료→종목 단절 발견 → 별도 토픽(theme_stock_linker)으로 분화.

★ Decisions/Corrections (S351 — 채점 축 재정의 + 본체 구현 + W.6 재설계): - 채점 단위 재정의 (PM 확정): §2.1의 "렌즈=에이전트 8종"을 폐기하고, 하나의 투자어시스턴스 사이클(전일 evening→당일 post_market)을 3축으로 채점하는 구조로 전환. - 채점 3축 (PM 품질기준 박힘): A.수집("수집 이상의 해석 불가" — 사전가용성) / B.해석("방향+누적" — market-interpretation §1·§2 정합) / C.신호 교차 해석 (★재정의: "금리↑→은행주" 단일 도식 금지 → "금리↑인데 SOX↑·VIX↓ 동반 = 일시적 이벤트 → SOX 기회"처럼 동시 신호를 교차). - 점수화 폐기 (PM 확정): ADEQUATE/WEAK/FAILED 3단계 질적 판정 + 케이스 역추적만. 정량은 signal HIT율만(CAR은 종목→discover로 이관). - ★ 복기 레벨 = 시장 해석·섹터·테마까지만 (PM 확정 2026-06-14): 종목 방향성/선정/CAR은 이 시스템이 안 다룬다. 그것은 discover 전용 복기 에이전트(retro/discover-scorer, 미구현) 몫. "SK하이닉스 못 짚음" 같은 종목 채점 금지. day_package 종목 리스트는 섹터/테마 발현 확인 보조로만. - ★ 처방 = 관점 위원회 구조 (PM 확정 2026-06-14, 2차 정정): "에이전트가 이렇게 해석하라"(해석 지침 주입)는 무의미하니 금지. 결함 주제를 2~3개 관점으로 병렬 분기하는 위원회 구조 재구성으로만. ★★핵심: "관점(집중) 분기"이지 "조건 분기"가 아니다. 현상(입력 신호)은 고정하고, "그 동일 현상의 어디에 집중하느냐(렌즈)"만 다르게 한다. 예: 금리↑·SOX↑·VIX↓ 현상 고정 → 관점A(금리=악조건에 집중→은행·보험·소비재 헷지) vs 관점B(SOX=성장에 집중→반도체·소부장) → theme_actual로 어느 관점이 맞았나 대조. 금지: SOX·VIX 값을 바꾼 미래 if-then 시나리오(=조건 분기). 제약: 단일 에이전트 여러 관점 금지(역할 분리), 관점 2~3개 압축, 실제반응 대조 필수. - 우선순위: PM 목적 2(시스템 복기→향상)부터. 목적 1(차주 투자계획)은 다음 작업. - 역할 분담: 코드 = Collector(입력 체계화) + 오케스트레이터. 추론 = 채점·처방(에이전트). PM "에이전트가 받아들일 데이터를 체계화해야 그 데이터로 해석한다".


0. PM이 원하는 것 (확정)

"한 주 리포트를 읽어보면 우리장 시황·미장·뉴스가 유기적으로 순환하는데, 어떤 부분은 시장을 제대로 읽었고 어떤 부분은 미흡했다. 종목선정도 제대로 된 부분/안 된 부분이 있다. 이걸 복기할 새 시스템이 필요하다."

복기 목적 3개 (PM 답변): 1. 종목선정 성과 추적 (정량) — 선정 후 실제 수익률(CAR) 측정. 2. 시스템 규칙 교정 (피드백) — 반복 오판을 룰/가중치에 반영. 3. ★ 핵심: 에이전트를 "하나의 해석 렌즈"로 다듬기 — AI 해석에 단순 의존이 아니라, 각 에이전트(렌즈)가 시장을 제대로 봤는지 렌즈 단위로 검증하고 개선.

3번이 이 시스템의 정체성이다. 기존 메타분석(topic_report_meta_analysis)은 "리포트 전체 vs 시장 데이터" 거시 교차였다. 이 시스템은 한 단계 내려가 "어느 렌즈(에이전트)가 무엇을 잘 봤고 못 봤나"를 렌즈 단위로 채점한다.

★ PM 추가 확정 (S350 2차): 복기는 "시장이 이렇게 반응했다"(채점)에서 멈추면 안 된다. ④우리 시각의 무엇이 부족했나(인지결함 진단) → ⑤에이전트를 어떻게 구성/교정하나(렌즈 엔지니어링)까지 가야 한다. - 교정은 에이전트 학습으로밖에 구성할 수 없다 (프롬프트 기반 → 코드 가중치 직접조정 불가). - 따라서 교정 = 학습 주입(A) / 관점 추가(B) / 위원회 신설(C) 3형태. 위원회 신설·관점 추가로 시스템 정확도를 높인다. - 모든 처방 근거는 실제 오판 케이스 역추적에서만 (환각 차단). → §3.2가 본체.


1. 현황 진단 — 이미 있는 것 vs 빈 곳

1.1 한 주의 리포트 순환 구조 (유기적 연결)

evening(D-1밤, 미장+전제설정)
  → morning_open(오버나잇 미장 스캔 + ★EVENING 전제검증표 + 6개 시그널)
    → mid_morning / afternoon(장중)
      → post_market(종가결과 + ★UNIT3 signal-scorecard로 아침시그널 HIT/MISS/REVERSE)
        → 다음 evening
주간축: discover(종목선정 D1~D9) · weekly_research/digest(주간 시황정리)

1.2 이미 작동하는 "일일 채점" 장치 (재사용 자산)

장치 위치 채점 대상 산출
signal-scorecard (PM-1) post_market UNIT3 그날 아침 6개 시그널 HIT/MISS/REVERSE + 8 root_cause (예: 6/12 = 83.3%, S5 REVERSE)
EVENING 전제검증 morning_open §4 전날 evening 9개 전제 유효/약화/강화
D9 system-self-check discover 첫단계 어제 D7 선정·D1 매크로·D8 보유 HIT/PARTIAL/MISS/REVERSE + 8 root_cause + target_component(D1~D8) + system_actions

결정론적 채점 매트릭스(4 verdict)와 8 root_cause는 이미 정의돼 있다. 새로 만들 필요 없음. 주워서 주간으로 집계하면 된다.

1.3 빈 곳 (= 이 시스템이 채울 것)

  1. 일일 채점이 주간으로 누적·집계되지 않음. 매일 HIT/MISS가 나오지만 "이번 주 어느 렌즈가 반복해서 틀렸나"를 보는 곳이 없다.
  2. 렌즈(에이전트) 단위 귀속이 없음. signal-scorecard는 "S5가 REVERSE"라고만 하지 "어느 에이전트(섹터전이? 재료등급? 글로벌스캔?)의 판단이 틀려서 S5가 나왔나"를 역추적하지 않는다.
  3. 종목선정 CAR 추적 미실행. topic_report_meta_analysis의 Event Study가 전부 "대기" 상태. discover TRACK/selected 종목의 D+5/D+10/D+20 실제 알파가 집계 안 됨.
  4. 주간 서사 복기 부재. weekly_digest는 "무슨 일이 있었나"(사실 정리)는 하지만 "우리가 그걸 제대로 읽었나"(판단 채점)는 안 한다.
  5. 채점의 공정성 장치 부재. "오른 종목을 못 짚었다"고 채점하려면, 그 재료가 사전에 잡을 수 있었는지부터 따져야 하는데 그 단계가 없다. (아래 §1.4 — 6/08 NVIDIA 케이스가 드러낸 핵심)

1.4 ★ 채점 방법론 — "실제 움직임 → 사전가용성 → 재료·테마 경로" (S350 PM 확정)

PM 검증으로 도출: "장중에 오른 종목을 '놓쳤다'고 채점하려면 그 재료를 사전에 잡을 수 있었는지 확인해야 한다. 그리고 재료가 있었다면 어떤 테마를 봤어야 하는지까지 나와야 한다." → 6/08 NVIDIA-SK 케이스가 이 원칙의 필요성을 실증.

왜 이게 핵심인가 (6/08 실증)

6/08 폭락일에 SK네트웍스 +30%·NAVER +12.92%가 NVIDIA-SK/NAVER AI동맹으로 급등. 단순 복기는 "시황 재료인데 못 짚음 → 놓침"으로 끝낸다. 그러나 역추적하면: - 이 재료는 4/30 ISSUE_LOG 등록 → 6/5 evening T2 structural_dominant 재료 → 6/7 저녁 "6/8 08:30 SK 공동발표 예고"까지 여러 날 우리가 추적하던 재료였다. - 게다가 6/5 evening은 이미 재료→테마 경로를 그려놨다: "NVIDIA-NAVER MOU → AI 데이터센터 capex → HBM·반도체장비·데이터센터/AI인프라(direct) → 전력·냉각·UPS·광통신(indirect) → 클라우드 SI·SOC(sentiment)". - 그런데 6/8 아침 morning_open 시그널은 이 재료도, 이 테마경로도 안 썼다 (AVGO 악재·외인 패닉만 다룸).

→ 즉 이건 "예측 불가한 갑툭튀"가 아니라 시스템 내부에 답(재료+테마경로)이 있었는데 합성 단계가 떨어뜨린 구조 결함 — §2 매크로 묵살·§3 삼성전기와 같은 병이다. 이 진단은 사전가용성 역추적 없이는 절대 안 나온다.

채점 3단계 (앞으로 복기는 이 순서로)

STEP 1. 실제 움직임을 먼저 깐다 (오른 것 + 내린 것 둘 다)
   - 하락만 보면 "우리 예상과 반대로 오른 것"이 안 보인다.

STEP 2. 오른 종목 각각을 사전가용성으로 3분류 (★채점 공정성)
   (a) 사전가용  — 전날저녁/아침에 재료가 우리 리포트 사슬(ISSUE_LOG→evening→morning)에 있었다
                  → 못 짚었으면 우리 책임. 채점 O. (NVIDIA-SK = 여기, 가장 뼈아픔)
   (b) 장중발생  — 개별 공시·뉴스가 장중 최초 등장 (예: 화신정공 보스턴다이나믹스 방문 뉴스)
                  → 예측 불가. 채점 제외.
   (c) 시황동조  — 개별재료 없이 섹터·시장 따라 움직임 → 버서(beta) 판단.
   ※ 각 종목마다 "이 재료가 ISSUE_LOG/evening/morning 어디까지 올라와 있었나"를 명시.

STEP 3. (a) 종목은 "재료→테마 경로"까지 도출 (★PM 추가 요구)
   - "이 재료를 알았다면 어떤 테마를 봤어야 하나"를 evening 파급맵과 대조.
   - 재료가 가리킨 테마(예: AI인프라·HBM·전력·광통신) vs 실제 발현한 테마(SK네트웍스·NAVER)를 매칭.
   - 못 짚은 게 "재료 자체를 놓침"인지 "재료는 봤는데 테마 연결을 못함"인지 구분.
     → 전자면 morning 스캔 보강, 후자면 재료→테마 매핑 로직 보강. (교정 방향이 달라짐)

이 방법론이 만드는 차이

  • 공정성: 장중 갑툭튀(b)를 "놓쳤다"고 부당 채점하지 않는다. 진짜 우리 책임(a)만 채점.
  • 행동가능성: "놓쳤다"에서 끝나지 않고 "이 재료는 → 이 테마를 봤어야 했다"까지 나와, 다음에 같은 재료가 오면 어디를 볼지 명령이 생긴다.
  • 귀속 정밀화: "재료 누락" vs "테마 연결 실패"를 갈라 교정 대상(스캔 vs 매핑)을 정확히 지목.

구현 노트: 이 3단계는 향후 Lens Scorer(§3 LAYER2)의 L_signal·L_material·L_sector 채점에 내장한다. 지금은 기획 원칙으로만 확정. 데이터 소스 = ISSUE_LOG.md, evening §재료 파급맵, morning §시그널, post_market UNIT4/5(실제 상승+개별재료 WHY).


2. 설계 핵심 — "렌즈 카드(Lens Card)" 개념

2.1 렌즈 = 해석 에이전트 1개

이 시스템의 단위는 "리포트"가 아니라 "렌즈"다. 한 주 동안 각 렌즈가 내린 판단을 모아 카드 1장으로 채점한다.

복기 대상 렌즈 목록 (리포트별 핵심 판단 생산자):

렌즈 ID 에이전트 한 주 동안 내린 판단 (복기 대상)
L_global morning/global-scanner 오버나잇 미장 → 한국 오프닝 1차 영향
L_sector morning/sector-transfer · evening/sector-flow 미장 섹터 → 한국 테마 전이 강도
L_material morning/material-grader · evening/material-curator 신규 재료 NC-3 등급 + 테마 매핑
L_signal morning/signal-synthesizer evening 전제 + 글로벌 + 섹터 + 재료 → 오늘 6개 시그널
L_macro macro-economist (M1 triaxis) 시장 레짐 (Risk-On/Off/Transition)
L_discover discover D2~D7 (차트/수급/펀더/재료/종합) 종목 선정 (selected + TRACK)
L_narrator postmarket/market-narrator 그날 시장 서사 (왜 올랐나/내렸나)
L_theme postmarket/theme-strength-ranker 테마 강도/lifecycle 랭킹

2.2 렌즈 카드 1장의 구조

lens_card:
  lens_id: "L_signal"
  week: "2026-06-08~06-12"
  judgments_made: 30          # 한 주 이 렌즈가 내린 판단 수 (시그널 5d×6개 등)
  scored: 28                  # 결과 도래로 채점 가능
  hit: 18 / partial: 4 / miss: 3 / reverse: 3
  accuracy_pct: 78.6          # (hit+partial)/scored
  hit_only_pct: 64.3

  what_it_read_well:          # ★ "제대로 읽은 것" (사실+수치)
    - "메모리 슈퍼사이클 갭업 1순위 판단  월~금 5/5 HIT (SK하이닉스·한미반도체 평균 +N%)"

  what_it_missed:             # ★ "미흡한 것" (사실+수치+귀속)
    - claim: "S5 ORCL 부정전이  한국 SaaS 약세"
      verdict: REVERSE
      actual: "NAVER +7.81% / 카카오 +3.05% (반대)"
      root_cause: "catalyst_timing_blind   올트먼 6/14 방한(D+2 임박)을 미장 후행신호보다 낮게 가중"
      recurring: true         # 이번 주 2회+ 또는 과거 주 반복?

  recurring_patterns:         # 한 주 내 + 직전 주 대비 반복 오판
    - pattern: "단일 미장 후행신호 vs 국내 임박 catalyst 충돌  미장 우선  반복 오판"
      occurrences_this_week: 2
      lesson: "EVENT_CALENDAR D+2 임박 catalyst를 ×1.5 가중으로 분리표기"
      target_rule: "morning/signal-synthesizer 입력에 imminent_catalyst 블록 추가"

  lens_verdict: SHARP | OK | DULL   # 이 렌즈가 이번 주 날카로웠나/무뎠나

SHARP/OK/DULL 기준 (결정론): - SHARP: accuracy ≥ 75% AND recurring_miss = 0 - OK: accuracy ∈ [55%, 75%) OR recurring_miss ≤ 1 - DULL: accuracy < 55% OR recurring_miss ≥ 2 → 교정 액션 강제 생성


3. 시스템 구조 — 3 레이어

┌─ LAYER 1: 수집·정렬 (Collector) ─────────────────────┐
│ 한 주치 리포트 5세트 + 일일 채점 결과를 시차 정렬해 모은다 │
│ 입력: post_market 5 · morning 5 · evening 5 · discover N │
│ 재사용: signal-scorecard 결과, EVENING 전제검증, D9 카드  │
│ 시차규칙: topic_weekly_market_digest_routine §1 그대로     │
└──────────────────────────────────────────────────────┘
                          ↓
┌─ LAYER 2: 렌즈 채점 (Lens Scorer) — fan-out ─────────┐
│ 렌즈 8종 각각에 카드 1장 생성 (§2.2)                    │
│ - 일일 채점(HIT/MISS) 주간 집계                         │
│ - 판단→실제결과 대조로 what_read_well / what_missed     │
│ - root_cause 귀속 (기존 8 카테고리 재사용)              │
│ - recurring 패턴 = 이번주 내 반복 + 직전주 카드 대비     │
└──────────────────────────────────────────────────────┘
                          ↓
┌─ LAYER 3: 종합·교정 (Synthesizer + Calibrator) ──────┐
│ A. 주간 서사 복기 (내러티브) — 미장→한국→뉴스→종목 연결 │
│ B. 종목선정 CAR 스코어보드 (정량 — Event Study)         │
│ C. 렌즈 교정 액션 (DULL 렌즈 → 룰/가중치 수정 제안)      │
│ D. 다음 주 watch (반복 오판 재발 감시 항목)             │
└──────────────────────────────────────────────────────┘

3.1 LAYER 3-B: 종목선정 CAR 스코어보드 (정량 목적 #1)

topic_report_meta_analysis의 Event Study를 주간 단위로 한정 실행한다 (전체 history 아님 — 매주 누적).

종목 선정렌즈 선정일 선정근거(인용) D+1 D+5 CAR vs KOSPI 판정
한미반도체 discover D7 + PM-3 TRACK 6/12 HBM TC본더 독과점 PENDING
  • 데이터: data/market_top/{날짜}.json 종가 + KOSPI 일봉. (이미 수집됨)
  • D+5 미도래 종목은 PENDING → 다음 주 복기에서 자동 채점 (D9 PENDING 로직 재사용).
  • 누적: 주간 CAR을 data/retro/car_ledger.parquet에 append → 월간/분기 "선정능력" 추세.

3.2 LAYER 3-C: 렌즈 엔지니어링 (핵심 목적 #3 — 이 시스템의 정체성)

★ PM 지적의 핵심: 복기는 "시장이 이렇게 반응했다"(③채점)에서 멈추면 안 된다. ④"그래서 우리 시각의 무엇이 부족했나" → ⑤"에이전트를 어떻게 구성/교정하나"까지 가야 한다.

① 시나리오 작성 → ② 실제 반응 → ③ HIT/MISS 채점
   → ④ 인지결함 진단 (시각의 구조적 약점)
     → ⑤ 렌즈 엔지니어링 (에이전트 재구성)

기존 §3.2(단편 calibration_action)는 ③→얄팍한 패치로 건너뛰었다. 본 개정은 ④와 ⑤를 정식 단계로 분리한다.

④ 인지결함 진단 (Cognitive Defect Diagnosis)

표면 패치("×1.5 가중") 이전에 "이 렌즈가 애초에 왜 그렇게 봤는가"를 묻는다. root_cause(사건-신호 갭)보다 한 층 아래 = 반복되는 사고 편향.

진단 카탈로그 (recurring_patterns에서 귀납 — 확장 가능):

인지결함 ID 정의 이번 주 발현 예
us_lag_overweight 단일 미장 후행신호를 국내 임박 catalyst보다 항상 우선 S5 ORCL→SaaS 약세 REVERSE (샘 올트먼 방한 무시)
recency_bias 직전 1~2일 흐름을 과대 외삽, 전환점 못 잡음 (해당 주 사례 귀속)
index_sector_conflation 지수 등락으로 섹터 자금방향 대체 (대형주 착시) (weekly_digest §2 규율과 동일 결함)
single_signal_confidence 단일 강신호로 confidence HIGH, 상충신호 무시 (해당 주 사례)
magnitude_blind 방향은 맞으나 강도 체계적 과소/과대 (6/12 S3 = +1.5% 예상 vs +7.8% 실제) S3 강도 과소평가 HIT이나 폭 미스
catalyst_decay_blind 재료 신선도/소진 단계를 못 읽어 식은 재료에 가중 (해당 주 사례)

→ 진단은 반드시 실제 MISS/REVERSE 케이스 역추적에서만 나온다 (PM 지정, 환각 차단). "일반적으로 에이전트는~" 금지. 형식: "L_X가 [실제 입력]을 보고 [실제 판단]했는데 실제는 [실제 결과] → 이 렌즈는 [인지결함ID]를 가졌다".

⑤ 렌즈 엔지니어링 — 교정의 3가지 형태

PM 통찰: "교정은 에이전트에 대한 학습으로밖에 구성할 수 없다. 위원회 신설이나 관점 추가로 시스템 정확도를 높여야 한다."

에이전트는 프롬프트 기반이라 코드 가중치처럼 직접 못 만진다. 그래서 교정은 아래 3형태 중 하나로만 가능하다 (단편 룰 패치는 형태 A의 최소 단위일 뿐):

lens_engineering:
  lens_id: "L_signal"
  cognitive_defect: "us_lag_overweight"
  evidence_case: "S5 (6/12): ORCL -8.53% 후행신호로 한국SaaS 약세 판단  NAVER +7.81% REVERSE.  올트먼 6/14 방한(D+2)이 EVENT_CALENDAR에 있었으나 미반영."

  form: PROMPT_LEARNING | PERSPECTIVE_ADD | COMMITTEE   # 3형태 중 1
  prescription:
    # form A — PROMPT_LEARNING (관점/체크리스트를 프롬프트에 주입)
    #   "signal-synthesizer.md에 체크리스트 추가: 미장 후행신호로 국내 약세 판단 전,
    #    EVENT_CALENDAR D+2 이내 반대방향 국내 catalyst 존재 여부 의무 확인"
    # form B — PERSPECTIVE_ADD (빠진 관점/관찰 에이전트 신설)
    #   "discover의 관찰 분리처럼, signal 생성 전 'catalyst-imminence-observer' 관찰 1종 추가 →
    #    임박 catalyst를 별도 envelope로 synthesizer에 공급"
    # form C — COMMITTEE (상충 관점을 제도적으로 교차 — 단일렌즈 독주 차단)
    #   "L_signal이 미장발 약세 판단 시, 'domestic-catalyst-advocate' 반대측 렌즈가
    #    의무 반론 → 두 관점 충돌을 synthesizer가 명시적으로 재정. 1렌즈 독단 금지"

  target_files: [".claude/agents/morning/signal-synthesizer.md", ...]
  rationale: "form 선택 근거  1회성이면 A, 구조적 관점누락이면 B, 반복충돌이면 C"
  status: PROPOSED            # PROPOSED → PM승인 → APPLIED → (다음주)VERIFIED

form 선택 결정 트리: - 같은 인지결함 이번 주 처음 + 룰 한 줄로 막힘 → A (학습 주입) - 결함이 빠진 관점/데이터 때문 (애초에 그 정보를 안 봄) → B (관점 추가) - 결함이 2주+ 반복 OR 단일 렌즈가 상충신호를 구조적으로 무시 → C (위원회 신설) — 가장 무겁지만 정확도 상향 핵심

→ 모든 처방은 PM 승인 전 PROPOSED. 임의로 에이전트 파일 수정 안 함 (CLAUDE.md §3). 적용 후 다음 주 복기에서 동일 인지결함 재발 여부 = VERIFIED/FAILED 추적. FAILED면 form 한 단계 격상(A→B→C). 이것이 "에이전트를 렌즈로 다듬는" 닫힌 루프.

위원회(COMMITTEE) 형태 — 누적되는 시스템 자산

form C로 신설된 위원회/관점은 1회 패치가 아니라 영구 편입된다. 누적 레지스터:

data/retro/lens_registry.json

- committee_id: "domestic_catalyst_check"
  born: "2026-06-13 복기 (us_lag_overweight 2회 반복)"
  role: "미장 후행신호 기반 국내 약세 판단을 임박 국내 catalyst로 교차검증"
  attached_to: "L_signal"
  verified_weeks: ["2026-06-15주: 재발 0건  유효"]

→ 시간이 갈수록 시스템은 "단일 에이전트 해석"에서 "상충 관점이 교차검증된 위원회 구조"로 진화. PM이 원한 "AI 해석에 단순 의존 X"의 구체적 메커니즘.


4. 산출물 포맷 (1 리포트)

docs/weekly_research/{월요일날짜}_retrospective.md

# 주간 복기 — YYYY-MM-DD주

## 1. 한 줄 결론
이번 주 우리 시스템은 [무엇]을 날카롭게 봤고 [무엇]을 놓쳤다. 가장 시급한 교정은 [렌즈/룰].

## 2. 주간 서사 복기 (내러티브 — 흐르는 글)
- 미장→한국→뉴스→종목이 한 주 어떻게 순환했나
- 각 전환점에서 "우리가 제대로 읽었나" (●제대로 ○미흡 표기)
- 예: "월 AVGO쇼크를 evening이 잡음(●) → 화 한국전이 강도 과대평가(○)..."

## 3. 렌즈 스코어보드 (8 카드 요약표)
| 렌즈 | accuracy | verdict | 제대로 읽은 것 | 미흡한 것 |
|---|---|---|---|---|
| L_signal | 78.6% | OK | 메모리 갭업 5/5 | S5 catalyst 임박 가중 누락 |
...

## 4. 종목선정 CAR 스코어보드 (정량)
[§3.1 표] + 누적 추세 1줄

## 5. 인지결함 진단 → 렌즈 엔지니어링 (★ 핵심)
각 DULL 렌즈마다:
- **인지결함**: [ID] — 실제 오판 케이스 역추적 ("L_X가 [입력] 보고 [판단], 실제 [결과]")
- **처방 form**: A 학습주입 / B 관점추가 / C 위원회신설 (+ 선택 근거)
- **target_files** + status: PROPOSED → PM 승인 대기
- 신설 위원회는 lens_registry.json 영구 편입

## 6. 다음 주 watch
- 지난주 처방 VERIFIED/FAILED 추적 (동일 인지결함 재발 여부) — FAILED면 form 격상
- 활성 위원회 유효성 재확인
- (시차) 미국 금요일 → 다음주 월 선행입력 [weekly_digest와 연결]

5. 기존 시스템과의 관계 (중복 방지)

기존 이 시스템과의 차이
weekly_digest (시황 정리) digest = "무슨 일"(사실). 복기 = "우리가 제대로 읽었나"(채점). digest를 입력으로 받음.
signal-scorecard (일일) 일일 1개 시그널셋 채점. 복기 = 5일 누적 + 렌즈 귀속. 재사용.
D9 self-check (일일) discover 내부만. 복기 = 8 렌즈 전체 + 종목 CAR. D9 카드를 L_discover 입력으로.
topic_report_meta_analysis 거시 3방법론(Event Study/Factor/Regime) 미실행. 복기 = Event Study를 주간단위로 실제 실행. Factor/Regime은 차후.

이 시스템은 신규 채점기를 만들지 않는다. 흩어진 일일 채점을 렌즈 단위로 줍고 주간 집계 + 교정 루프를 더한다.


6. 구현 단계 (PM 승인 후 — 지금 아님)

단계 작업 의존
W.1 Collector — 한 주치 리포트+채점 시차정렬 수집 스크립트 weekly_digest 수집부 재사용
W.2 렌즈 카드 스키마 + Lens Scorer 에이전트 8종 (또는 1종 범용) signal-scorecard/D9 매트릭스
W.3 CAR 스코어보드 — Event Study 주간 실행 market_top + KOSPI 일봉
W.4 Synthesizer + Calibrator (서사+교정액션) W.2+W.3
W.5 1주치 실증 (6/08~6/12) W.1~W.4
W.6 트리거 (주말 1회) + 교정 VERIFIED 루프 W.5

진행 상태 (S351): W.1 ✅(Collector) · W.2 ✅(채점 에이전트 파일화 .claude/agents/retro/cycle-scorer.md) · W.3 ✅(CAR) · W.4 ✅(채점 에이전트 §2~§5 통합 서사) · W.5 ✅(6/08주차 실증) · W.6 ✅(오케스트레이터 run_retro_week.py 4 phase 강제 + VERIFIED 루프 실증). 본체 전 단계 완료. 잔여 = 트리거 자동연결(/rs_weekend)·EVENT_CALENDAR stale(별건)·목적1(차주계획). 상세 §9.

시작 조건: ✅ PM이 (a) 채점 단위 = 3축(수집/해석/연결) 확정 (b) 산출형태 = 코드(Collector+CAR) + 에이전트(채점) + 리포트 1개 확정.


7. 미결 사항 (PM 결정 필요)

  1. 렌즈 8종 전부 vs 핵심 3~4종 먼저 — 8종 다 채우면 무겁다. L_signal·L_discover·L_sector 3종 파일럿 후 확장 권고.
  2. 산출 형태 — 리포트 1개(단순) / 커맨드(/weekly-review) / 에이전트 파이프라인(무겁고 깊음). PM이 "먼저 설계안만" 했으므로 구현형태는 W단계 진입 시 재확인.
  3. 교정 처방 적용 범위 — A(학습주입)는 자동적용 허용 vs 전부 PROPOSED 후 수동. C(위원회신설)는 무조건 PM 승인 권고 (시스템 구조 변경이므로).
  4. 위원회 폭주 방지 — form C가 매주 누적되면 에이전트 수가 폭증. lens_registry에 "최대 활성 위원회 N개" 상한 + 2주 연속 재발 0이면 위원회를 L_X 프롬프트로 흡수(졸업)하는 규칙 필요 여부.
  5. 인지결함 카탈로그 거버넌스 — §3.2-④ 카탈로그(6종)는 귀납 확장형. 신규 결함 추가 권한을 복기 에이전트에 줄지 PM 승인제로 할지.
  6. 복기 주기 — 주간 고정 vs 큰 오판(주중 REVERSE 2건+) 시 즉시.

참조

  • docs/topics/topic_report_meta_analysis.md (Event Study/Factor/Regime 방법론 — 미실행분)
  • docs/topics/topic_weekly_market_digest_routine.md (시차규칙 + 입력수집 — 토대)
  • .claude/agents/discover/system-self-check.md (4 verdict + 8 root_cause 매트릭스 원형)
  • docs/daily_reports/20260612_post_market.md UNIT3 (signal-scorecard 실예)
  • docs/morning_open/20260612_morning_open.md §4 (EVENING 전제검증 실예)

8. ★ 복기 실증 기록 (S350 — 복기를 실제로 돌려서 구조 결함 발견·교정)

설계만 하지 않고 6/08~6/12 한 주 + 4/29~6/13 26일을 실제로 복기했다. 복기 시스템의 가치(AI 가설 반증 + 구조 결함 도달)가 실증됐고, morning 에이전트 구조 결함 3건을 실제 수정했다.

8.1 복기로 도달한 근원 진단

한 주 9건 REVERSE를 추적 → 26일 측정 → 결정변수 집계로 내려간 결과:

  • 표면 현상: 결론이 매번 매크로(금리·환율·VIX·유가)로 닫힘. 26일 중 calm 16일에서 macro 11일(69%). 결론 라벨 다수가 under macro_constraint 접미사.
  • 내 가설 반증 (★복기의 핵심 가치): "변동성일에 매크로로 붕괴"라는 5일 직관 가설이 26일 데이터에서 반대로 나옴(calm에 macro 쏠림, stress에 분산). AI(클로드)의 그럴듯한 해석이 데이터에 깨지는 것을 복기가 잡아냄 — PM이 처음 말한 "AI 해석에 단순 의존 X"의 실증.
  • 근원 (PM이 6단계 질문으로 도달): 매크로 분석이 틀린 게 아니라, 관찰 서브에이전트가 자기 렌즈를 넘어 시장 전체 결론을 닫는 프롬프트 구조. sector-transfer가 섹터만 봐야 하는데 매크로(global 결과)를 주입받고 "자금 방향(risk_on/off) + under macro_constraint"를 출력하라 강제당함. 4개 에이전트가 다 매크로로 시장 결론을 내려 렌즈 분리가 무력화. 6/09 selective_rebound under macro_constraint가 그 산물(실제 +8.18% 광범위 반등).

8.2 실제 수정 (S350 적용 — PM 원칙 "필요 데이터만 + 자기 렌즈 해석까지만")

파일 수정
.claude/agents/morning/sector-transfer.md 단일 질문화("미국 섹터 자금 이동만"). 자금방향 enum·한국 테마 매핑·전이 제거
.claude/agents/morning/global-scanner.md 단일 질문화("글로벌 매크로 변화만"). "한국 오프닝 영향(금리→고PER)" 제거
.claude/agents/morning/signal-synthesizer.md 종합자 책임 명시 — 세 렌즈의 순수 관찰을 받아 시장상황·섹터·테마를 직접 종합. 단일 축 복속 금지
scripts/morning/step_agents.py sector 프롬프트의 global 결과 주입 제거 + 두 프롬프트 단일 질문화

⚠️ 미검증: 프롬프트 수정이라 효과는 다음 morning_open 라이브 실행에서 확인됨. 토요일 작성이라 실증 안 됨.

8.3 재료→종목 연결의 빠진 고리 (PM 지시 — 신규 에이전트 필요)

복기 중 PM이 "재료→종목은 실제 자금 들어온 종목과 연결돼야 한다"를 제기 → 데이터 확인 결과:

  • data/flow_series/(종목별 수급 시계열)·market_top·market_investor_flow 존재.
  • discover는 이미 이걸 씀(build_d7_input.py 종목별 거래대금 유입가속). 재료→자금종목 연결 능력은 discover에 있음.
  • 전날 discover 선정결과 data/discover/history/{날짜}_D7.json 존재.
  • 그러나 morning이 discover를 전혀 안 읽음 (단절). morning material-grader의 종목 매핑은 정적 교과서 매핑(TRANSFER_MAP)에 그침.

PM 설계 경계 (확정): - morning_open = 재료 + 테마까지만. 정확한 종목 추천은 morning 몫 아님. - 정확한 종목 = discover 몫 (flow_series·market_top으로 실제 자금 종목 판정). - 연결 = 신규 서브에이전트가 ① morning 테마 선정 ② discover 종목 후보를 받아서 처리 (PM 지시 2026-06-13). 전날 discover 작동 종목 정보 활용.

다음 작업(미착수): 「테마-종목 연결 에이전트」 설계. 입력 = morning 테마(재료 닿는 곳) + discover 종목 후보(실제 자금 들어온 곳). 출력 = "이 테마에 닿으면서 자금이 실제로 들어오는 종목". morning↔discover 단절을 잇는 전용 렌즈. material-grader는 테마까지만 유지(경계 명확화는 sector/global과 동일 스타일로 추후).

8.4 이 세션이 복기 시스템 설계에 주는 함의

  • 복기는 "고칠 룰을 주는 것"이 아니라 "AI 가설을 데이터로 반증하고 구조 결함까지 도달하는 것"이 본질임이 실증됐다(§8.1).
  • 복기 시스템은 매일 "각 관찰자가 자기 렌즈를 지켰나, 시장 전체 결론으로 월권했나"를 점검해야 한다 — 이번에 손으로 찾은 결함을 자동 포착할 측정 항목.
  • 교정은 신중해야 한다: 26일 표본으로도 "매크로 빼기"는 위험(매크로축 100%·83% 적중일 존재). 단일 패치로 정확도/편향은 조정 안 됨. §4 "관찰→가설→누적후검증" 원칙 유효.

9. ★ 본체 1차 구현 기록 (S351 — Collector/CAR 코드화 + 3축 채점 실증)

설계서를 그대로 코드화하지 않고, PM과 토론으로 채점 축을 "에이전트 8종"에서 "사이클 3관문(수집/해석/연결)"으로 재정의한 뒤 구현. 핵심 = "코드는 에이전트가 받아들일 데이터를 체계화하는 데까지, 채점(추론)은 에이전트".

9.1 산출물

종류 경로 역할
코드 W.1 scripts/collect_retro_week.py 하루 사이클(evening→post_market+discover+market_top)을 3축 슬롯으로 정렬한 day_package JSON 생성. 결손은 null+사유 명시(추측 채우기 금지). UNIT 경계 전용 추출(# UNIT N)로 동급 # Phase 헤더 오절단 회피
코드 (discover 이관) scripts/compute_retro_car.py 선정종목 CAR vs KOSPI(FDR), D+5 PENDING, car_ledger.parquet 누적. 주간 리포트 복기에서 분리 → discover 전용 복기 자산으로 보존
데이터 data/retro/day_packages/{YYYYMMDD}.json ×5, week_20260608.json 채점 에이전트 입력 패키지 (시장·섹터·테마). car_*.json·ledger는 discover 복기용
채점 에이전트 W.2 .claude/agents/retro/cycle-scorer.md day_package 받아 3축(A수집/B해석/C신호교차) ADEQUATE/WEAK/FAILED + 케이스. 시장·섹터·테마만(종목 제외). 처방=관점 위원회(현상 고정, 집중점 분기)
오케스트레이터 W.6 scripts/run_retro_week.py 3 phase(Collector→재발추적입력→채점안내) + ENFORCE. CAR/VERIFIED 제거(종목=discover)
리포트 W.5 docs/weekly_research/20260608_retrospective.md 6/08주차 실증(재설계판). 일자별3축(신호교차)+누적패턴+HIT율+관점위원회 처방3건

9.2 day_package 구조 (채점 에이전트 입력 = "데이터 체계화")

what_we_saw:    prev_evening(재료→테마경로) / morning(6시그널+신규재료+전제검증) / discover(선정종목+근거)
what_happened:  market_narrative(UNIT1) / signal_scored(HIT/MISS/REVERSE+hit_rate_pct+놓친시그널) / theme_actual(UNIT4) / market_top
scoring_aids:   A_collection_sources(ISSUE_LOG/EVENT_CALENDAR 원문) / B·C_note
- 각 슬롯은 추출 + raw_full 폴백(슬롯 비면 에이전트가 통째 읽음). 5일 슬롯 충전율 검증 통과(signals/materials/premise/scored 전부 OK).

9.3 6/08주차 실증 결과 (날짜×축 매트릭스)

날짜 A.수집 B.해석 C.연결 HIT율
6/08 ADEQUATE(1결손) WEAK WEAK 50.0%
6/09 ADEQUATE WEAK WEAK 60.0%
6/10 ADEQUATE FAILED FAILED 33.3%
6/11 WEAK WEAK WEAK 66.7%
6/12 ADEQUATE ADEQUATE ADEQUATE 83.3%
  • B축 반복결함: REVERSE 10건, formulaic_reasoning 4건 — 직전일 흐름 단방향 외삽(6/9 +8.18%를 6/10에 관성 적용). 누적 프레임을 인용만 하고 해석 가중치로 못 이음.
  • C축 반복결함(5일 중 4일): 美 매크로/섹터→韓 1:1 교과서 도식이 한국 단독 트리거(조특법 6/11·샘 올트먼 6/12·OCI)에 반복 뒤집힘.
  • A축 인프라 결손: 채점 보조 EVENT_CALENDAR/ISSUE_LOG가 ~5/3 stale → 6월 국내 catalyst 부재. "수집 누락" vs "자료 미갱신" 구분 불가.
  • CAR: 선정 4종 전부 D+1 CAR 음수(SK네트웍스 -7.33/삼성전기 -3.86/후성 -3.32/심텍 -7.03), D+5+ PENDING.
  • 데이터셋 특성 주의: 009150(삼성전기) 종가 197만원대 비정상 — 가격 스케일 이상, 해석 보류 명시.

9.4 구현이 검증한 것

  • PM "데이터 체계화→해석" 원칙 실증: 에이전트가 추측 없이 케이스 역추적했고 결손·한계까지 정직히 명시 = day_package 체계화가 추론을 가능케 함.
  • 점수화 폐기 정당성: 3축 질적 판정이 점수보다 행동가능. 5번 향상주제가 "검증 임계(3주+ 반복 시 처방)"로 과적합 차단.
  • 복기가 손기록 오류를 코드로 교정: SAMPLE §96 "후성 6/11 +20.82%"는 실측 결과 6/11 -2.89%·6/12 +20.5%(날짜 오기). CAR 코드가 정확.

9.5 W.6 완료 + 재설계 (S351 — PM 정정 반영)

최초 구현 후 PM 정정으로 채점 축·처방·레벨을 재설계했다.

  • 채점 에이전트 ✅ 재설계: .claude/agents/retro/cycle-scorer.md v2026-06-14 —
  • C축을 "테마 연결 적절성"에서 "신호 교차 해석 적절성"으로 재정의(금리↑+SOX↑+VIX↓ 동시 신호 교차 vs 단일 도식 변환).
  • 복기 레벨을 시장·섹터·테마로 한정, 종목/CAR 제거(경계 명시).
  • 처방을 "calibration_action(단편 룰)"에서 관점 위원회 구조(현상 고정, 집중점만 2~3 분기 + 역할분리 제약)로. ★관점 분기≠조건 분기(입력 신호값 안 바꿈).
  • 오케스트레이터 ✅ 재구성: run_retro_week.py — CAR/VERIFIED phase 제거(종목=discover 몫). 3 phase(P1 Collector / P2 직전주 리포트 재발추적 입력 / P3 채점안내) + ENFORCE.
  • 종목/CAR 자산 보존: compute_retro_car.py + car_ledger.parquetdiscover 전용 복기(retro/discover-scorer, 미구현)가 사용하도록 보존(주간 리포트 복기에서만 분리).
  • 재설계 검증 ✅: 6/08주차 재채점 결과 PM 예시(6/9 금리↑·SOX↑·VIX↓)가 시스템에 의해 정확히 재현·채점됨("교차하면 고PER 기회, 변환하면 압축 → 시스템은 압축 변환 → REVERSE"). 처방 3건(금리·SOX·VIX / 美-韓 동조 / 직전일 관성) 전부 관점 위원회(phenomenon 고정 + viewpoints 집중점만 분기 + actual_vs_viewpoints 대조) + 역할분리 제약 + status PROPOSED + 검증임계. 자가검증으로 입력 신호값이 관점마다 안 바뀜 증명(조건 분기 아님). 종목/CAR 일절 미사용 확인.
  • end-to-end 버그 수정: subprocess stdout cp949↔utf-8 충돌 → 3 스크립트 sys.stdout.reconfigure(utf-8) + errors=replace.

9.7 ★ 3주 교차검증 → 처방의 실제 적용 (S351, 복기가 코드 결함을 짚어냄)

PM 지시로 6/08 복기 결과를 전주(6/01)·전전주(5/25)에 교차검증 → 결함이 균일하지 않음을 확인하고, 근원 코드를 수정했다.

3주 C축(신호 교차) 검증 결과:

주차 C축 FAILED/WEAK HIT율 신호교차 실패 패턴
5/25주 (전전주) FAILED 3 / WEAK 1 (4일중) 51.7% YES — 강함 (S2 유가→항공 3일, S4 발전주→원전 4일 연속)
6/01주 (전주) FAILED 0 / WEAK 3 (4일중) 63.5% NO (6/4·6/5 실제 교차 성공)
6/08주 (대상) FAILED 3 / WEAK 1 (5일중) 58.7% YES — 강함

핵심 발견 — 패턴은 반복되나 "전 영역"이 아니라 "해외 자산→한국 섹터 1:1 전이"에 국한. 특히 S2(유가→항공/정유)·S4(미국 발전주→한국 원전)가 주를 가로질러 반복. 6/01주는 카운터(반례). → 1주 표본 즉시 변경 금지 원칙이 정당했음(6/01만 봤으면 결함 못 봄, 6/08·5/25 합산으로 검증 임계 충족).

근원 진단 → 실제 코드 수정 (PM 3원칙): 복기가 지목한 1:1 전이 도식의 코드 위치 = S350 morning 교정이 evening에는 미적용. 18개 리포팅 에이전트 감사 결과 실제 수정 대상 2개(나머지 16개는 결함2 스팟·결함3 단일집중 이미 충족):

파일 결함 수정
evening/sector-flow.md 한국 테마 1:1 매핑표(CEG/VST→원전, XOM→정유 11줄) morning/sector-transfer 패턴으로 단일질문화("미국 섹터 자금 IN/OUT만"), 매핑표·전이표·전이칼럼 제거
evening/macro-interpreter.md 거시→한국 1:1 단정표(10Y↑→고PER매도+은행매수) "동시 매크로 교차 → 집중점별 후보(단정X, 가설) + 검증신호"로 전환

PM 3원칙 종합자 적용 (관점 교차 기술법+성공조건): - morning/signal-synthesizer.md + evening/macro-interpreter(종합교차)에 §관점 교차 기술법 추가: 복수 섹터로 갈 여지가 있는 시그널은 [현상 고정 + 관점A/B(집중점) + 가르는 관찰] 4요소 기술. 성공조건 4개(현상 고정/집중점 분기/단정 회피/검증 가능한 가르는 관찰) 미충족 시 재작성. - 결함2(스팟)·결함3(단일집중)은 18개 전부 이미 변화+누적·다축교차 박혀 양호 → 신규 에이전트 불필요. PM 지시대로 "종합 단계에 관점 교차 기술법+성공조건 명시"로 해결.

⚠️ 미검증: evening 프롬프트 수정이라 효과는 다음 evening 라이브 실행에서 확인. 토요일 작성.

9.6 잔여 (PM 결정)

  1. discover 전용 복기 에이전트retro/discover-scorer (.claude/agents/retro/discover-scorer.md, v2026-06-14) 구현 완료. 종목 방향성·선정·선반영·forward를 확률 인자 7종 조합으로 복기. 주간 리포트 복기(cycle-scorer)와 분리된 별도 트랙.
  2. 트리거 커맨드 연결 (2026-06-20)/rs_weekend 단일 통합 대신 2트랙 별도 커맨드로 결정(컨텍스트 경량·트랙 독립). /rw(.claude/commands/rw.md) = run_retro_week.py → cycle-scorer. /rd(.claude/commands/rd.md) = collect_discover_retro.py → discover-scorer. collect_discover_retro.py--week-monday 자동 스캔(runs/에서 D7_input 존재 선정일 추출) 추가 → /rw와 동일하게 월요일만 입력. 6/15주차로 양 트랙 수집 phase 실구동 검증.
  3. 관점 처방 재발추적 자동화 — 현재 P2가 직전주 리포트를 채점 에이전트에 전달(에이전트가 VERIFIED/FAILED 판정). 코드 레지스터화 여부.
  4. EVENT_CALENDAR stale 인프라 — A축 채점 신뢰도 직결. news-radar 갱신 주기 점검(별건).
  5. 목적 1(차주 투자계획) — 다음 작업(PM 지정).

10. ★ S352 — 리포트 복기 "자금 흐름 렌즈" 전면 재설계 (2026-06-20~21)

PM의 단계적 교정으로 복기의 정체성이 "채점기"에서 "자금 흐름 렌즈 생산기"로 전환됐다. 단일 cycle-scorer를 4개 직렬 서브에이전트로 분해하고, 인용 강제·자기검증 의무를 코드/명세에 박았다.

10.1 PM 교정의 사슬 (왜 이렇게 됐나 — 다음 세션 맥락)

  1. "스팟스팟 채점 말고 변화+누적으로" → 일자별 3축 채점을 폐기, 누적 중심으로.
  2. "코스피 샀다/팔았다가 무슨 의미냐, 자금이 글로벌→한국 어디로 가는지를 봐라" → 한국 수급(도착)만 보던 걸 미장 섹터·매크로(원천)부터 보게.
  3. "전주를 보고 자금 경향을 읽고 이번 주로 검증" → 복기 = 렌즈(경향성, 확신 아님) 생산.
  4. "일일 시황은 일일만, 경향성 누적은 주간 복기가" → 역할 분담 확정.
  5. "한 주 중심 재료→자금이동→차주방향 순서, 6종 데이터" → 3단계 구조 + 데이터 6종 확정.
  6. "핵심 재료는 시장 반응(자금)이 정한다" → 순서를 자금→재료로 뒤집음(역추적+인과).
  7. "3단계면 에이전트도 그만큼 쪼개라" → 단일→4개 직렬.
  8. "안 읽고 넘기기 강제 차단" → 인용 토큰(코드 검증).
  9. "해석 설정했으면 검증 행동까지, 어떤 도구로 어떻게" → 자기검증 의무 + 도구·데이터 명시.

10.2 최종 구조 (4개 직렬 파이프라인 + 토큰 강제)

P0 Collector (collect_retro_week.py) → day_packages 5일 (6종 데이터 + _verify.token)
  P1 retro/flow-tracker     (1/4) 자금 이동 — 글로벌→한국, 변화+누적 (★본체·출발점)
  P2 retro/material-cause   (2/4) 핵심 재료 역추적 + "왜 반응했나" 인과 (자금이 정한 핵심재료)
  P3 retro/forward-lens     (3/4) 차주 방향 렌즈 + 검증/반증 신호(수치 임계)
  P4 retro/system-diagnoser (4/4) 우리가 읽었나 진단 + 관점위원회 처방 + 최종 조립
  각 P1~P4 후: run_retro_week.py가 verify_token 5일 인용 grep 검증 → 미인용=재호출 (P3는 금요만)
- 산출 경로: data/retro/digest/{월}_{flow,material,forward}.mddocs/weekly_research/{월}_retrospective.md - 리포트 §순서: 자금(§2)→재료(§3)→진단(§4)→차주(§5)→처방(§6). 핵심재료는 시장 반응이 정하므로 자금 먼저.

10.3 강제 메커니즘 2층

  • 인용 토큰 (코드): Collector가 day_package마다 _verify.token(RW-YYYYMMDD-해시) + must_cite(미장 최강/최약 섹터·10Y·한국 거래대금 1위 — 읽어야만 아는 사실) 생성. 에이전트가 5일 토큰을 본문 인용해야 통과. → "안 읽고 넘기기" 차단. (build_verify_token in collect_retro_week.py)
  • 자기검증 의무 (명세): IN/OUT·전이·인과 해석을 설정하면 같은 산출에서 검증 행동 동봉. 도구·데이터·실행법 명시(§10.4). → "읽은 걸 과장" 차단. (flow-tracker §해석검증의무, material-cause 원칙 2b)

10.4 검증 도구·데이터 (명세에 박힌 것)

검증 대상 도구/데이터 한계
미장 섹터 개별주 routine_data/{ymd}_global_assets.json → us_stocks.{섹터} 멤버 change_pct 그날 1일치(누적 필드 없음), 방향 검증용. big_movers 아님
한국 개별주(top200) market_top/{ymd}.json top_amount/gainers/losers top200 내만
한국 개별주(정확) collect_stock_flow_series.py --codes {코드} --days 7 별도 실행
섹터 옵션 global_flow.derivatives.us_sector_options PCR/OI 2026-06-20 이후만

10.5 부수 인프라 (이번 세션 신설/보강)

  • EVENING 섹터 파생 수집: fetch_derivatives_sentiment.py에 미국 섹터 ETF 옵션 8종(SMH·SOXX·XLF·XLE·XLU·TAN·ITA·XLK) PCR/OI·max_pain·유동성등급 추가. evening/sector-derivatives 분석 에이전트 신설(가격 외 자금 심리 — "반도체 풋=고점헷지" 구분). rs_evening.md 반영.
  • Collector 6종 데이터: day_package에 global_flow(미장 섹터·매크로·자산·파생) 정식 입력 추가. 토요 슬롯(week_close_us=금요 미장) + 6/19 비표준 post_market 추출 폴백.
  • 검증 실증: 6/15주 4단계 end-to-end 구동 + 토큰 인용검증 전체 통과. 리포트 4개 주장(회전형·외인수급·거래대금 단조·HIT율) + 방산 서사(미장 개별 -5~7%·한국 6/16정점→3일소진) 전부 데이터 검증 통과. 자기검증 의무가 "Defense 평균 혼조 vs 개별 OUT" 함정을 실제로 잡음.

10.6 ★ 다음 세션 잔여 (이어서 진행)

  1. 에이전트 레지스트리 등록 + 무우회 재검증 (S353 2026-06-21) — 4개(flow-tracker·material-cause·forward-lens·system-diagnoser)가 세션 시작 에이전트 목록에 정식 등록 확인(frontmatter name: retro/*, version 2026-06-21). cycle-scorer DEPRECATED 정상. run_retro_week.py P0 재구동: 6/15주 5일 적재·결손0·verify_token 5개, 4단계 기존 산출 전부 [CITE OK]. 무우회 검증: 등록된 retro/flow-tracker를 Agent tool로 직접 호출(general-purpose 우회 아님) → 임시본(_flow_reverify.md) 신규 생성 → 5일 토큰 전부 인용 통과 + baseline 핵심결론 독립 재현(Defense 평균혼조→개별주 OUT 포착·Renewable 평균+4.5는 폭등주 함정·반도체 3축 IN→한국 본진 도착). baseline 미변경, 임시본 검증 후 삭제. 추가 발견·수정: .claude/commands/rw.md가 구설계(단일 cycle-scorer 1회 호출)로 stale → 4단계 파이프라인 표+토큰강제+경계로 갱신(오케스트레이터 P0~P4와 정합). ✅ 전체 4단계 무우회 재실행 + baseline 비교 (S353 추가): P1~P4 전부 등록 에이전트로 직렬 실호출(P1 flow→P2 material→P3 forward→P4 retro, 각 앞단계 산출이 다음 입력) → 임시본(*_reverify.md) 4종 생성 → 토큰게이트 전부 통과(P1·P2·P4 5/5, P3 last 1/1). baseline 비교 결과 = 핵심 결론 수렴 + 재검증본이 결함 framing에서 더 선명: ①자금이동(미장 반도체 3축 IN→한국 도착, Defense·Fossil OUT) 동일 ②직전주 재발추적 FAILED·검증카운트 2/3 동일(transfer_failure 2주 연속, 다음 주 1회 더면 위원회 신설 임계) ③처방 status PROPOSED·관점위원회 구조 동일. 차이: baseline은 결함을 "누적 위치(5d LEADING) 전이 실패"로, 재검증본은 한 단계 더 들어가 "도착 폭(전체 확산 vs 대장 단일 응축) 1:1 과대전이"로 응축 — 같은 결함의 더 정확한 지목(에이전트 분해가 단일 cycle-scorer보다 결함을 더 깊이 판 증거). baseline 4종 전부 무손상, 임시본 검증 후 삭제. 결론: 4단계 파이프라인이 무우회로 안정 재현, 시스템 검증 완료.
  2. forward-lens·system-diagnoser 자기검증 도구 명시 — flow-tracker·material-cause엔 도구·데이터 검증법 박았으나, 나머지 2개(차주 검증신호·시스템 진단)에도 동일 수준으로 추가 검토.
  3. 섹터 개별 분산을 Collector에 추가 — us_sector_avg_chg(평균)만 day_package에 있어 개별주 분산을 가림(방산 함정의 원인). Collector가 섹터별 대표주 OUT 여부/분산도 담으면 자기검증이 더 견고(현재는 에이전트가 routine_data 원본 재참조).
  4. cycle-scorer.md — DEPRECATED 표시 완료(이력 보존). 삭제 여부 PM 결정.
  5. discover 복기(/rd) 동일 재설계 여부 — 리포트 복기만 4단계+토큰 강제로 갔고, discover-scorer는 단일 그대로. 같은 구조 적용할지 PM 결정.
  6. EVENT_CALENDAR·ISSUE_LOG stale(~5/3) — 재료 검증의 1차 소스인데 stale. material-cause는 POLICY_TRACKER+evening/morning 본문으로 우회 중. news-radar 갱신 별건.

10.7 산출물 경로 (다음 세션 참조)

  • 커맨드: .claude/commands/{rw,rd}.md
  • 에이전트: .claude/agents/retro/{flow-tracker,material-cause,forward-lens,system-diagnoser}.md (+ cycle-scorer DEPRECATED, discover-scorer)
  • 코드: scripts/{run_retro_week.py, collect_retro_week.py, collect_discover_retro.py, fetch_derivatives_sentiment.py}
  • EVENING 파생 에이전트: .claude/agents/evening/sector-derivatives.md
  • 실증 산출: docs/weekly_research/20260615_retrospective.md + data/retro/digest/20260615_{flow,material,forward}.md