Skip to main content

2. 에이전트별 외부 API와 데이터 소스

2.1 목적

이 문서는 TradingAgents의 각 LangGraph 에이전트가 어떤 외부 데이터 소스를 사용하는지, 데이터가 어떤 경로로 전달되는지, MCP가 사용되는지를 정리한다.

TradingAgents에서 말하는 Tool은 MCP Tool이 아니라 LangChain의 @tool Python 함수다. LangGraph의 ToolNode가 이 함수를 실행하며, 함수 내부에서 외부 HTTP API 또는 yfinance 라이브러리를 호출한다.

LangGraph Agent
|
+-- LangChain @tool
| |
| +-- route_to_vendor()
| |
| +-- Yahoo Finance
| +-- Alpha Vantage (선택 사항)
| +-- FRED
| +-- Polymarket
|
+-- 노드 실행 전 직접 수집
| +-- StockTwits API
| +-- Reddit RSS
|
+-- LLM 호출
|
+-- codex-oauth-proxy
|
+-- ChatGPT Codex API

2.2 MCP 사용 여부

현재 TradingAgents에는 다음 MCP 구성요소가 없다.

  • MCP Server
  • MCP Client
  • MCP Tool Discovery
  • MCP transport(stdio, SSE, Streamable HTTP)

에이전트가 사용하는 도구는 정적으로 등록된 LangChain Tool이다.

from langchain_core.tools import tool

@tool
def get_stock_data(...):
return route_to_vendor("get_stock_data", ...)

따라서 현재 데이터 계층은 다음 구조다.

Agent -> LangChain Tool -> Python vendor router -> 외부 API

MCP 기반으로 전환하려면 외부 데이터 공급자를 MCP Server 뒤에 배치하고, TradingAgents에 MCP Client와 동적 Tool 등록 계층을 추가해야 한다.

2.3 현재 기본 데이터 공급자

tradingagents/default_config.py의 기본 설정은 다음과 같다.

데이터 범주기본 공급자인증
주가 OHLCVYahoo Finance불필요
기술적 지표Yahoo Finance + 로컬 계산불필요
기업 재무정보Yahoo Finance불필요
종목 및 글로벌 뉴스Yahoo Finance불필요
거시경제FREDFRED_API_KEY 필요
예측시장Polymarket불필요
투자 심리Yahoo Finance, StockTwits, Reddit RSS불필요
LLMcodex-oauth-proxyChatGPT OAuth

기본 vendor 설정:

"data_vendors": {
"core_stock_apis": "yfinance",
"technical_indicators": "yfinance",
"fundamental_data": "yfinance",
"news_data": "yfinance",
"macro_data": "fred",
"prediction_markets": "polymarket",
}

현재 로컬 환경에서는 FRED_API_KEYALPHA_VANTAGE_API_KEY가 설정되지 않았다. 따라서 Alpha Vantage는 사용되지 않으며, FRED 데이터는 사용 불가 sentinel로 대체된 후 분석이 계속된다.

2.4 에이전트별 데이터 소스

2.4.1 Market Analyst

Market Analyst는 다음 LangChain Tool을 사용한다.

Tool실제 데이터 소스동작
get_stock_dataYahoo Finance지정 기간의 OHLCV 조회
get_indicatorsYahoo FinanceOHLCV 수집 후 stockstats로 지표 계산
get_verified_market_snapshotYahoo Finance가격과 주요 지표를 로컬에서 재계산·검증

대표 지표:

  • SMA와 EMA
  • RSI
  • MACD
  • Bollinger Bands
  • ATR
  • VWMA

실행 흐름:

Market Analyst
|
+-- tool_calls 있음 -> tools_market -> Market Analyst 재호출
|
+-- tool_calls 없음 -> market_report 확정

get_verified_market_snapshot은 vendor router를 거치지 않고 Yahoo Finance 기반 OHLCV를 직접 불러온다. 이 경로는 LLM이 정확한 가격이나 지표 값을 잘못 생성하지 않도록 검증 기준을 제공한다.

2.4.2 Sentiment Analyst

Sentiment Analyst는 LangGraph ToolNode를 통한 도구 호출을 사용하지 않는다. 노드가 실행될 때 Python 코드가 다음 데이터를 먼저 수집하고, 결과를 LLM 프롬프트에 삽입한다.

