본문으로 건너뛰기

© 2026 Molayo

Dev.to헤드라인2026. 06. 16. 22:43

Finance Toolkit(Python 라이브러리 + MCP 서버)으로 200개 이상의 금융 지표 활용하기

요약

금융 지표의 불일치 문제를 해결하기 위해 투명한 계산 로직을 제공하는 오픈 소스 Python 라이브러리 'Finance Toolkit'을 소개합니다. 이 도구는 200개 이상의 지표를 지원하며, MCP 서버를 통해 AI 어시스턴트가 직접 금융 데이터를 활용할 수 있도록 설계되었습니다.

핵심 포인트

  • 200개 이상의 금융 지표를 직접 감사 가능한 코드로 구현
  • 주식, 옵션, 암호화폐, 거시 경제 등 광범위한 데이터 지원
  • MCP 서버 지원으로 AI 어시스턴트와의 자연스러운 데이터 연동 가능
  • Python 라이브러리 및 MCP 도구 형태로 제공

2023년 5월 6일, Microsoft의 주가수익비율 (Price-to-Earnings ratio)은 Stockopedia에서는 28.93, Morningstar에서는 32.05, Macrotrends에서는 32.66, Wall Street Journal에서는 33.67, 그리고 Companies Market Cap에서는 34.4로 보고되었습니다. 이 숫자들은 모두 "정확"합니다. 단지 이익 (earnings)에 대한 정의, 주식 수 (share counts), 그리고 반올림 방식이 서로 다를 뿐입니다. 어떤 제공업체도 공식을 공개하지 않기 때문에, 여러분이 실제로 원하는 계산 방식과 어떤 것이 일치하는지 알 방법이 없습니다.

이러한 불일치 때문에 저는 Finance Toolkit을 구축했습니다. 이는 모든 비율 (ratio), 지표 (indicator), 모델 (model)이 직접 감사할 수 있는 평이하고 읽기 쉬운 코드로 구현된 오픈 소스 Python 라이브러리입니다. 이 라이브러리는 30년 이상의 재무제표 (financial statements)를 바탕으로 주식 (equities), 옵션 (options), 통화 (currencies), 암호화폐 (crypto), ETF, 지수 (indices), 그리고 1세기 이상 거슬러 올라가는 거시 경제 (macroeconomic) 데이터에 걸쳐 200개 이상의 지표를 다룹니다. 이 라이브러리 위에는 Model Context Protocol (MCP)을 지원하는 모든 AI 어시스턴트에게 동일한 200개 이상의 지표를 노출하는 MCP 서버가 구축되어 있어, 여러분(또는 여러분의 어시스턴트)이 Python 코드를 작성하는 것과 일반적인 영어로 질문하는 것 사이에서 고민할 필요가 없습니다.

모든 계산에 대한 소스 코드는 GitHub에 있습니다. MCP 서버 문서는 여기에서 확인할 수 있습니다.

설정하기

Python 라이브러리와 MCP 서버는 두 개의 서로 다른 입구를 가진 동일한 엔진입니다. MCP 도구 호출 (tool calls)을 나중에 더 쉽게 이해할 수 있도록 Python 측부터 시작해 보겠습니다.

먼저 Finance Toolkit을 설치하여 시작하세요:

pip install financetoolkit -U

그런 다음 라이브러리를 임포트(import)하고 Toolkit 인스턴스를 생성합니다. 아래의 각 섹션은 하나의 일관된 API가 얼마나 폭넓은 데이터를 가져올 수 있는지 보여주기 위해 서로 다른 티커 (ticker) 유니버스를 교체하여 사용하지만, 구문 (syntax)은 절대 변하지 않습니다.

from financetoolkit import Toolkit

