TRENDSHIFT #6 딥다이브 · 2026-03-21 분석

TradingAgents 딥다이브
— 실제 트레이딩 회사 구조를 LLM 멀티에이전트로 시뮬레이션하는 금융 AI 프레임워크

단일 LLM이 아닌 Bull vs Bear 토론 메커니즘과 3관점 리스크 관리팀이 협업하여 주식 매매 의사결정을 수행하는 오픈소스 프레임워크. LangGraph 기반으로 모듈성이 뛰어나고, 거래 후 반성(Reflection) + 메모리 축적으로 경험을 쌓아가는 에이전트를 구현합니다. (저장소: TauricResearch/TradingAgents · ⭐82.8k · Apache 2.0 · Python)
목차
  1. 프로젝트 한줄 요약
  2. 왜 주목받는가
  3. 기술 스택 전체 지도
  4. 아키텍처 심화 분석
  5. 디렉토리 구조 해부
  6. 학습 포인트 (기술별)
  7. 하드웨어 / 시스템 요구사항
  8. 직접 해볼 수 있는 실습 과제
  9. 관련 기술 심화 학습 로드맵
  10. 핵심 키워드 사전
  11. 참고 링크

1프로젝트 한줄 요약

TradingAgents가 정확히 무엇을 하는 물건인가

TradingAgents실제 트레이딩 회사의 조직 구조를 LLM 멀티에이전트로 시뮬레이션하여, 주식 매매 의사결정을 협업적으로 수행하는 오픈소스 Python 프레임워크입니다. 기술적 분석·뉴스 분석·재무 분석·감성 분석을 담당하는 4명의 애널리스트가 독립적으로 분석한 뒤, Bull vs Bear 연구원이 토론하고, 리스크 관리팀이 3관점으로 검토하여 최종 매매 신호를 생성합니다.

한 컷 비유

"실제 월가 투자회사의 리서치 회의실을 AI로 재현하는 것"

실제 투자회사에서는 기술 애널리스트, 뉴스 애널리스트, 재무 애널리스트, 강세론자, 약세론자, 리스크 매니저, 포트폴리오 매니저가 각자의 관점으로 토론한 후 매매를 결정합니다. TradingAgents는 이 구조를 LangGraph StateGraph로 그대로 코드화합니다.

핵심은 토론(Debate)이 편향을 줄인다는 점입니다. 단일 LLM의 한쪽 방향 편향을 Bull과 Bear의 대립 토론으로 교정합니다.

2왜 주목받는가

트렌딩 이유와 경쟁 프로젝트 대비 강점

TradingAgents는 AI 에이전트 + 금융이라는 두 가지 핫 토픽의 교차점에 위치합니다. 단일 LLM이 아닌 다중 전문가 에이전트의 토론(Debate) 메커니즘으로 의사결정 품질을 향상시키고, 거래 후 반성(Reflection)과 메모리 축적으로 경험을 쌓아가는 에이전트를 구현합니다.

기존 트레이딩 봇의 한계
단일 모델 판단 — 편향, 리스크 관리 부재, 학습 없음

일반적인 LLM 트레이딩 봇은 단일 모델이 시장을 분석해 판단합니다. 모델이 가진 훈련 편향이 그대로 반영되고, 손실 후 교훈을 다음 거래에 반영하지 못합니다. 리스크 관리도 단순한 스톱로스 수준에 그칩니다.

TradingAgents의 해법
멀티에이전트 토론 + 메모리 반성(Reflection) + 3관점 리스크 분석

Bull과 Bear의 대립 토론으로 편향을 교정하고, Research Manager가 종합 판단합니다. 거래 후 각 에이전트가 자신의 판단을 반성하고 교훈을 메모리에 축적합니다. 공격적·중립·보수적 3관점의 리스크팀이 최종 검토합니다.

경쟁 프로젝트 대비 위치

비교 항목TradingAgents일반 트레이딩 봇FinGPT 류
의사결정 구조멀티에이전트 토론단일 모델 판단단일 모델 + 파인튜닝
리스크 관리3관점 토론단순 스톱로스없거나 기본적
LLM 지원OpenAI 호환 13종 + Anthropic/Google/Azure/Bedrock 네이티브보통 1~2개OpenAI only
메모리/학습Reflection + 메모리 축적없음없음
확장성LangGraph 노드 추가 용이코드 수정 필요모델 재학습 필요

