[ blog · tutorial ]12 min read

투자 리서치 에이전트 만들기: 시장·재무·SEC·경제 데이터를 하나의 API로

Sarah Choy2026년 6월 16일 게시12분 분량
투자 리서치 에이전트 만들기: 시장·재무·SEC·경제 데이터를 하나의 API로

투자 리서치 에이전트는 다섯 가지 데이터 계층 — 가격, 재무, 공시, 매크로, 뉴스 — 이 필요하고, 보통 각각이 별개의 벤더·키·스키마다. 이 다섯을 하나의 엔드포인트 세트 뒤에 엮는 법을, 동작하는 코드와 비용 계산과 함께 다룬다.

한눈에

  • 쓸 만한 금융 에이전트는 다섯 데이터 계층이 필요하다: 실시간 시장(가격), 기업 재무(재무제표), SEC 공시, 경제 지표, 뉴스. 별개 벤더를 엮으면 계약 5개, 키 5개, 스키마 5개다.
  • API Pick은 이 다섯을 일관된 JSON 검색 엔드포인트로 노출한다 — /search/markets, /search/financials, /search/sec, /search/economic, /search/news — 거기에 전체 문서를 위한 /extract까지. 키 하나, LLM 도구 호출에 맞게 미리 다듬어진 형태로.
  • 에이전트 패턴: 관련 엔드포인트를 도구로 병렬 호출하고, JSON을 병합하고, 모델이 숫자를 환각하는 대신 근거 있는 데이터 위에서 추론하게 하라.
  • 크레딧 가격은 성공 시에만 과금된다: 호출당 markets 120, financials 200, sec 120, economic 50, news 15. 전형적인 멀티툴 리서치 턴은 깊이에 따라 $0.01~$0.10보다 한참 아래다.
  • 자체 구축 대 구매: Polygon + 재무 벤더 + SEC EDGAR + FRED + 뉴스 API를 직접 조립하면 수 주의 통합과 월 5건의 청구서다. 단일 엔드포인트 경로는 하루다.

다섯 계층 문제

LLM에게 "NVIDIA 지금 비싼가?"라고 물으면 자신만만하게 P/E 비율을 지어낼 것이다. 해법은 더 큰 모델이 아니라 근거다. 신뢰를 얻는 리서치 에이전트는 다섯 계층에 걸쳐 라이브로 인용된 데이터를 끌어온 다음 그 위에서 추론해야 한다:

  • 시장 — 현재 가격, 시가총액, 어떻게 움직였는지. 필요할 때 암호화폐, 외환, ETF, 그날의 변동 종목.
  • 재무 — 재무상태표, 손익계산서, 현금흐름표, 배당, 내부자 거래. "사업이 실제로 건강한가" 계층.
  • SEC 공시 — 10-K 리스크 요인, 10-Q 상세, 8-K 이벤트, 실적 발표 언어. 숫자가 놓치는 정성적 차원.
  • 경제 지표 — FRED, BLS, World Bank, IMF의 금리, 인플레이션, 고용, GDP. 모든 논지가 그 안에 자리하는 매크로 배경.
  • 뉴스 — 시의성 있는 촉매: 등급 하향, 제품 출시, 규제 조치.

별개 벤더를 엮으면 그건 계약 5개, API 키 5개, 레이트리밋 체계 5개, 모델이 손대기 전에 정규화해야 하는 응답 스키마 5개다. 금융 에이전트 프로젝트가 멈추는 곳이 바로 이 통합이다.

하나의 엔드포인트 세트, 다섯 계층

API Pick은 각 계층을 일관된 JSON 검색 엔드포인트로 노출하므로, 에이전트는 키 하나와 응답 형태 하나에 대고 말한다:

  • Markets Search — 글로벌 & 미국 주식, 암호화폐, 외환, ETF, 펀드, 원자재, 미국 시장 변동 종목.
  • Financials Search — 재무상태표, 손익계산서, 현금흐름, 배당, 내부자 거래.
  • SEC Filings Search — 10-K/10-Q/8-K, 실적 발표 트랜스크립트, 주식 통계.
  • Economic Data Search — FRED, BLS, World Bank, IMF, USAspending, Destatis.
  • News Search — 주요 매체 전반의 날짜 필터 뉴스.
  • Extract — 스니펫으로 부족할 때 공시나 기사 전체를 깔끔한 마크다운으로 끌어온다.

에이전트 아키텍처

각 엔드포인트를 도구로 등록하라. 질문이 들어오면 에이전트는 어떤 계층이 필요한지 판단해 병렬로 호출하고, JSON을 병합하고, 근거 있는 결과 위에서 추론한다. 티커 질문은 시장 + 재무 + 뉴스를 치고, "섹터가 어떻게 포지셔닝됐나" 질문은 경제 + 뉴스 + 비교 대상 몇 개를 친다.

import asyncio, httpx, os

API = "https://api.apipick.com/v1"
HEADERS = {"x-api-key": os.environ["APIPICK_KEY"], "Content-Type": "application/json"}

async def search(client, path, query, **kw):
    r = await client.post(f"{API}/{path}", headers=HEADERS,
                          json={"query": query, **kw})
    r.raise_for_status()
    return r.json()["results"]

async def research(ticker: str):
    async with httpx.AsyncClient(timeout=30) as c:
        markets, fundamentals, filings, macro, news = await asyncio.gather(
            search(c, "search/markets",    f"{ticker} price and market cap"),
            search(c, "search/financials", f"{ticker} latest balance sheet and cash flow"),
            search(c, "search/sec",        f"{ticker} 10-K risk factors", end_date="2026-06-16"),
            search(c, "search/economic",   "US interest rates and inflation latest"),
            search(c, "search/news",       f"{ticker} latest news", end_date="2026-06-16"),
        )
    return {"markets": markets, "fundamentals": fundamentals,
            "filings": filings, "macro": macro, "news": news}