companies = Toolkit(
...

jeroenbouma.com/fmp에서 FMP API 키를 받으세요. 무료 플랜은 5년의 히스토리와 하루 250회의 요청을 제공하며, 유료 플랜을 사용하면 30년 이상의 전체 데이터와 분기별 데이터를 사용할 수 있습니다. 해당 (제휴) 링크를 통해 15% 할인을 받을 수 있습니다. 또한, 본인만의 데이터를 제공할 수 있는 방법도 제공하고 있으니 여기를 참조하세요.

코드에서 대화로: MCP 서버

Python을 작성하는 것이 항상 가장 빠른 답변을 얻는 방법은 아니며, AI 어시스턴트가 금융 데이터를 스스로 정확하게 추론하도록 만드는 것은 대개 한계가 있습니다. 웹 검색은 신뢰할 수 없고, 스크래핑된 데이터는 출처마다 일관성이 없으며(위의 PE 예시 참조), 모델은 숫자를 찾지 못할 때 환각 (Hallucination) 현상을 일으킵니다. Finance Toolkit MCP 서버는 라이브러리의 투명한 계산 방식에 기반하여, MCP 호환 어시스턴트에게 200개 이상의 동일한 지표에 대한 직접적이고 구조화된 접근 권한을 부여함으로써 이 문제를 해결합니다.

이를 사용하기 위해 로컬 Python 환경이 필요하지는 않습니다. 단 한 줄의 명령어로 AI 클라이언트를 자동으로 설정할 수 있습니다:

uvx --from "financetoolkit[mcp]" financetoolkit-mcp-setup

이 방식은 Claude Desktop, Claude Code, VS Code의 GitHub Copilot, Cursor, Windsurf, 그리고 Gemini를 지원합니다. 특히 Claude Desktop을 사용하는 경우, 터미널을 완전히 건너뛸 수 있는 원클릭 MCPB 번들이 최신 GitHub 릴리스에 준비되어 있습니다. 어떤 방식을 사용하든 위에서 사용한 것과 동일한 FMP API 키를 입력해야 하며, 시작하기에는 무료 플랜으로도 충분합니다.

서버가 실행되면, 서버는 200개 이상의 Finance Toolkit 메서드들을 약 21개의 범주형 도구(categorical tools)로 그룹화합니다. 사용자가 직접 함수 이름을 지정하거나 파라미터(parameter)를 설정할 필요는 없습니다. 어시스턴트(assistant)가 질문에서 적절한 도구를 선택하고 구조화된 출력(structured output)을 반환합니다. 해석의 깊이는 모델에 따라 달라집니다. Claude Sonnet은 수치 데이터 위에 질적 추론(qualitative reasoning)을 덧입히는 반면, GPT-5 mini와 같은 더 작은 모델들은 서술 없이 깔끔한 구조화된 데이터만을 반환합니다. 서버는 두 모델을 모두 지원하도록 설계되었으므로 둘 다 잘 작동합니다.

Claude Desktop 내에서 설정이 완료되면 다음과 같이 보입니다.

Once everything is setup, you should see the Finance Toolkit as one of the available connectors.

주식 분석: 마진, 수익률, 멀티플(Multiples) 비교

Finance Toolkit은 주식 리서치(equity research)를 최우선으로 구축되었으며, 이것이 이 카테고리가 가장 심도 있게 구성된 이유입니다. 수익성(profitability), 밸류에이션(valuation), 효율성(efficiency), 유동성(liquidity) 및 지급 능력(solvency) 비율을 비롯하여 WACC, 듀퐁 분석(DuPont decomposition), Altman Z-Score, Piotroski F-Score와 같은 모델들이 포함되어 있습니다. 이러한 지표들을 테스트하기 위한 좋은 스트레스 테스트(stress test) 대상은 명목상 동일한 업종에 속해 있음에도 성장률이 극명하게 갈리는 산업, 즉 반도체 산업입니다.

from financetoolkit import Toolkit

chips = Toolkit(
...

결과값은 다음과 같습니다:

티커 (Ticker)누적 수익률 (2015-2025)P/E (2025)EV/EBITDA (2025)EPS 성장률 (2025)주당 매출 (Revenue/Share) (2025)
NVDA+42,215%63.5x55.5x+146.2%$5.26
...

여기서 핵심은 단일 산업 내의 분산(dispersion)입니다. NVDA는 2015년의 포지션을 시작 가치의 약 421배로 전환시킨 반면, INTC는 (NVDA와 비교했을 때) 10년 후에도 사실상 제자리걸음이며, 순손실을 기록하여 P/E가 음수로 보고되었고 2025년 한 해에만 EPS가 98.75% 폭락했습니다. AVGO의 286.2% EPS 성장률은 NVDA조차 앞지르는데, 이는 유기적인 칩 판매 성장보다는 AI 네트워킹 비즈니스 위에 쌓인 VMware 인수 효과를 반영하므로, 헤드라인 수치를 너무 깊게 해석하기 전에 이를 구분해낼 필요가 있습니다. ASML은 절대적 성장 측면에서 그룹 내에서 가장 느린 주당 매출(revenue-per-share) 기반을 가지고 있음에도 불구하고, 그룹 내에서 가장 높은 EV/EBITDA 배수(28.0x)로 거래되고 있습니다. 이는 모든 첨단 팹(fab)이 의존하는 EUV 노광 장비에 대한 시장의 실질적인 독점권에 부여된 프리미엄입니다.

Finance Toolkit MCP와의 호출은 아래와 같은 답변을 반환합니다.

Semiconductors went from a cyclical industrial sector to the backbone of AI infrastructure over the last decade and the market priced that transition in full. NVDA and AMD returned over 150x since 2015 while the S&P 500 compounded quietly at the bottom of the same chart.

기술적 분석 (Technical Analysis): 시장이 과매수 상태인가?

기술적 지표(Technical indicators)는 OHLC 가격 데이터를 기반으로 작동하므로, Toolkit이 지원하는 모든 자산군에 적용될 수 있으며 주식에만 국한되지 않습니다. RSI, MACD, 스토캐스틱 오실레이터(Stochastic Oscillator), 볼린저 밴드(Bollinger Bands)가 모두 사용 가능하며, 모멘텀(momentum), 변동성(volatility), 오버랩(overlap)과 같은 카테고리로 그룹화되어 있습니다. 모멘텀 지표에 대한 가장 명확한 스트레스 테스트는 시장 충격(market shock)이므로, 여기서는 2020년 코로나 폭락과 그 다음 해를 거치는 유럽 섹터 ETF를 살펴봅.

from financetoolkit import Toolkit

sectors = Toolkit(
...

이것들은 iShares STOXX Europe 600 섹터 UCITS ETF들입니다: EXV9.DE (여행 및 레저 (Travel & Leisure)), EXV1.DE (은행 (Banks)), EXV4.DE (헬스케어 (Health Care)), EXI5.DE (부동산 (Real Estate)), EXV3.DE (기술 (Technology)), EXH9.DE (유틸리티 (Utilities)), 그리고 EXH1.DE (석유 및 가스 (Oil & Gas))입니다.

수익률은 다음과 같습니다:

날짜여행 및 레저은행헬스케어부동산기술유틸리티석유 및 가스
2019-1263.351.477.070.472.789.751.1
...

석유 및 가스 (Oil & Gas) 섹터는 위기 전체 기간 동안 가장 과매도 (oversold)된 섹터였으며, 전형적인 과매도 기준선인 30을 훨씬 밑도는 2020년 9월 RSI 19.3에서 바닥을 찍었습니다. 여행 수요의 급락이 연료 수요로 직결됨에 따라 해당 섹터는 연중 대부분의 기간 동안 저점에 머물러 있었습니다. 은행 (Banks) 섹터가 그 뒤를 바짝 쫓았는데, 2020년 6월에 26.2로 저점을 형성한 후 11월이 되어서야 40 선 위로 다시 올라왔으며, 이는 여기에 나열된 다른 어떤 섹터보다 회복에 더 오랜 시간이 걸린 것입니다. 헬스케어 (Health Care)와 기술 (Technology) 섹터는 2020년 3월 폭락의 최악의 상황에서도 과매도 수준에 근접조차 하지 않았으며, RSI 바닥이 각각 65.9와 53.2를 기록했는데, 이는 이 데이터셋에서 안전 자산 선호 (flight-to-quality) 신호에 가장 가까운 모습이었습니다.

더욱 놀라운 부분은 반전입니다. 가장 크게 바닥을 쳤던 동일한 두 섹터인 석유 및 가스 (Oil & Gas)와 은행 (Banks)은 모두 2021년 말에 각각 76.3과 79.5라는 과매수 (overbought) 영역 깊숙이 마감하며, 18개월 동안 약 50에서 60 RSI 포인트의 변동을 보여주었습니다. 이것이 바로 단일 시점의 RSI 수치로는 절대 포착할 수 없는 체제 변화 (regime change)의 종류입니다. 이는 전체 시계열 (series)을 불러올 때만 나타납니다.

Finance Toolkit MCP와의 대화가 제가 의미하는 바를 보여줍니다:

The COVID crash was swift but uneven. Airlines collapsed into extreme oversold territory with RSI hitting 22 in April 2020. Alevel that signals panic selling, not fundamental repricing. Technology barely dipped. Oil & Gas, untouched by the initial shock, swung to RSI 91 a year later as the energy cycle turned.

리스크와 성과: Fama-French 요인이 남미 주식에 대해 밝혀내는 것

베타(Beta)와 알파(Alpha)만으로는 "시장"을 유일하게 중요한 체계적 위험(Systematic Risk)으로 취급합니다. Fama-French 5요인 모델(Fama-French five-factor model)은 여기서 더 나아가, 수익률을 시장 노출도(Mkt-RF), 기업 규모(SMB), 가치 대 성장(HML), 수익성(RMW), 투자 강도(CMA)로 분해하며, 여기에 해당 조합이 실제 수익률을 얼마나 설명하는지를 나타내는 결정계수(R-squared)를 추가합니다. 남미 주식은 원자재 수출 기업, 은행, 그리고 지역의 나머지 기업들과는 전혀 다르게 움직이는 기술주가 섞여 있기 때문에 좋은 테스트 케이스가 됩니다.

from financetoolkit import Toolkit

south_america = Toolkit(
...

2025년 기준 수익률:

TickerMkt-RFSMBHMLRMWCMA
ITUB (Itau, bank)0.0167-0.0023-0.0071-0.0116-0.00510.683
...

여기서 R-squared(결정계수) 열이 가장 유용한 지표인데, 이는 해당 행의 나머지 데이터가 얼마나 신뢰할 수 있는지를 알려주기 때문입니다. ITUB의 2025년 회귀 분석(Regression)은 이 다섯 가지 요인을 통해 수익률 분산(Return Variance)의 68.3%를 설명하며, 이는 그룹 내에서 가장 높은 수치이자 수익률이 광범위한 위험 요인을 밀접하게 따르는 대형 유동성 은행의 전형적인 모습입니다. 반면 MELI는 정반대의 극단에 위치합니다. 모델이 설명하는 수익률은 12.2%에 불과하며, 이는 해당 기업의 가격 움직임이 규모, 가치, 또는 투자 스타일 노출보다는 개별적 성장 서사(Idiosyncratic growth narrative)와 실적 서프라이즈에 의해 훨씬 더 많이 좌우된다는 점과 일치합니다.

단일 스냅샷이 아닌 연도별 추세를 살펴보면 그 격차는 더욱 벌어집니다:

Ticker20212022202320242025
MELI R²0.6190.3470.2130.3340.122
...

MELI의 결정계수 (R-squared)는 2021년 0.619에서 0.122로 거의 매년 하락했습니다. 이는 해당 주식이 전통적인 위험 요인 (risk factors)으로부터 더욱 분리됨에 따라, 5요인 모델 (five-factor model)이 설명하는 수익률의 비중이 시간이 갈수록 점점 줄어들고 있음을 의미합니다. 반면 VALE와 SCCO는 정반대의 패턴을 보여주는데, 두 광산 기업이 원자재 사이클 (commodity cycle) 동안 광범위한 시장 및 가치 스타일 위험 (value-style risk)과 더 밀접하게 연결됨에 따라 지난 5년 동안 설명력이 대략 3배 증가했습니다. 이러한 현상은 베타 (beta)나 알파 (alpha) 계산만으로는 나타나지 않으며, 이것이 단일 요인 CAPM (Capital Asset Pricing Model)에서 멈추지 않고 전체 요인 모델 (full factor model)을 실행해야 하는 이유입니다.

Finance Toolkit MCP와의 호출은 아래와 같은 답변을 반환합니다. LLM이 다른 시간 범위를 선택했기 때문에 위 표의 결과와 불일치가 발생한다는 점에 유의하세요.

AI 자동 생성 콘텐츠

본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0