LangChain을 사용하여 에이전트형 AI 주식 리서치 터미널을 구축했습니다
요약
LangChain과 Gemini를 활용하여 금융 데이터 분석 및 가치 평가를 수행하는 에이전트형 주식 리서치 터미널 'StockAny AI' 구축 사례를 소개합니다. LLM의 환각을 방지하기 위해 수치 계산은 백엔드에서 처리하고, AI는 데이터 해석과 최신 동향 조사에 집중하도록 설계되었습니다.
핵심 포인트
- LangChain과 Gemini를 결합한 에이전트 기반 금융 분석 시스템
- 수치 계산(백엔드)과 데이터 해석(LLM)의 역할 분리를 통한 정확도 향상
- DCF 모델을 활용한 내재 가치 및 안전 마진 자동 계산
- Tavily 검색을 통한 실시간 시장 동향 및 투자 논거 생성
주식 티커(ticker)를 입력했을 때 단순히 현재 가격 이상의 정보를 얻을 수 있다면 어떨까요?
저는 실제 금융 데이터, 기본적 가치 평가(fundamental valuation), 그리고 최근 시장 정보를 한곳에 결합할 수 있는 무언가를 만들고 싶었습니다.
그래서 저는 AI 기반의 주식 리서치 및 가치 평가 터미널인 StockAny AI를 구축했습니다.
👉 GitHub: https://github.com/iPrq/Stock-Market-Analyser
아이디어는 간단합니다:
티커 입력 → 금융 데이터 가져오기 → 내재 가치(intrinsic value) 계산 → 최근 동향 조사 → 투자 논거(investment thesis) 생성.
그리고 흥미로운 점은 AI가 모든 것을 수행하는 책임자가 아니라는 것입니다.
금융 계산은 백엔드(backend)에서 이루어지며, Gemini는 데이터를 해석하고 최근 동향을 조사하는 데 사용됩니다.
StockAny AI는 실제로 무엇을 하나요?
어떤 주식 티커에 대해서든, 이 애플리케이션은 네 가지 주요 단계를 수행합니다:
- 실시간 금융 데이터 가져오기
- 현금흐름할인법 (DCF) 모델을 사용하여 추정 내재 가치 계산
- 안전 마진 (margin of safety) 계산
- Gemini + 웹 검색을 사용하여 투자 논거 생성
최종 결과물은 다음과 같은 항목들을 제공합니다:
- 현재 주가
- 추정 내재 가치
- 안전 마진
- 매수(BUY) / 보유(HOLD) / 매도(SELL) 권고
- AI가 생성한 투자 논거
- 낙관적 시나리오 (Bull case)
- 비관적 시나리오 (Bear case)
- 최근 동향 및 촉매제 (catalysts)
- 리서치에 사용된 출처
목표는 또 다른 주가 대시보드를 만드는 것이 아니었습니다.
저는 이것이 마치 미니 주식 리서치 터미널처럼 느껴지기를 원했습니다.
아키텍처 (The Architecture)
애플리케이션은 두 개의 주요 부분으로 나뉩니다:
┌─────────────────────┐
│ Next.js Frontend │
│ React 19 + TS │
...
프론트엔드는 Next.js 16, React 19 및 Tailwind CSS v4로 구축되었으며, 백엔드는 Python, FastAPI 및 Uvicorn을 사용합니다.
왜 그냥 LLM에게 물어보지 않나요?
이것은 가장 중요한 설계 결정 중 하나였습니다.
만약 단순히 LLM에게 다음과 같이 묻는다면:
"NVIDIA는 좋은 투자처인가요?"
답변을 얻을 수는 있겠지만, 몇 가지 문제가 발생합니다.
모델이 금융 수치를 직접 만들어내거나 전체 밸류에이션 (Valuation)을 스스로 수행하는 책임을 져서는 안 됩니다.
대신, StockAny는 책임을 분리합니다.
백엔드는 수치를 처리합니다
Financial Modeling Prep은 다음과 같은 데이터를 제공합니다:
- 주가 (Stock price)
- 시가 총액 (Market capitalization)
- 주가수익비율 (P/E ratio)
- 잉여 현금 흐름 (Free cash flow)
- 발행 주식 수 (Shares outstanding)
- 섹터 정보 (Sector information)
그 후 백엔드는 실제 밸류에이션 (Valuation)을 위해 이 데이터를 사용합니다.
Gemini는 해석을 처리합니다
Gemini에게는 금융 컨텍스트 (Financial context)가 주어지며, Tavily를 사용하여 다음과 같은 최신 정보를 조사합니다:
- 실적 (Earnings)
- 기업 발전 사항 (Company developments)
- 경쟁 위협 (Competitive threats)
- 촉매제 (Catalysts)
- 최근 뉴스 (Recent news)
이를 통해 훨씬 더 유용한 분리가 이루어집니다:
Financial APIs
↓
신뢰할 수 있는 수치 데이터
...
DCF 모델 구축하기
밸류에이션 (Valuation) 시스템의 핵심은 2단계 현금 흐름 할인 (Discounted Cash Flow, DCF) 모델입니다.
첫 번째 단계는 5년 동안의 잉여 현금 흐름 (Free cash flow)을 예측합니다.
기본 가정은 다음과 같습니다:
성장률 (Growth rate): 8%
할인율 (Discount rate): 9%
영구 성장률 (Terminal growth): 2.5%
...
예측된 현금 흐름은 현재 가치로 할인됩니다.
그 다음, 영구 성장 (Perpetual growth)을 기반으로 잔존 가치 (Terminal value)를 계산합니다.
개념적으로는 다음과 같습니다:
FCF₁ FCF₂ FCF₃ FCF₄ FCF₅
│ │ │ │ │
▼ ▼ ▼ ▼ ▼
...
그 후 주당 내재 가치 (Intrinsic value per share)를 현재 시장 가격과 비교합니다.
안전 마진 (Margin of Safety)
가장 유용한 결과물 중 하나는 **안전 마진 (Margin of safety)**입니다.
계산식은 다음과 같습니다:
안전 마진 (Margin of Safety) =
(내재 가치 - 현재 가격)
--------------------------------- × 100
...
예를 들어, 주식이 $100에 거래되고 있고 계산된 내재 가치가 $130이라면:
(130 - 100) / 100 × 100
= 30%
그러면 애플리케이션은 현재 시장 가격과 추정된 내재 가치 사이의 격차를 시각적으로 보여줄 수 있습니다.
이는 AI에게 단순히 예측을 요청하는 대신, 추론할 수 있는 정량적인(quantitative) 근거를 제공합니다.
Tavily를 이용한 웹 리서치 기능 추가
재무 수치만으로는 충분하지 않습니다.
최근에 중요한 변화가 발생했음에도 불구하고 기업의 가치 평가(valuation)가 매력적으로 보일 수 있기 때문입니다.
예를 들어:
- 주요 경쟁사가 신제품을 출시함
- 실적 가이드라인(earnings guidance)이 변경됨
- 기업이 중요한 고객을 잃음
- 규제가 산업에 영향을 미침
- 경영진이 주요 인수 합병(acquisition)을 발표함
그래서 저는 파이프라인에 Tavily Search를 추가했습니다.
AI는 자신의 투자 논거(thesis)를 생성하기 전에 해당 기업에 대한 최신 정보를 검색할 수 있습니다.
결과적인 워크플로우(workflow)는 다음과 같습니다:
재무 기본 지표 (Financial fundamentals)
+
DCF 가치 평가 (DCF valuation)
...
출력 결과에 소스 링크가 포함되는 이유도 바로 이것 때문입니다.
목표는 AI가 자신 있게 환각(hallucination)을 일으키며 설명을 늘어놓게 하는 것이 아닙니다.
목표는 실제 입력값(real inputs)을 제공하고 AI가 이를 합성(synthesize)하도록 하는 것입니다.
구조화된 AI 출력 (Structured AI Output)
Gemini에게 거대한 텍스트 블록을 반환하라고 요청하는 대신, 백엔드(backend)는 구조화된 정보를 기대합니다.
개념적으로는 다음과 같습니다:
{
"recommendation": "BUY",
"thesis": "...",
...
이렇게 하면 프론트엔드(frontend)를 구축하기가 훨씬 쉬워집니다.
UI는 다음과 같이 독립적으로 렌더링할 수 있습니다:
┌─────────────────────────────┐
│ BUY │
│ │
...
이는 프론트엔드에서 임의로 생성된 AI 텍스트를 파싱(parse)하려고 시도하는 것보다 훨씬 유연합니다.
기술 스택 (Tech Stack)
현재 프로젝트에서 사용하는 기술은 다음과 같습니다:
프론트엔드 (Frontend)
- Next.js 16
- React 19
- TypeScript
- Tailwind CSS v4
백엔드 (Backend)
- Python
- FastAPI
- Uvicorn
AI
- Gemini 2.5 Flash Lite
- LangChain
데이터 및 리서치 (Data & Research)
- Financial Modeling Prep
- Tavily Search
또한 이 프로젝트는 타이포그래피를 위해 Inter를 사용하며, 랜딩 페이지에는 비디오 배경을 사용합니다.
프로젝트 구조 (Project Structure)
저장소(repository)는 대략 다음과 같이 구성되어 있습니다:
Stock-Market-Analyser/
│
├── app/
...
FastAPI 백엔드는 API 라우트(routes), LangChain 툴링(tooling) 및 DCF 로직을 포함하며, Next.js 애플리케이션은 사용자 인터페이스(UI)와 결과 페이지를 처리합니다.
로컬에서 실행하기
다음 서비스들을 위한 API 키가 필요합니다:
- Financial Modeling Prep
- Google AI Studio / Gemini
- Tavily
다음 파일을 생성하세요:
app/.env
그리고 다음 내용을 추가하세요:
FMP_API_KEY=your_fmp_key_here
GOOGLE_API_KEY=your_gemini_key_here
TAVILY_API_KEY=your_tavily_key_here
그 다음 백엔드를 시작하세요:
cd app
pip install -r requirements.txt
...
FastAPI 서버는 다음에서 실행됩니다:
그 다음 프론트엔드를 시작하세요:
cd stockany
npm install
...
그리고 다음 주소를 여세요:
전체 설정 지침은 리포지토리(repository)에서 확인할 수 있습니다.
배운 점
이 프로젝트를 통해 얻은 가장 큰 교훈은 AI 애플리케이션이 반드시 LLM(Large Language Model)이 모든 것을 수행하도록 할 필요는 없다는 것입니다.
훨씬 더 나은 접근 방식은 종종 다음과 같습니다:
전통적인 소프트웨어 (Traditional software)
+
API
...
DCF(현금흐름할인법) 계산은 결정론적(deterministic)입니다.
재무 데이터는 API로부터 가져옵니다.
웹 리서치는 검색 시스템으로부터 가져옵니다.
LLM은 이러한 구성 요소들 위에 위치하며, 정보를 인간이 이해할 수 있는 형태로 변환합니다.
이러한 아키텍처(architecture)는 단순히 LLM에게 주식 예측을 프롬프팅(prompting)하는 것보다 애플리케이션을 훨씬 더 근거 있는(grounded) 상태로 만듭니다.
다음 단계는?
개선하고 싶은 몇 가지 사항이 있습니다:
과거 밸류에이션 (Historical valuation)
현재의 밸류에이션(valuation)만 보는 대신, 주식을 과거의 멀티플(multiples)과 비교해보고 싶습니다.
더 많은 밸류에이션 모델
다음 항목들을 추가하면 밸류에이션을 더욱 견고하게 만들 수 있습니다:
- P/E 밸류에이션
- EV/EBITDA
- Price-to-Free-Cash-Flow
- 유사 기업 비교 분석 (Comparable company analysis)
더 나은 AI 추론 (AI reasoning)
다음 단계는 모델에게 더 구조화된 재무제표에 대한 접근 권한을 주고, 어떤 가정이 밸류에이션을 이끄는지를 명시적으로 설명하게 하는 것입니다.
포트폴리오 분석
궁극적으로 사용자가 여러 티커(tickers)를 입력하고 이를 나란히 비교할 수 있도록 하고 싶습니다.
마치며
StockAny AI는 **금융 분석 (financial analysis)과 에이전트형 AI (agentic AI)**를 결합하려는 실험으로 시작되었지만, 결과적으로 AI 제품을 구축하는 것에 대해 더 중요한 무언가를 가르쳐 주었습니다.
흥미로운 점은 단순히 LLM API를 호출하는 것이 아닙니다.
LLM이 **적절한 도구 (tools), 적절한 데이터 (data), 그리고 적절한 제약 조건 (constraints)**에 접근할 수 있는 시스템을 설계하는 것입니다.
이 프로젝트를 위해 다음과 같은 요소들을 결합했습니다:
FMP → 금융 데이터 (financial data)
DCF → 가치 평가 (valuation)
Tavily → 최신 정보 (recent information)
Gemini → 추론 및 합성 (reasoning and synthesis)
FastAPI → 백엔드 오케스트레이션 (backend orchestration)
Next.js → 사용자 경험 (user experience)
그 결과, 전통적인 소프트웨어와 생성형 AI (generative AI)가 어떻게 함께 작동할 수 있는지 보여주는 작지만 완벽한 사례가 탄생했습니다.
구현 내용을 확인하고 싶으시다면:
👉 GitHub: https://github.com/iPrq/Stock-Market-Analyser
👉 Youtube:
이 프로젝트에 다음에 무엇을 추가하고 싶은지 여러분의 의견을 듣고 싶습니다.
면책 조항: StockAny AI는 교육 및 정보 제공 목적의 프로젝트입니다. 이 프로젝트의 출력물은 금융 자문이 아니며, 투자 결정 시에는 항상 독립적인 조사가 수반되어야 합니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기