virtual-insanity
← 리포트 목록

매크로 analyst 전면 재설계 구현 보고

2026-04-16 macro [macro, analyst, telegram, knowledge-context, hermes]

결론

매크로 analyst 발송 경로를 기존 공통 sender에서 매크로 전용 redesigned sender로 분리해 적용했다. 실제 market 토픽으로 재전송했고, 최신 도달 증거는 message_id 2395다.

해리 pain point 5개 반영 상태:

요구 적용 결과
정책 반복 → 동적 생략 최근 정책 이벤트/발언이 없으면 정책 변화 섹션 자체를 생략. 이번 본문에서도 생략됨.
FX 해석 추가 DXY, EUR/USD, USD/JPY, USD/KRW, USD/CNY, USD/TWD 누락 표시 추가.
재정/무역/원자재 확장 TGA/RRP/EPU, 호르무즈/LNG/공급망, 에너지·금속·농산물 섹션 추가.
종합 판단 Top 3~5 종합 판단 4개 항목으로 방향·확신·근거를 한 줄씩 제시.
텔레그램/뉴스레터/블로그 해석 인용 해석 근거에 텔레그램, 뉴스레터, 블로그, 매크로채권 소스 4개 노출.

가드 결과: 본문 1911자 / 금지어 0건 / 실제 발송 OK.

변경 파일

파일 변경
/Users/ron/.hermes/workspace/scripts/macro_context_filter.py 신규. macro-timeseries와 knowledge 소스에서 최근 지표·해석글 추출.
/Users/ron/.hermes/workspace/scripts/macro_redesign_report.py 신규. 2500자 제한, 금지어 검사, 동적 정책 생략, FX/재정/무역/원자재/Top 판단/해석 근거 생성 및 Telegram 발송.
/Users/ron/.hermes/workspace/scripts/analyst_common_wrapper.sh macro만 전용 sender로 라우팅. 나머지 analyst는 기존 sender 유지.
/Users/ron/.hermes/workspace/scripts/analyst_common_wrapper.sh.bak-macro-redesign-20260416T092905 wrapper 백업.

wrapper diff 핵심:

- python3 "$SCRIPTS_DIR/analyst_common_sender.py" "$ANALYST" "$LATEST" "$TSV" "$WRAP_LOG"
+ if [ "$ANALYST" = "macro" ]; then
+   python3 "$SCRIPTS_DIR/macro_redesign_report.py" "$LATEST" "$TSV" "$WRAP_LOG"
+ else
+   python3 "$SCRIPTS_DIR/analyst_common_sender.py" "$ANALYST" "$LATEST" "$TSV" "$WRAP_LOG"
+ fi

Phase 1~6 구현 결과

Phase 1 — 기존 pain point 확인

이전 개선본은 아래처럼 수치 중심이었다.

<b>🌍 매크로 리포트</b>
날짜: 2026-04-16
판정: Recovery · 신뢰도 60%
데이터 신선도: 2026-04-14 close
WTI: -7.3%, Brent -4.2%, TTF -8.4%, Heat Oil -9.3%
VIX: 18.5, 전면 콘탱고
US10Y: 4.26%, 실질금리 1.95%, BEI 2.38%
시나리오: base 60 / bull 20 / bear 20

문제: FX 해석이 없고, 재정/무역/원자재가 얇고, 정책 문구가 반복될 수 있으며, 해석 출처가 본문에 드러나지 않았다.

Phase 2 — context filter 추가

