다섯 에이전트¶
관심종목 필터를 통과한 각 뉴스 아이템은 에이전트들에게 동시에 전달됩니다. 보통 5개이고, SentimentPulse가 꺼져 있는 동안은 4개입니다(아래 참조). 에이전트들은 병렬로 실행되며(현재 구성에서 아이템당 엔드투엔드 약 20~40초), 출력은 집계되어 대시보드에 표시되는 최종 시그널이 됩니다.
| 에이전트 | 아이콘 | 집중 영역 |
|---|---|---|
| SignalScope | 1차 뉴스 파싱 — 무슨 일이 있었는지, 누가 관련됐는지, 티커 수준의 사실. 필요 시 Tavily 웹 검색으로 교차 검증. | |
| MacroMind | 거시경제 프레이밍 — 금리 결정, CPI 발표, FX 충격, 지정학 이벤트와 연결되는가? "관련성 없음"도 유효한 답. | |
| SectorScan | 섹터·공급망 전파 — 누가 또 수혜/피해를 보는가? TSM → ASML → AMAT 체인, 업스트림 vs 다운스트림. | |
| SentimentPulse | 리테일 심리 — 항목이 전하는 투자자 반응의 톤, 언급량 급증, 가격과 잡음의 괴리. 현재 꺼져 있습니다. Reddit, Stocktwits, YouTube 조회가 모두 일시 중단되어(일시 중단된 소스 참조) 실행되지 않으며, 아이템은 나머지 4개 에이전트가 분석합니다. 이 소스 중 하나라도 다시 켜지면 다시 실행됩니다. | |
| PolicyRadar | 규제·정책 — 수출 통제, 제재, 당국 조치, 중앙은행 성명. |
어떤 에이전트가 실행되나: 오케스트레이터¶
에이전트가 시작되기 전에 오케스트레이터가 아이템마다 짧은 LLM 호출을 한 번 합니다. 참고하는 정보는 아이템 내용, 현재 미국 시장 세션(프리마켓 / 정규장 / 애프터마켓 / 휴장, 모델이 아니라 거래 캘린더로 판정), 같은 종목에 대한 최근 시그널입니다. 이를 바탕으로 분석할 내용이 있는 에이전트를 고릅니다. 돌려주는 것은 에이전트 이름뿐이며 에이전트에게 전달되는 내용에는 아무것도 더하지 않습니다. 그래서 오케스트레이터가 골랐는지와 관계없이 에이전트가 보는 아이템은 같습니다.
안전장치:
- PolicyRadar는 모든 아이템에서 실행됩니다. 오케스트레이터는 나머지 네 에이전트 중에서 고릅니다.
- 일부 소스는 특정 에이전트에게 항상 전달됩니다. 경제 캘린더와 공식 통계 아이템은 항상 MacroMind와 SectorScan에게, RSS 뉴스는 항상 MacroMind에게, SEC 공시·Yahoo Finance·보도자료 아이템은 항상 SectorScan에게 전달됩니다. Reddit·Stocktwits·YouTube 항목(현재 일시 중단)은 항상 SentimentPulse에게 전달되었습니다. 오케스트레이터는 여기에 에이전트를 추가할 수는 있지만 뺄 수는 없습니다.
- 오케스트레이터가 실패하거나 고른 에이전트가 모두 합쳐 2개 미만이면 켜져 있는 에이전트가 모두 실행됩니다.
오케스트레이터는 현재 섀도 모드로 동작합니다. 선택은 기록되지만 모든 아이템에서 켜져 있는 에이전트가 모두 계속 실행되므로, 그 선택을 각 에이전트의 실제 결과와 대조할 수 있습니다. 에이전트를 건너뛰어도 ALERT나 FLASH 시그널이 하나도 낮아지지 않는다는 것이 확인된 뒤에야 건너뛰기를 시작합니다. 2026년 10월 점검에서는 낮아지는 경우가 있었습니다. Yahoo Finance 뉴스에서 점수를 정한 MacroMind를 오케스트레이터가 자주 빼서, 켜져 있는 에이전트가 계속 모두 실행됩니다.
각 에이전트의 출력¶
5개 모두 동일한 구조화된 출력을 생성합니다:
{
"agent_id": "sectorscan",
"signal_type": "routine_news",
"urgency": "ALERT",
"impact_score": 0.72,
"confidence_score": 0.84,
"tickers_linked": [
{"ticker": "NVDA", "impact_score": 0.80, "link_type": "direct"},
{"ticker": "TSM", "impact_score": 0.60, "link_type": "sector"}
],
"reasoning": "... (at most 200 chars)"
}
signal_type 어휘는 일부러 좁게 정의돼 있습니다(routine_news / earnings / policy_change / supply_chain / macro_event / ...). 에이전트의 레인이 해당 아이템과 무관하더라도 조용히 빠지지 않고 구조적으로 응답해야 합니다 — impact_score를 낮게 주는 식으로. 이렇게 해야 집계 수식이 깔끔하게 유지됩니다.
집계¶
엔진은 실행된 에이전트의 출력을 다음과 같이 결합합니다:
top_signal—signals에 저장되는 단일 행. 영어·중국어 요약은 집계 후 아이템마다 한 번만, 아이템 본문·집계 결과·최고 impact 에이전트의 reasoning을 바탕으로 작성됩니다(각 에이전트는 더 이상 요약을 쓰지 않습니다). 성공한 모든 에이전트에 걸친 가중 평균 impact를 담습니다. reasoning은 모든 에이전트의 reasoning을 이어붙인 결과입니다(대시보드 카드가 모든 에이전트의 관점을 접을 수 있는 블록으로 보여줄 수 있도록).tickers_linked— 모든 에이전트 결과의 합집합, 중복 제거, 티커별 평균.agents_breakdown— 각 에이전트의 개별 점수, 지연시간, 에러(있다면)를 시그널 행에 저장해 대시보드의 접을 수 있는 패널에서 세부 분석을 볼 수 있게 합니다.
왜 다섯인가¶
경험적으로, 금융 뉴스 한 건의 "중요성"을 하나의 거대 프롬프트로 판단하려 들면 빠르게 드리프트합니다 — 서로 다른 레인(규제 vs 심리 vs 공급망)이 서로 다른 축에서 답하기 때문입니다. 관심사를 분리하면 UI에 훨씬 풍부한 재료(agent-breakdown 패널)를 줄 수 있고, Reflexion이 비판할 독립적 시그널도 생기며, 한 에이전트의 장애나 환각이 집계 결과를 크게 흔들지 못하게 됩니다.
참고¶
- 점수 체계 — 긴급도 티어가
impact_score로부터 어떻게 도출되는지 - Claw chat (RAG) — 에이전트들의 요약이 어떻게 질의 가능한 지식 기반이 되는지