3기술 스택 전체 지도

핵심 프레임워크 · 백엔드 · CLI/TUI · 인프라

핵심 프레임워크

┌─────────────────────────────────────────────┐ │ LangGraph (워크플로우 엔진) │ │ ┌─────────────────────────────────────────┐ │ │ │ LangChain Core / Experimental │ │ │ │ (에이전트 추상화, 도구 바인딩) │ │ │ └─────────────────────────────────────────┘ │ └─────────────────────────────────────────────┘

백엔드 (Python 3.13)

카테고리라이브러리역할
에이전트 오케스트레이션langgraphStateGraph 기반 워크플로우 정의 및 실행
LLM 연동langchain-openai, langchain-anthropic, langchain-google-genai멀티 프로바이더 LLM 클라이언트
금융 데이터yfinance, stockstats주가, 기술지표, 재무제표 수집
데이터 처리pandas (≥2.3.0)시계열 데이터 가공
캐싱redis데이터 캐싱 (반복 API 호출 방지)
CLItyper, questionary, rich대화형 터미널 인터페이스

인프라

4아키텍처 심화 분석

에이전트 플로우 · Debate 메커니즘 · Factory 패턴 · Reflection + Memory
┌─────────────────────┐ │ 사용자 입력 │ │ (Ticker, 날짜, 설정) │ └──────────┬──────────┘ │ ┌──────────▼──────────┐ │ Propagator │ │ (초기 상태 생성) │ └──────────┬──────────┘ │ ┌────────────────────┼────────────────────┐ │ │ │ ┌─────────▼────────┐ ┌────────▼────────┐ ┌─────────▼────────┐ │ Market Analyst │ │ News Analyst │ │ Fundamentals │ │ (기술적 분석) │ │ (뉴스 분석) │ │ Analyst (재무) │ │ + Tool Node │ │ + Tool Node │ │ + Tool Node │ └─────────┬────────┘ └────────┬────────┘ └─────────┬────────┘ │ │ │ │ ┌─────────▼─────────┐ │ └────────►│ Sentiment Analyst │◄──────────┘ │ (감성 분석) │ └─────────┬─────────┘ │ ┌─────────────▼─────────────┐ │ 연구팀 토론 (Debate) │ │ ┌──────┐ ┌──────┐ │ │ │ Bull │◄──►│ Bear │ │ │ │ 연구원│ │ 연구원│ │ │ └──┬───┘ └──┬───┘ │ │ └─────┬─────┘ │ │ ┌─────▼─────┐ │ │ │ Research │ │ │ │ Manager │ │ │ └─────┬─────┘ │ └───────────┼────────────────┘ │ ┌───────────▼────────────┐ │ Trader Agent │ │ (매매 시점/규모 결정) │ └───────────┬────────────┘ │ ┌───────────▼────────────────┐ │ 리스크 관리팀 토론 │ │ Aggressive ◄─► Neutral │ │ ▲ ▲ │ │ └──► Conservative │ │ ┌──────────────┐ │ │ │ Risk Judge │ │ │ └──────┬───────┘ │ └────────────┼────────────────┘ │ ┌────────────▼────────────┐ │ Portfolio Manager │ │ (최종 승인/거부) │ └────────────┬────────────┘ │ ┌────────────▼────────────┐ │ Signal Processor │ │ (BUY/SELL/HOLD 추출) │ └────────────┬────────────┘ │ ┌────────────▼────────────┐ │ Reflector │ │ (거래 후 학습/메모리) │ └─────────────────────────┘

핵심 설계 패턴 1 — Convergent-Divergent

발산(Divergent): 4명의 애널리스트가 각자 전문 분야에서 독립적으로 분석. 수렴(Convergent): Research Manager가 모든 분석을 종합. 이 사이클을 리스크 관리에서 한 번 더 반복합니다.

핵심 설계 패턴 2 — Debate 메커니즘

# 핵심 아이디어: Bull vs Bear 토론
max_debate_rounds = 1  # 설정 가능
# Bull 연구원: "이 주식을 사야 하는 이유..."
# Bear 연구원: "이 주식을 팔아야 하는 이유..."
# → 조건부 로직이 토론 라운드 관리
# → Research Manager가 양측 논거를 종합하여 판단

