Week 7 · 🟢 과제 5

멀티 에이전트

Orchestrator + Price/News/Chart 3 Sub-Agents · Message Bus

🏠 강의노트 홈 📦 이 페이지 GitHub ↗ 📂 W7 폴더 ↗
목표

이번 주 목표 — 의견 분리

W4의 3D Verdict는 한 LLM이 3가지 데이터를 동시에 받아 판단했습니다. W7에서는 각 차원을 별도의 전문 에이전트에게 맡기고, Orchestrator가 종합합니다.

Architecture

아키텍처

          ┌──────────────────────┐
Question  │   Orchestrator       │  최종 의견
   ──────▶│   (Claude Sonnet)    │ ─────────▶
          └──┬──────┬──────┬─────┘
             │      │      │      messages on bus
        ┌────▼─┐  ┌─▼──┐  ┌▼────┐
        │PRICE │  │NEWS│  │CHART│  3 Sub-Agents
        │Agent │  │Agent│  │Agent│  (Claude Haiku)
        └──┬───┘  └─┬──┘  └─┬───┘
           ▼        ▼       ▼
       W2 지표   W3 뉴스  W4 차트
       (Sheets) (Sheets) (Vision)

각 Sub-Agent는 자기 분야 데이터로만 (-1 ~ +1) 점수와 1문장 근거 반환. Orchestrator는 3개 의견을 받아 일관성 검증 후 최종 verdict.

Workflow

n8n 구현

🔴 Trigger Webhook — { "ticker": "AAPL", "question": "지금 매수해도 되나?" }
🔵 Split Code — 같은 입력을 3 brunch로 fanout
🟣 Price Agent W2 지표 fetch + Haiku 분석 → priceScore + reason
🟣 News Agent W3 뉴스 fetch + Haiku 분석 → newsScore + reason
🟣 Chart Agent W4 Vision 호출 → chartScore + reason
⚫ Merge 3개 결과 wait + 합치기 (Message Bus 역할)
🟣 Orchestrator Claude Sonnet — 3 의견 종합 + 일관성 검증 + 최종 verdict
🟢 Reply Webhook 응답 + Sheets 의견이력 저장
Sub-Agent

Sub-Agent 프롬프트 (예: Price Agent)

너는 가격·기술적 지표 전문 분석가다.
다른 관점(뉴스, 차트)은 무시하고 오직 숫자 데이터만 본다.

종목: {{ticker}}
질문: {{question}}

데이터:
- 현재가: {{price}}
- MA20/60/120: {{ma20}} / {{ma60}} / {{ma120}}
- RSI(14): {{rsi}}
- MACD/Signal/Hist: {{macd}} / {{sig}} / {{hist}}
- 볼린저: upper {{up}} / lower {{lo}}
- 1주 수익률: {{pct1w}}%

응답 (JSON only):
{
  "score": -1.0 ~ 1.0,           // 가격 관점 매수/매도 강도
  "key_signals": ["MA20 돌파", "RSI 65 (중립)"],
  "reason": "한 문장 근거",
  "confidence": 0.0 ~ 1.0
}

News Agent / Chart Agent도 동일 패턴 — 자기 분야 데이터만 노출, 다른 차원은 모름.

Orchestrator

Orchestrator 프롬프트

너는 투자 의견 종합자다. 3명의 전문가 의견을 받아 최종 판단을 내린다.

종목: {{ticker}}
원 질문: {{question}}

[가격 분석가]
score: {{p.score}} | key: {{p.signals}} | 근거: {{p.reason}}

[뉴스 분석가]
score: {{n.score}} | key: {{n.signals}} | 근거: {{n.reason}}

[차트 분석가]
score: {{c.score}} | key: {{c.signals}} | 근거: {{c.reason}}

판단 규칙:
1. 3개 모두 같은 방향(+/-/0)이면 strong, 2개 일치는 medium, 분열이면 weak
2. 한 에이전트의 confidence가 0.4 미만이면 그 의견 가중치 ½
3. 답변에 각 분석가 의견을 명시적으로 인용

응답 (JSON):
{
  "verdict": "BUY_STRONG|BUY_WEAK|HOLD|SELL_WEAK|SELL_STRONG",
  "agreement": "all_agree|2of3|disagree",
  "summary": "3명 의견을 종합한 2~3문장 답변",
  "warning": "한 에이전트라도 위험 신호를 냈다면 명시"
}
Missions

🟢 과제 5개