# Feed the merged JSON back to your LLM as grounding, with the source URLs,
# and ask it to synthesize — never to recall numbers.
context = asyncio.run(research("NVDA"))

각 결과는 source URL을 담는다. 그것을 최종 답변까지 통과시켜 인간이 모든 주장을 감사할 수 있게 하라 — 그래야 에이전트 산출물이 인용 가능해지고, 그것이 실제 워크플로에서 쓸모 있게 만드는 요소다.

자체 구축 대 구매

직접 조립API Pick
벤더 / 키~5개(Polygon, 재무, EDGAR, FRED, 뉴스)1개
응답 형태정규화할 5개JSON 형태 1개
첫 에이전트까지 시간수 주의 통합하루
과금월 구독 5건호출당, 성공 시에만
LLM 준비도각각 직접 다듬어야미리 다듬어진 스니펫 + 소스 URL

단일 데이터 타입이라면 직접 가는 게 합리적이다. 다섯 가지 모두가 필요하고 예측 불가하게 탐색하는 에이전트라면, 단일 엔드포인트 경로는 하루 만에 출시되고 호출이 성공할 때만 과금한다.

이게 무엇을 가능하게 하나

같은 다섯 도구는 티커 조회 이상을 굴린다: 실적 시즌 브리핑 에이전트, 재무에 근거한 섹터 스크린, 매크로를 인식하는 포트폴리오 코멘터리, 그리고 Extract로 실제 10-K를 읽는 실사 어시스턴트. 패턴은 늘 똑같다 — 근거 있는 도구 호출, 병렬 검색, 소스를 붙인 실제 데이터 위에서의 종합.

무료 키(100 크레딧, 카드 불필요)로 시작해 다섯 도구를 원하는 에이전트 프레임워크에 연결하라. 거기서부터는 배관이 아니라 프롬프트 엔지니어링이다.

자주 묻는 질문

투자 리서치 에이전트는 실제로 어떤 데이터가 필요한가?

다섯 계층이다. (1) 실시간 시장 — 가격, 암호화폐, 외환, ETF, 변동 종목, '지금 어떻게 움직이고 있나' 질문용. (2) 재무 — 재무상태표, 손익계산서, 현금흐름표, 배당, 내부자 거래. (3) SEC 공시 — 정성적 신호를 위한 10-K/10-Q/8-K 텍스트와 실적 발표 트랜스크립트. (4) 경제 지표 — 매크로 배경을 위한 FRED, BLS, World Bank, IMF. (5) 뉴스 — 시의성 있는 촉매. 대부분의 에이전트가 실패하는 이유는 가격은 있는데 재무가 없거나, 재무는 있는데 매크로 맥락이 없어서다.

Polygon, FRED, SEC EDGAR를 그냥 직접 호출하면 안 되나?

할 수 있다 — 단일 데이터 타입이라면 괜찮다. 고통은 에이전트가 다섯 가지 모두 필요하다는 데서 온다. 그건 벤더 5개, 인증 스킴 5개, 레이트리밋 체계 5개, LLM이 쓰기 전에 정규화해야 하는 응답 형태 5개, 청구서 5개다. 단일 엔드포인트 접근은 호출당 약간의 프리미엄을 치르는 대신 키 하나, JSON 형태 하나, 성공 시에만 과금 — 탐색적 멀티툴 호출을 하는 에이전트에게는 보통 더 싸고 훨씬 빠르게 출시하는 길이다.

LLM이 재무 숫자를 환각하지 않게 하려면?

절대 모델이 기억에서 수치를 만들어내게 하지 말라. 각 데이터 소스를 도구로 만들고, 에이전트가 그 도구를 호출하도록 강제하고, 반환된 JSON을 근거로 되먹여라. 모델의 일은 가져온 값을 추론하고 종합하는 것이지 떠올리는 게 아니다. 각 결과의 소스 URL을 인용해 산출물을 감사 가능하게 하라 — 그것이 인간 리뷰어에게 답을 신뢰할 만하게 만드는 것이기도 하다.

산출물을 실제 거래나 자문에 써도 되나?

아니다. 검색 API 산출물은 정보성이다. 애널리스트나 에이전트의 추론을 실제 데이터에 근거시키지만, 투자 자문이 아니며 자격 있는 사람과 적절한 리스크 통제 없이 자동 거래 신호로 써서는 안 된다. 에이전트를 의사결정자가 아니라 리서치 가속기로 다뤄라.

리서치 턴 하나의 비용은 얼마인가?

성공한 호출당 과금이다: markets 120 크레딧, financials 200, sec 120, economic 50, news 15(1000 크레딧 ≈ $1). markets + 재무 + 뉴스를 치는 집중된 턴은 ~335 크레딧(~$0.34)이고, 더 가벼운 매크로+뉴스 턴은 ~65 크레딧이다. HTTP 200에만 과금되므로 실패하거나 비어 있는 호출은 비용이 0 — 에이전트가 탐색할 때 중요한 지점이다.

이 글에서 사용한 API

Sarah Choy
작성
Sarah Choy
CEO, API Pick

Sarah Choy는 API Pick의 CEO입니다. AI 에이전트와 LLM 워크플로를 위한 프로덕션 등급 API에 대해 씁니다.