데이터외부 소스인증
종목 뉴스Yahoo Finance불필요
개인투자자 메시지StockTwits public API불필요
커뮤니티 토론Reddit public RSS불필요

StockTwits endpoint:

https://api.stocktwits.com/api/2/streams/symbol/{ticker}.json

수집 항목:

  • 최근 메시지 최대 30개
  • 작성자가 지정한 Bullish 또는 Bearish 태그
  • 메시지 본문
  • 작성자와 작성 시각

Reddit 기본 대상:

  • r/wallstreetbets
  • r/stocks
  • r/investing

Reddit endpoint:

https://www.reddit.com/r/{subreddit}/search.rss

Reddit JSON 검색 API는 비 OAuth 요청이 WAF에서 차단되는 경우가 많아 기본 경로로 사용하지 않는다. RSS에는 점수와 댓글 수가 없으므로 코드도 이를 임의로 생성하지 않는다.

실행 흐름:

Yahoo 뉴스 ----+
StockTwits -----+--> 프롬프트 조립 --> Sentiment Analyst LLM
Reddit RSS -----+

2.4.3 News Analyst

News Analyst는 다음 Tool을 사용한다.

Tool데이터 소스인증
get_newsYahoo Finance불필요
get_global_newsYahoo Finance Search불필요
get_macro_indicatorsFREDFRED_API_KEY 필요
get_prediction_marketsPolymarket Gamma API불필요

Yahoo Finance 뉴스는 분석 기준일을 중심으로 날짜를 필터링한다. 과거 날짜 분석에 미래 기사가 포함되는 look-ahead 문제를 방지하기 위한 처리다.

FRED API base URL:

https://api.stlouisfed.org/fred

대표 FRED series:

의미Series ID
연방기금금리FEDFUNDS
미국 2년물 금리DGS2
미국 10년물 금리DGS10
장단기 금리차T10Y2Y
CPICPIAUCSL
Core CPICPILFESL
Core PCEPCEPILFE
실업률UNRATE
비농업 고용PAYEMS
GDPGDP, GDPC1
VIXVIXCLS

FRED는 선택적 보강 데이터다. 키 누락이나 API 장애가 발생하면 전체 분석을 중단하지 않고 다음 형태의 명시적 메시지를 반환한다.

DATA_UNAVAILABLE: optional macro_data could not be retrieved

Polymarket API base URL:

https://gamma-api.polymarket.com

검색 endpoint:

GET /public-search

수집 항목:

  • 이벤트별 시장 내재 확률
  • 거래량
  • 시장 종료 날짜
  • 최근 1주 가격 또는 확률 변화

get_insider_transactions는 News용 ToolNode에 등록되어 있지만 현재 News Analyst의 bind_tools() 목록에는 포함되지 않는다. 따라서 현재 그래프에서 LLM이 이 도구를 호출할 수 없으며 사실상 휴면 기능이다.

2.4.4 Fundamentals Analyst

Fundamentals Analyst는 다음 Tool을 사용한다.

Tool현재 데이터 소스데이터
get_fundamentalsYahoo Finance기업 개요, 밸류에이션, 주요 재무 지표
get_balance_sheetYahoo Finance자산, 부채, 자본
get_cashflowYahoo Finance영업·투자·재무 현금흐름
get_income_statementYahoo Finance매출, 영업이익, 순이익

재무제표는 연간 또는 분기 단위로 요청할 수 있다.

2.4.5 Research, Trader, Risk, Manager 에이전트

다음 에이전트는 새로운 시장 데이터 API를 호출하지 않는다.

에이전트입력 데이터
Bull Researcher분석가 4명의 보고서와 Bear 토론
Bear Researcher분석가 4명의 보고서와 Bull 토론
Research ManagerBull/Bear 토론 기록
TraderResearch Manager 투자 계획
Aggressive Analyst분석 보고서와 Trader 제안
Conservative Analyst분석 보고서와 Trader 제안
Neutral Analyst분석 보고서와 Trader 제안
Portfolio Manager연구 계획, 거래안, 위험 토론, 과거 교훈

이 에이전트들은 외부 시장 데이터 API를 직접 호출하지 않지만 모두 LLM API를 호출한다.

현재 모델 배정:

역할모델
분석가, Bull/Bear, Trader, 위험 분석가gpt-5.6-terra
Research Manager, Portfolio Managergpt-5.6-sol