1
3 Sub-Agent 단독 검증
각 에이전트를 별도로 호출해 자기 분야 데이터만 받고 점수 출력하는지 확인
2
Orchestrator 통합
3 결과 wait → Sonnet에 전달 → 최종 verdict JSON 검증
3
의견 분열 케이스 발굴
관심종목 20개 돌려 3 에이전트 의견이 서로 다른 종목 5개 찾기 (분석 가치 높음)
4
의견이력 저장
Sheets에 ticker · timestamp · 3 score · verdict · summary 저장 → 시간 추이 확인
5
강한 신호만 알림
verdict가 BUY_STRONG/SELL_STRONG + agreement=all_agree인 경우만 본인 Slack push
비용 — Sub-Agent(Haiku) 3회 + Orchestrator(Sonnet) 1회 ≈ $0.005/종목. 20종목 × 매일 = $3/월.
💎 Bonus Session

NotebookLM 8차원 분석 → 종합 투자 보고서 → Gmail+Slack 발송

본편 W7은 Price/News/Chart 3 Sub-Agent였습니다. 보너스에서는 타민더마켓의 NotebookLM 전용 주식 분석 프롬프트를 n8n 워크플로우로 옮겨, 8개 분석 차원의 Sub-Agent를 병렬 실행해 한 종목에 대한 종합 투자 보고서를 자동 생성하고 이메일·슬랙으로 발송합니다.

출처: 타민더마켓 © 2025 — "노트북LM 전용 주식 분석 프롬프트 모음" (유튜브 '타민더마켓'). 원문은 NotebookLM에 PDF/링크를 업로드하고 채팅 프롬프트로 분석하는 수동 흐름입니다. 본 보너스는 동일 프롬프트를 n8n + Claude API + W6 Hybrid RAG로 완전 자동화한 응용입니다.
3-Stage

1. 타민더마켓 3단계 프로세스 → 우리 워크플로우 매핑

단계원본 (NotebookLM 수동)우리 자동화 (n8n)
1️⃣ 소스 찾기ChatGPT/Perplexity로 SEC 10-K, 어닝콜 transcript, 증권사 리포트, 산업 리포트 URL 수집W6 HybridRAG 또는 별도 Drive 폴더에 PDF 적재 → 임베딩
2️⃣ 생각하기NotebookLM 채팅에 8개 분석 프롬프트 던지기본 보너스 워크플로우 — 8 Sub-Agent 병렬 실행
3️⃣ 만들기인포그래픽 / 슬라이드 / 오디오 오버뷰 산출물 생성Orchestrator가 HTML 보고서 1장으로 통합 → Gmail + Slack 발송
8 Sub-Agents

2. 8개 분석 차원 (Sub-Agent)

각 Sub-Agent는 W6 HybridRAG에 자기 분야 프롬프트를 던져 출처 인용 답변을 받습니다. 모두 Claude Haiku로 저비용·병렬 실행.

#Agent입력 소스핵심 산출물
1재무 트렌드10-K/10-Q 3~5년매출·GM·OM·OCF·FCF·FCF마진 트렌드 표 + 변곡점 Top 3 + 원인 태그
2세그먼트10-K Segment사업부별 매출·비중·마진 변화 + 믹스 영향 + 성장엔진 vs 부담
3경제적 해자10-K Business / CompetitionMoat 식별 + Grade(A/B/C/D) + 침식 시그널 체크리스트
4Risk Factors10-K Risk Factors 3년새로 추가/강화/삭제된 리스크 + Top 5 + 잠재 재무영향
5CEO 말바뀜어닝콜 transcript 8~12분기약속 적중률 % + 말바뀜 패턴 + 변명 태그
6약속 이행주주서한 3년전략 약속 추적 + 이행 상태 + 정직성 등급(A/B/C/D)
7반대의견 (Bear)모든 소스투자 반대 논리 12개 + 치명적 Top 3 + 반증할 데이터 질문
8소스 갭업로드 소스 리스트누락 데이터 (필수/권장) + 어디서 얻을지
Workflow

3. n8n 워크플로우 흐름

매일 평일 08:00 — 분석큐에서 다음 ticker 1개 pick → 8 Agent 병렬 → Orchestrator → 보고서 발송
🔴 Trigger Schedule Trigger · Cron 0 8 * * 1-5 (평일 08:00 KST) 또는 Webhook (수동 호출)
🔵 Pick Ticker 분석큐 시트에서 마지막 분석일이 가장 오래된 ticker 1개 pick (라운드로빈 순환)
⚫ Fanout × 8 Code — 같은 ticker로 8개 Sub-Agent 병렬 호출 준비
🟣 Sub-Agent × 8 각 Agent가 W6 HybridRAG webhook 호출 (서로 다른 프롬프트) → 분석 결과 + 인용
⚫ Merge 8 8 결과 wait + 합치기 (Message Bus)
🟣 Orchestrator Claude Sonnet — 8 분석 종합 + HTML 보고서 1장 생성 (인포그래픽 형식)
🟢 Gmail 운용팀 메일링 리스트로 HTML 발송 (제목: [Daily Research] {{ticker}} 종합 분석 — {{날짜}})
🟢 Slack #research-daily 채널 — 핵심 결론 3줄 + Drive 링크 (전체 보고서)
🟢 Sheets 보고서이력 시트에 timestamp / ticker / verdict / Gmail message_id append
Report Template