macro_context_filter.py가 아래 소스를 읽는다.

  • Telegram: ~/knowledge-agent/100 수신함/118 텔레그램
  • 매크로채권: ~/knowledge-agent/100 수신함/116 croned_data/매크로채권
  • Newsletter: ~/knowledge-agent/100 수신함/121 뉴스레터
  • Blog/ranto28/호르무즈: ~/knowledge-agent/**/*ranto28*.md, *호르무즈*.md
  • Credit mail: ~/knowledge-agent/100-inbox/119-크레딧메일
  • Timeseries: ~/.hermes/workspace/memory/macro-timeseries/*.json

확인된 최근 지표 예시:

RRPONTSYD 2026-04-15 value 0.223 change -0.083
T10YIE 2026-04-15 value 2.39 change +0.02
T5YIE 2026-04-15 value 2.61 change +0.02
T5YIFR 2026-04-15 value 2.17 change +0.02
T10Y2Y 2026-04-15 value 0.53 change +0.03

Phase 3 — 매크로 전용 report builder 추가

macro_redesign_report.py 구성:

  • 헤드라인
  • 밤사이 지표
  • FX
  • 재정
  • 무역/공급망
  • 원자재
  • 정책 변화(동적 생략)
  • 종합 판단 Top 4
  • 해석 근거
  • as-of

가드:

  • MAX_CHARS = 2500
  • 금지어 검사 후 하나라도 나오면 발송 실패 처리
  • 성공 시 latest.jsonmacro_redesign 메타 기록
  • TSV에 message_id/chat_id/topic_id/status 기록

Phase 4 — wrapper 연결

analyst_common_wrapper.sh에서 macro만 전용 sender로 분기했다. fundamental/technical/pm 경로는 바꾸지 않았다.

Phase 5 — no-send 검증 + 실제 전송

검증 명령:

python3 -m py_compile /Users/ron/.hermes/workspace/scripts/macro_context_filter.py
python3 -m py_compile /Users/ron/.hermes/workspace/scripts/macro_redesign_report.py
bash -n /Users/ron/.hermes/workspace/scripts/analyst_common_wrapper.sh
ANALYST_COMMON_SKIP_RUN=1 ANALYST_COMMON_NO_SEND=1 ANALYST_COMMON_PRINT_BODY=1 \
  /bin/bash /Users/ron/.hermes/workspace/scripts/analyst_common_wrapper.sh macro
ANALYST_COMMON_SKIP_RUN=1 \
  /bin/bash /Users/ron/.hermes/workspace/scripts/analyst_common_wrapper.sh macro

실제 전송 결과:

{"analyst":"macro","ok":true,"message_id":2395,"status":"success","sector":"market","chat_id":-1003522748967,"topic_id":5,"error":null,"body_len":1911,"forbidden_hits":[],"no_send":false}

TSV 증거:

2026-04-16T09:31:20 OK  2395    market  -1003522748967  5   none

latest.json 기록:

{
  "at": "2026-04-16T09:31:20",
  "body_len": 1911,
  "message_id": 2395,
  "status": "success",
  "sector": "market",
  "overnight_indicators_count": 5,
  "interpretation_traces_count": 4,
  "forbidden_hits": []
}

Phase 6 — 최종 본문 샘플

<b>🌍 매크로 브리핑</b>
<b>📌 헤드라인</b> WTI 91.87(-7.3%) 급락. 호르무즈 기뢰 제거와 우회로 복구가 에너지 프리미엄을 낮췄다.
전일 대비: Recovery 유지, Risk-On은 접근 단계. 물가 전이와 공급망 후행 충격이 남았다.
<b>📊 밤사이 지표</b>
• RRP 잔액 0.22, 전회대비 -0.08 (2026-04-15)
• 10년 기대물가 2.39, 전회대비 0.02 (2026-04-15)
• 5년 기대물가 2.61, 전회대비 0.02 (2026-04-15)
• 5년후5년 기대물가 2.17, 전회대비 0.02 (2026-04-15)
<b>💱 FX</b>
• DXY 98.14(-0.2%) — Fed 인하 기대(FF선물 61-69bp) + 유럽·영국 통화 강세
• EUR/USD 1.18(+1.0%) — ECB-Fed 정책 격차 축소 기대 + 유로존 상대적 안정
• USD/JPY 158.8(-0.5%) — BOJ 정상화 완만 + 캐리 트레이드 확대. 160 개입 경계선 접근
• USD/KRW 1,472(-0.7%) — 달러 약세 주도(-0.7%). 다만 전년비 +2.9%, 3고(고금리·고유가·고환율) 구조 잔존
• USD/CNY 6.82(-0.2%) — 달러 약세 주도. 중국이 이란 원유 호르무즈 통과 유지(Reuters 4/14) — 에너지 조달 안정이 위안 받침
• USD/TWD: 수집값 없음 — 다음 collector 보강 대상
<b>🏛️ 재정</b>
• 미국 TGA 748,376(2026-04-08), RRP 0.22(2026-04-15) — 재무부 현금과 단기 유동성 경로가 위험자산 수급에 직접 연결
• 정책 불확실성 지수 430.0 — 관세·에너지 대응 재정이 커지면 장기금리 부담으로 이어짐
<b>🚢 무역/공급망</b>
• 호르무즈 부분봉쇄 지속. 미 해군 기뢰 제거 개시(4/11). OPEC+ 호르무즈 개방 시 증산 합의(4/5). 사우디 East-West 파이프라인 복구(4/12). IPSA 파이프라인 가동 중. 중국이 이란 원유 호르무즈 통과 유지, 인도 러시아 원유 매입…
• 카타르 Ras Laffan LNG 피격(3/18), Train 4+6 12.8Mtpa 소실, 복구 3-5년. Force majeure 선언. 호주 사이클론 영향으로 LNG 일시 차질. 글로벌 LNG 공급 경로 재편 진행 중.
<b>🛢️ 원자재</b>
• 에너지: WTI 91.87(-7.3%), Brent 95.17(-4.2%), TTF 42.53(-8.4%) — 기뢰 제거와 우회로 복구가 가격을 눌렀다
• 금속/귀금속: 금 4,858(+2.4%), 은 79.28(+5.0%), 구리 6.08(+1.7%) — 달러 약세와 공급 불안이 함께 반영
• 농산물: 밀 602.2(+3.4%), 대두 1,156(-0.5%), 옥수수 443.0(+0.6%) — 식품 물가 전이 확인 필요
• 호르무즈: 부분봉쇄; 한국 비축유 한국 석유공사 비축기지 운영 중에 있으며 총 146백만 배럴 규모의 비축시설과 1억 배럴 (공동비…
<b>🎯 종합 판단</b>
1) 유가 충격 완화: 하락·확신 중 — 기뢰 제거/우회로 복구가 에너지 프리미엄을 낮춤
2) 물가 경로는 아직 끈적함: 중립·확신 중 — 유가 하락에도 운송·식품 전이가 남음
3) 원화 숨통: 상승·확신 중 — 달러 약세가 돕지만 고유가와 국내 금리 제약이 남음
4) 공급망 리스크: 중립·확신 중 — LNG·나프타 차질은 한국 석화/전력비용에 후행 반영
<b>🧾 해석 근거</b>
• 텔레그램: 유가가 인플레이션에 미치는 영향 — CPI 6%의 함정
• 뉴스레터: BondEconomics Ceasefire
• 블로그: 호르무즈해협 기뢰 매설 시 영향
• 매크로채권: 키움 김승혁 매크로: 채권 Note_이란 사태 3주차 점검
<i>as-of 2026-04-14 · redesign v1 · 2500자 제한</i>

금지어/표현 검사

독립 검사:

chars=1912
hits=[]
sections=['💱 FX','🏛️ 재정','🚢 무역/공급망','🛢️ 원자재','🎯 종합 판단','🧾 해석 근거']

매크로/테크니컬 경계 준수:

  • 본문에 z-score, MA, 이동평균, 표준편차, RSI, 볼린저, 브레이크아웃, 모멘텀 없음.
  • 기술적 신호 대신 CPI/PCE/GDP/고용/금리/FX/중앙은행/유가/원자재/재정/공급망 관점으로 구성.

잔존 리스크

  1. USD/TWD는 현재 수집값이 없어 누락 표시만 했다. 다음 collector 보강 대상.
  2. 재정은 TGA/RRP/EPU 중심이다. 재정적자, 국채 발행, 세수 캘린더 전용 collector가 붙으면 품질이 더 좋아진다.
  3. 정책 동적 생략은 local knowledge 수집물의 최신성에 의존한다. 정책 이벤트가 수집되지 않으면 생략될 수 있다.
  4. 원자재/공급망 세부 문구 일부는 기존 context 요약 길이 제한 때문에 말줄임표가 들어간다. 다음 라운드에서 소스별 1줄 요약 품질을 올리면 더 매끈해진다.

자체평가

  • 정확성: 4.8/5 — 5개 pain point 모두 반영했고 실제 Telegram 도달까지 확인.
  • 완성도: 4.6/5 — wrapper와 전용 sender는 완결. USD/TWD collector는 후속 과제.
  • 검증: 4.8/5 — py_compile, bash -n, no-send, 실제 send, TSV/latest 기록 확인.
  • 최소 변경: 4.7/5 — macro 경로만 분기했고 다른 analyst 경로는 유지.

종합: 4.7/5.