2.5 그래프 실행 전 공통 외부 호출

LangGraph 실행 전에 종목 신원을 결정적으로 확인하기 위해 Yahoo Finance를 호출한다.

yf.Ticker(normalized_ticker).info

수집 정보:

  • 회사명
  • 섹터
  • 산업
  • 거래소
  • quote type

결과는 instrument_context에 저장되어 모든 에이전트에 전달된다. 이를 통해 에이전트가 티커를 다른 회사나 자산으로 잘못 해석하는 것을 방지한다.

2.6 Vendor 라우팅과 대체 공급자

대부분의 데이터 Tool은 다음 경로로 실행된다.

Agent
-> LangChain @tool
-> route_to_vendor(method)
-> data_vendors 또는 tool_vendors 설정 확인
-> 선택된 vendor 구현 호출

Tool별로 tool_vendors를 설정하면 범주 기본값보다 우선한다.

"tool_vendors": {
"get_stock_data": "alpha_vantage",
}

여러 공급자를 명시하면 지정한 순서대로 fallback한다.

"data_vendors": {
"core_stock_apis": "yfinance,alpha_vantage",
}

라우터는 사용자가 지정하지 않은 공급자로 임의 전환하지 않는다.

Alpha Vantage base URL:

https://www.alphavantage.co/query

필요한 환경변수:

ALPHA_VANTAGE_API_KEY=...

Alpha Vantage는 가격, 기술적 지표, 재무제표, 뉴스와 내부자 거래의 대체 공급자로 구현되어 있다.

2.7 LLM API 경로

모든 LLM 기반 에이전트의 현재 호출 경로는 다음과 같다.

TradingAgents
-> OpenAI-compatible Chat Completions
-> http://127.0.0.1:18741/v1/chat/completions
-> Docker codex-oauth-proxy
-> https://chatgpt.com/backend-api/codex/responses

현재 모델:

quick: gpt-5.6-terra
deep: gpt-5.6-sol

codex-oauth-proxy는 시장 데이터 공급자가 아니다. 분석가가 수집한 데이터를 받아 LLM 추론을 수행할 수 있도록 OpenAI-compatible API를 제공하는 역할이다.

2.8 데이터 전달과 보안 경계

외부 데이터의 최종 전달 경로는 다음과 같다.

Yahoo / FRED / StockTwits / Reddit / Polymarket
|
v
Python 문자열과 표
|
v
Agent 프롬프트
|
v
localhost codex-oauth-proxy
|
v
ChatGPT Codex API

따라서 외부 API에서 받은 가격, 재무정보, 뉴스와 소셜 데이터는 일부 로컬 계산에만 사용되는 것이 아니라 LLM 프롬프트에도 포함되어 외부 LLM 서비스로 전달된다.

OAuth 토큰은 다음 로컬 경로에 저장되며 Git에서 제외되어야 한다.

infra/2-codex-oauth-proxy/.config/chatgpt_auth.json

2.9 장애 처리 특성

데이터 범주장애 시 처리
가격·재무·뉴스설정된 fallback 공급자를 시도한 후 핵심 오류를 노출
종목 데이터 없음NO_DATA_AVAILABLE을 반환하고 값 생성을 금지
FRED·Polymarket선택 데이터이므로 DATA_UNAVAILABLE로 완화
StockTwits·Redditplaceholder 문자열을 반환하고 Sentiment 분석을 계속
LLM APISDK retry budget 이후 실패하면 그래프 중단

핵심 데이터 공급자는 오류를 숨기지 않으며, 선택적 보강 데이터는 전체 분석을 중단시키지 않는 구조다.

2.10 요약

현재 TradingAgents가 의존하는 외부 시스템은 다음과 같다.

  1. Yahoo Finance: 가격, 지표 원천, 재무정보, 뉴스, 종목 신원
  2. StockTwits public API: 개인투자자 메시지와 명시적 심리 태그
  3. Reddit public RSS: 투자 커뮤니티 토론
  4. FRED API: 거시경제 시계열; 현재 키 미설정
  5. Polymarket Gamma API: 이벤트별 시장 내재 확률
  6. Alpha Vantage: 선택 가능한 대체 공급자; 현재 키 미설정
  7. ChatGPT Codex API: 모든 LLM 에이전트의 추론

현재 구현은 MCP가 아니라 정적 LangChain Tool과 Python vendor router 기반이다.