4. 종합 보고서 구조 (1페이지 인포그래픽)

Orchestrator가 8 Sub-Agent 결과를 받아 다음 8섹션 HTML 보고서를 생성합니다:

  1. Company Snapshot — 한 줄 설명 + 돈 버는 방식 3줄
  2. 핵심 KPI 카드 8개 — 매출, YoY, GM, OM, FCF, FCF마진, 순차입/현금, 자사주
  3. 트렌드 하이라이트 — 좋아진 것 3 / 나빠진 것 3 (Agent 1)
  4. 해자 요약 — Top 2~3 + Moat Grade (Agent 3)
  5. 리스크 Top 5 — 트리거 지표 포함 (Agent 4)
  6. 경영진 신뢰도 — 약속 적중률 + 말바뀜 패턴 (Agent 5+6)
  7. Bear Case — 가장 치명적 반대 논리 Top 3 (Agent 7)
  8. 다음 분기 체크리스트 — 선행지표 8개 + 질문 5개 + 누락 소스 (Agent 8)

각 섹션의 모든 주장에는 [출처: 문서명/페이지] 형식으로 인용. 할루시네이션 차단.

Gmail Body

5. Gmail HTML 본문 예시

제목: [Daily Research] AAPL 종합 분석 — 2026-04-29

<h1>Apple Inc. (AAPL) — 주간 종합 분석</h1>
<p>⏰ 분석일: 2026-04-29 · 데이터 기준: 10-K 2024 + 10-Q 24Q4 + 어닝콜 12분기</p>

<h2>⚡ 한 줄 결론</h2>
<p>서비스 부문 +15% YoY로 마진 방어, 그러나 중국 매출 -8% 지속 [출처: 10-Q 24Q4 p.12]</p>

<h2>📊 KPI 8개 카드</h2>
... (인포그래픽 형식 표)

<h2>🛡️ 해자 (Moat Grade: A-)</h2>
- 생태계 락인 (강) [출처: 10-K Business p.5]
- 브랜드/가격결정력 (강)

<h2>⚠️ Bear Case Top 3</h2>
1. iPhone 의존도 (매출 50%) — 신제품 사이클 둔화 시 직격
... (반대의견 분석가 결과)

<h2>✅ 다음 분기 체크리스트</h2>
- 서비스 ARPU
- 중국 채널 인벤토리
- Vision Pro 출하량
...

<hr>
<small>프롬프트 출처: 타민더마켓 © 2025 · 자동 생성: n8n + Claude</small>
Slack Card

6. Slack 메시지 예시 (#research-daily)

📊 *AAPL 일일 종합 분석 발행*  (2026-04-29)

*결론*: 서비스 +15% YoY 강세, 중국 -8% 우려
*Moat*: A- (생태계 락인 + 브랜드)
*Bear Top 1*: iPhone 의존도 (매출 50%)
*다음 체크*: 서비스 ARPU, 중국 채널 인벤토리

📎 <Drive 링크|전체 보고서> · 📧 메일 발송 완료
Bonus Missions

💎 보너스 과제 5개

1
분석큐 시트 + 종목 1개 등록
관심종목 5개를 우선순위 1~5로 등록. AAPL을 1순위로
2
8 Sub-Agent 단독 검증
한 ticker로 각 Sub-Agent를 단독 호출, 응답 JSON에 출처 인용이 포함되는지 확인
3
Orchestrator HTML 검증
8 Agent 결과를 Sonnet에 전달 → HTML 본문이 8섹션으로 정확히 생성되는지
4
Gmail + Slack 발송 동시
본인 메일과 #research-daily에 동시 도달 + 보고서이력 시트에 1행 append
5
매일 평일 08:00 자동화
Cron 활성화 → 평일 08:00마다 큐의 가장 오래된 ticker 1개 분석 + 발송 (라운드로빈)
비용 주의 — 8 Sub-Agent(Haiku) + Orchestrator(Sonnet) ≈ $0.05/종목 · 1회. 매일 평일 1종목 × 22일 = 약 $1.1/월. 본편 W7보다 10배 깊지만 큐 기반 라운드로빈이라 종목당 분석 주기는 N영업일(N=큐 종목 수). 5종목이면 5영업일 주기.
참조 자료: W7 폴더W7_BONUS_종합분석.json (n8n 워크플로우) + W7_BONUS_분석큐.xlsx (분석 우선순위 시트) + W7_BONUS_보고서이력.xlsx (발송 이력).