핵심 설계 패턴 3 — Dual-LLM 전략

비용 최적화 전략
Deep Thinking LLM + Quick Thinking LLM
복잡한 종합 판단(Research Manager, Risk Judge)에는 고성능 모델을, 개별 애널리스트의 빠른 분석에는 경량 모델을 사용합니다. 분석 품질과 API 비용의 균형을 맞추는 실용적 전략입니다.

핵심 설계 패턴 4 — Factory 패턴 (LLM 클라이언트)

class LLMClientFactory:
    @staticmethod
    def create(provider: str, model: str, **kwargs):
        if provider == "openai":
            return OpenAIClient(model, **kwargs)
        elif provider == "anthropic":
            return AnthropicClient(model, **kwargs)
        elif provider == "google":
            return GoogleClient(model, **kwargs)

# base_client.py → 추상 인터페이스
# openai_client.py / anthropic_client.py / google_client.py / factory.py

핵심 설계 패턴 5 — Reflection + Memory

거래 실행 → 결과 확인 → 에이전트별 반성(Reflection) │ ▼ memory.add_situations([(시장상황, 학습된_교훈)]) │ ▼ 다음 거래 시 BM25로 유사 상황 검색 → 의사결정에 반영

5디렉토리 구조 해부

에이전트 모듈 · 데이터플로우 · LangGraph 그래프 · LLM 클라이언트
TradingAgents/ ├── cli/ │ └── main.py # Typer 기반 대화형 CLI │ ├── tradingagents/ # 핵심 패키지 │ ├── default_config.py # 전체 설정값 (LLM, 데이터소스, 토론 라운드) │ │ │ ├── agents/ # 에이전트 모듈 (핵심!) │ │ ├── analysts/ # 4종 애널리스트 (.py 파일) │ │ │ ├── market_analyst.py # 기술적 지표 분석 (MACD, RSI) │ │ │ ├── news_analyst.py # 뉴스/매크로 분석 │ │ │ ├── social_media_analyst.py # 소셜 감성 분석 │ │ │ └── fundamentals_analyst.py # 재무제표 분석 │ │ ├── researchers/ # Bull/Bear 연구원 + Research Manager │ │ ├── trader/ # 매매 실행 에이전트 │ │ ├── managers/ # Portfolio Manager │ │ ├── risk_mgmt/ # 리스크 관리팀 (3관점) │ │ └── utils/ # 에이전트 공통 유틸리티 │ │ │ ├── dataflows/ # 데이터 수집/처리 │ │ ├── interface.py # 데이터소스 추상 인터페이스 │ │ ├── y_finance.py # Yahoo Finance 연동 │ │ ├── alpha_vantage.py # Alpha Vantage 메인 │ │ └── stockstats_utils.py # 기술지표 계산 │ │ │ ├── graph/ # LangGraph 워크플로우 (핵심!) │ │ ├── trading_graph.py # TradingAgentsGraph 메인 클래스 │ │ ├── setup.py # StateGraph 노드/엣지 구성 │ │ ├── propagation.py # 초기 상태 생성 + 실행 │ │ ├── reflection.py # 거래 후 학습/메모리 업데이트 │ │ ├── signal_processing.py # BUY/SELL/HOLD 시그널 추출 │ │ └── conditional_logic.py # 토론 라운드 관리 조건부 로직 │ │ │ └── llm_clients/ # LLM 프로바이더 추상화 │ ├── base_client.py # 추상 베이스 클래스 │ ├── openai_client.py │ ├── anthropic_client.py │ ├── google_client.py │ ├── factory.py # Factory 패턴 클라이언트 생성 │ └── validators.py │ ├── pyproject.toml ├── requirements.txt └── .env.example # API 키 템플릿

6학습 포인트 (기술별)

LangGraph · Factory 패턴 · Reflection + Memory · Debate · 금융 데이터

A. LangGraph — 멀티에이전트 워크플로우 설계

StateGraph로 복잡한 멀티에이전트 파이프라인 정의, 조건부 엣지(Conditional Edge)로 토론 라운드 관리, 20개 이상의 필드를 가진 AgentState 스키마 설계, 노드 간 데이터 흐름과 상태 전파 패턴을 배웁니다.

