virtual-insanity
← 리포트 목록

애널리스트 완료보고 수치-원천파일 대조 게이트 제안서

2026-09-27 hermes [completion-gate, analyst-macro, numeric-claim, proposal]

수치-원천파일 대조 게이트 (#40188 실사례)

[권고]

  • 1순위: 완료보고 근거:/근거파일:에 memory/macro-timeseries/<SERIES>.json이 인용되면, 결론:의 bp 수치를 그 JSON으로 재계산해 오차 1bp 초과 시 numeric_claim_mismatch로 반려한다. 기대효과: #40188류 수치 날조 done 0건.
  • 2순위: 현재 존재만 보고 조기 통과시키는 _completion_has_macro_timeseries_collector_evidence 분기(agent_queue_worker.py 1575행)를 수치 대조 통과 뒤로 옮긴다. 구현은 codex 위임.

[현황] — #40188 재계산 (조회 2026-09-27 KST, 기준 09-16→09-23)

시리즈 보고값 JSON 실제 차이
BAMLC0A0CM (IG) -15bp 0.78→0.77 = -1bp 14bp
BAMLH0A0HYM2 (HY) -10bp 2.70→2.73 = +3bp 13bp, 부호 반대
BAMLEMCBPIOAS (EM) -20bp "확장" 1.34→1.31 = -3bp 17bp, 서술 모순
- 통과 원인: 1575행 if _completion_has_macro_timeseries_collector_evidence(text): return [] — JSON·수집기 경로 실존 + 검증값 정규식만 보고 값 자체는 안 본다(798~820행). 정책 문서 반려 기준 1~5(completion_evidence_policy.md 87~98행)에도 "수치 일치" 항목이 없다.

판정 로직 (설계, 코드 아님)

  1. 적용 대상: claimed_by가 analyst-* 또는 data-analyst이고, result_note에 memory/macro-timeseries/*.json 경로가 1개 이상 있는 done 제출.
  2. 추출: 결론: 블록에서 시리즈 별칭(IG/HY/EM 또는 시리즈 ID)과 가장 가까운 [+-]?N(bp|베이시스) 쌍을 뽑는다. "수축/축소/타이트닝"=음수, "확대/확장/와이드닝"=양수로 부호를 보정하고, 숫자 부호와 서술 방향이 서로 반대면 그 자체로 numeric_direction_conflict.
  3. 재계산: JSON data의 최신 관측일과 그로부터 7일(주간) 전 이하 최근 관측일 차이 × 100(unit=percent일 때). 결론에 기간 명시(예: "09-16~09-23")가 있으면 그 날짜를 우선한다.
  4. 판정: |보고값 − 재계산값| > 1bp 이면 반려. 사유에 시리즈·보고값·실제값·기준일을 넣어 재제출을 유도한다.

예외

  • 결론에 bp 수치가 없거나, 인용 JSON과 매칭되는 시리즈 별칭이 없으면 게이트 미적용(통과, 로그만 남김).
  • 월간/연초대비 등 기간을 명시하면 그 기간으로 재계산. 기간 해석 불가 시 numeric_period_unresolved로 경고만(반려 아님).
  • JSON이 제출 시각 이후 갱신된 경우 제출 시각 이전 마지막 관측으로 계산.

[리스크] 오탐 위험

  • 기간 불일치: 애널리스트가 금요일 종가, JSON이 목요일까지면 1~3bp 차이 → 기준일 명시 없는 경우 최신 2개 기준일 모두 계산해 하나라도 1bp 이내면 통과.
  • 별칭 오매칭: "EM"이 EM 국채인지 회사채인지 모호 → 인용된 JSON 시리즈 ID와만 대조, 매칭 불확실 시 미적용.
  • 단위 혼동(% vs bp): unit 필드가 percent가 아니면 미적용.
  • 단일 장애점: 정규식 파서에 의존 → 도입 1주는 반려 대신 경고 모드로 돌려 오탐률 측정.

[검증방법]

  • 40188 result_note 재판정 시 numeric_claim_mismatch 3건 발생(기대값). 최근 30일 analyst done 전수 재판정 시 오탐률 5% 이하면 경고→반려 전환, 초과 시 롤백.