# 미니 토론 그래프 만들어보기
from langgraph.graph import StateGraph
from typing import TypedDict

class DebateState(TypedDict):
    topic: str
    for_arguments: list[str]
    against_arguments: list[str]
    rounds: int
    verdict: str

# 찬성/반대 에이전트 → 판정 에이전트 워크플로우 구현

B. Factory 패턴 — 멀티 LLM 프로바이더 지원

추상 베이스 클라이언트로 프로바이더 독립적 코드 작성, 프로바이더별 특수 설정 처리, 런타임에 프로바이더 교체 가능한 유연한 구조를 배웁니다.

C. Reflection + Memory — 에이전트 자기 학습

거래 결과를 기반으로 에이전트가 자신의 판단을 반성하는 메커니즘, (상황, 교훈) 쌍으로 메모리를 축적하는 패턴, BM25 기반 유사 상황 검색으로 과거 경험 활용, 에이전트 유형별 독립 메모리 관리를 배웁니다.

D. Debate 메커니즘 — 다관점 의사결정

Bull vs Bear 대립 토론으로 편향(bias) 감소, 3관점 리스크 분석(공격적/보수적/중립), max_debate_rounds 파라미터로 토론 깊이 조절, 판정 에이전트(Judge)의 종합 판단 프롬프트 설계를 배웁니다.

E. 금융 데이터 파이프라인

yfinance/Alpha Vantage를 통한 실시간 주가·재무 데이터 수집, stockstats로 기술지표(MACD, RSI, 볼린저밴드) 계산, Redis 캐싱으로 API 호출 최소화, 데이터소스 추상화 인터페이스로 벤더 교체를 배웁니다.

F. CLI/TUI 대시보드 설계

typer + questionary로 대화형 CLI 구축, rich 라이브러리로 실시간 터미널 대시보드, 에이전트 실행 상태 추적 및 시각화, 마크다운 리포트 자동 생성을 배웁니다.

7하드웨어 / 시스템 요구사항

API 기반이라 GPU 불필요 — 비용 관리가 핵심
항목최소권장
Python3.103.13
RAM4GB8GB+
Redis선택사항설치 권장 (캐싱)
GPU불필요 (API 기반)Ollama 로컬 모델 시 필요
API 키OpenAI 또는 1개 이상복수 프로바이더
네트워크필수 (API + 금융데이터)
비용 주의사항
1회 분석당 수십 회 LLM 호출
Deep Thinking 모델 사용 시 1회 분석에 상당한 비용이 발생할 수 있습니다. Ollama로 로컬 모델을 사용하면 비용이 제로이지만 성능 트레이드오프가 있습니다. 처음에는 경량 모델로 구조를 이해하고 나서 고성능 모델을 사용하는 것을 권장합니다.

8직접 해볼 수 있는 실습 과제

난이도별 5개 과제
BEGINNER

첫 번째 트레이딩 분석 실행 초급 · 1~2시간

레포 클론 → conda 환경 설정 → API 키 세팅 → AAPL(애플)에 대해 CLI로 분석 실행 → 생성된 리포트를 읽고 각 에이전트의 분석 내용 비교.

결과물: 에이전트별 분석 요약 노트

INTERMEDIATE

커스텀 애널리스트 추가 중급 · 반나절

agents/analysts/ 구조를 분석하여 새로운 애널리스트를 생성합니다. 예: "ESG Analyst" — ESG 점수 기반 투자 적합성 분석. 기존 ToolNode 패턴을 따라 데이터 도구를 연결합니다.

결과물: 작동하는 커스텀 애널리스트 PR

INTERMEDIATE

Debate 라운드 실험 중급 · 2~3시간

max_debate_rounds를 1, 3, 5로 변경하며 결과를 비교합니다. 토론 라운드 증가가 의사결정 품질에 미치는 영향을 분석합니다.

결과물: 라운드별 결과 비교 리포트

ADVANCED

멀티 종목 포트폴리오 분석기 고급 · 1~2일

단일 종목이 아닌 5~10개 종목을 동시에 분석합니다. 종목 간 상관관계를 고려한 포트폴리오 최적화 에이전트를 추가하고, LangGraph의 병렬 실행을 활용한 동시 분석을 구현합니다.

결과물: 포트폴리오 추천 시스템 프로토타입

ADVANCED

백테스팅 프레임워크 구축 고급 · 2~3일

backtrader 통합을 활용하여 과거 데이터로 전략을 검증합니다. 1년치 일별 데이터로 에이전트 의사결정을 시뮬레이션하고 수익률·최대 낙폭·샤프비율 등 성과 지표를 산출합니다.

결과물: 백테스팅 결과 대시보드

9관련 기술 심화 학습 로드맵

6주 커리큘럼

1주차: LangGraph 기초

LangGraph 공식 문서 정독, StateGraph·노드·엣지·조건부 라우팅 이해, 간단한 2-노드 워크플로우 만들어보기. 참고: LangGraph 공식 튜토리얼 (langchain-ai.github.io/langgraph/)

2주차: 멀티에이전트 시스템 패턴

Agent 역할 분리 패턴(Analyst, Researcher, Manager), 토론(Debate) 메커니즘 구현, 메모리 + Reflection 패턴. 참고: TradingAgents의 graph/setup.py 소스코드 정독.

3주차: 금융 데이터 엔지니어링

yfinance API로 주가/재무 데이터 수집, 기술지표(MACD, RSI, 볼린저밴드) 이해 및 구현, pandas로 시계열 데이터 처리. 실습: 관심 종목 3개의 기술지표 대시보드 만들기.

4주차: LLM 프로바이더 추상화

Factory 패턴으로 멀티 프로바이더 지원, 프로바이더별 특수 기능 활용, 비용 최적화: Deep/Quick Think 모델 분리 전략. 실습: 3개 프로바이더를 지원하는 LLM 클라이언트 라이브러리 만들기.

5주차: CLI/TUI 개발

Typer로 CLI 프레임워크 구축, Rich로 실시간 터미널 대시보드 개발, Questionary로 대화형 입력 처리. 실습: 나만의 AI 도구 CLI 대시보드 만들기.

6주차: 통합 프로젝트

4주차까지 배운 기술을 조합하여 미니 TradingAgents 구현. 2명의 에이전트 + 1명의 판정자로 간소화된 토론 시스템, yfinance 데이터 기반 간단한 매매 시그널 생성.

10핵심 키워드 사전

이 레포를 이해하기 위한 핵심 용어 17개
키워드설명
LangGraphLangChain의 워크플로우 오케스트레이션 프레임워크. 에이전트 간 복잡한 흐름을 StateGraph로 정의
StateGraphLangGraph의 핵심 개념. 노드(에이전트)와 엣지(전이)로 구성된 상태 기반 그래프
AgentStateTypedDict로 정의된 워크플로우 전체 상태. 모든 에이전트 간 공유되는 데이터 컨테이너
ToolNodeLangGraph에서 외부 도구(API, 데이터소스)를 호출하는 특수 노드
Conditional Edge조건에 따라 다음 노드를 결정하는 동적 라우팅. 토론 라운드 관리에 사용
Debate MechanismBull vs Bear 대립 토론으로 다관점 분석을 수행하는 패턴
Reflection거래 후 결과를 분석하여 교훈을 추출하는 에이전트 자기 학습 메커니즘
Memory에이전트별로 축적되는 (상황, 교훈) 쌍의 장기 기억 저장소
BM25텍스트 유사도 기반 검색 알고리즘. 메모리에서 유사 상황을 찾는 데 사용
Factory Pattern객체 생성 로직을 분리하는 디자인 패턴. LLM 프로바이더 교체를 용이하게 함
Deep/Quick Think복잡한 종합 판단용 고성능 모델과 빠른 개별 분석용 경량 모델을 분리 운용하는 전략
MACDMoving Average Convergence Divergence. 이동평균 수렴발산 지표
RSIRelative Strength Index. 상대강도지수. 과매수/과매도 판단
Alpha Vantage프리미엄 금융 데이터 API. 주가, 재무, 뉴스 등 제공
yfinanceYahoo Finance의 Python 래퍼. 무료 금융 데이터 수집
backtraderPython 백테스팅 프레임워크. 과거 데이터로 투자 전략 검증
Convergent-Divergent분석을 발산(다관점)시킨 후 수렴(종합)하는 반복 패턴

11참고 링크

더 깊이 파고들기 위한 리소스