FinAgent Lab

[crawling] 해외 기업 재무제표 crawling 해오기

dong_seok 2025. 3. 25. 23:25
반응형

국내 주식을 대상으로 Agent를 개발하던 중 대상이 해외 종목으로 바뀌면서, 기존에 "한경컨센서스"에서 가져오던 재무제표 데이터를 새로운 출처에서 확보해야 했습니다. 이 과정에서 발견한 유용한 해외 종목 데이터 사이트들과 크롤링 과정을 소개합니다.

 

1. 해외 기업 데이터 사이트 소개

1) Macrotrends

Macrotrends는 미국 기업들의 재무정보를 무료로 제공하는 사이트입니다. 중앙 검색창을 통해 원하는 기업을 찾으면 해당 기업의 재무 데이터를 종합적으로 확인할 수 있습니다.

 

 

중앙 서치바를 통한 기업 검색을 통해 해당 기업의 매출, 이익, 가격 지표 등 다양한 데이터를 확인할 수 있습니다.

 

 

주요 특징:

  • 기업의 과거 15년 치 데이터 제공 (매출, 순이익, 자산, 부채, 현금흐름 등)
  • 모든 주요 재무 정보를 한눈에 확인 가능
  • 과거와 현재 비교를 통한 장기 추세 분석 가능
  • 간편한 데이터 검색 및 비교 기능
  • 직관적인 그래프와 차트 제공

 

2) DataRoma

DataRoma는 기관 투자자들의 포트폴리오 정보를 분석할 수 있는 플랫폼입니다. 운영 자산 규모 1억 달러 이상의 기관 투자자들은 매 분기 말 45일 이내에 증권 포트폴리오 정보를 SEC에 제출해야 하며, DataRoma는 이 데이터를 활용해 투자 대가들의 매매 동향을 추적합니다.

 

 

주요 특징:

  • 여러 포트폴리오에 반복 등장하는 종목의 신뢰도 평가 가능
  • 분기별로 업데이트되는 포트폴리오 변화 추적
  • 투자자들의 전략 분석 가능
  • 'Top 10 stocks by %' 기능을 통해 중점 투자 종목 파악
  • 개별 투자자 포트폴리오 세부 분석 제공

 

3) Value Investors Club

Value Investors Club은 실력 있는 가치 투자자들이 모여 투자 아이디어와 심층 기업 분석을 공유하는 커뮤니티입니다. 이 사이트는 기업 분석을 작성하는 회원과 열람만 가능한 회원으로 구분됩니다. 분석 작성 회원은 엄격한 심사를 통과해야 하지만, 열람 회원은 간단한 회원가입만으로도 양질의 기업 분석 자료에 접근할 수 있습니다.

 

 

2. 데이터 사이트 및 재무제표 데이터 선정

앞서 말했듯 유용한 데이터 사이트가 많았지만, 저는 이중에서 macrotrends를 선택했습니다. DataRoma와 Value Investors Club도 유용했지만, 저는 LLM에게 제공해줄 객관적인 데이터가 필요했기 때문에, 타인의 의견이 포함되지 않고 오직 데이터만을 객관적으로 표현한 macrotrends를 선택했습니다. 그리고 재무제표에 지표가 너무 많기 때문에 그 중 투자 판단을 내리는데 도움을 줄 수 있는 값들만 따로 선정하였습니다.

 

1) 대차대조표(Balance Sheet)

  • Cash On Hand: 회사가 보유한 현금과 즉시 현금화 가능한 자산
  • Long Term Debt: 1년 이상의 상환 기간을 가진 회사의 장기 부채
  • Share Holder Equity: 주주들이 소유한 회사 가치(자산-부채)
  • Total Assets: 회사가 소유한 모든 자산의 총합
  • Total Current Assets: 1년 내에 현금화 가능한 단기 자산
  • Total Current Liabilities: 1년 내에 갚아야 하는 단기 부채
  • Total Liabilities: 회사의 모든 부채 총합
  • Total Liabilities And Share Holders Equity: 부채와 자본의 총합(자산 총계와 일치)

2) 현금흐름표(Cash Flow)

  • Cash Flow From Financial Activities: 자금조달 활동(대출, 주식발행 등)으로 인한 현금흐름
  • Cash Flow From Investing Activities: 투자 활동(자산 구매/매각)으로 인한 현금흐름
  • Cash Flow From Operating Activities: 영업 활동에서 발생한 현금흐름
  • Net Cash Flow: 모든 현금흐름을 합산한 순 현금흐름

3) 재무비율(Financial Ratios)

  • Book Value Per Share: 주당 순자산 가치(자기자본÷발행주식수)
  • Current Ratio: 유동비율(유동자산÷유동부채), 단기 지급능력 지표
  • Debt/Equity Ratio: 부채비율(총부채÷자기자본), 재무 레버리지 지표
  • Free Cash Flow Per Share: 주당 잉여현금흐름, 배당여력 평가 지표
  • Gross Margin: 매출총이익률((매출-매출원가)÷매출), 기본 수익성 지표
  • Net Profit Margin: 순이익률(순이익÷매출), 최종 수익성 지표
  • Operating Margin: 영업이익률(영업이익÷매출), 핵심사업 수익성 지표
  • ROA: 총자산수익률(순이익÷총자산), 자산 활용 효율성 지표
  • ROE: 자기자본수익률(순이익÷자기자본), 주주투자 수익성 지표

4) 손익계산서(Income Statement)

  • Basic EPS: 기본 주당순이익(순이익÷보통주식수)
  • EBIT: 이자 및 세전이익, 영업성과 평가 지표
  • EBITDA: 이자, 세금, 감가상각비 차감 전 이익, 현금창출능력 지표
  • EPS: 주당순이익, 주주에게 돌아가는 이익 지표
  • Gross Profit: 매출총이익(매출-매출원가)
  • Net Income: 당기순이익, 모든 비용 차감 후 최종 이익
  • Operating Income: 영업이익, 본업에서 발생한 이익
  • Pre-Tax Income: 세전이익, 세금 납부 전 이익
  • Revenue: 매출액, 주요 사업활동으로 발생한 총수입

3. 재무제표 추출하기

선정한 지표들에 대한 값을 crawling으로 가져오도록 하겠습니다. 이 부분에서 고민을 되게 많이했는데, 처음에는 RSS feed 활용법으로 접근했습니다.

 

 

원하는 지표를 클릭하고 우측 'View Reports'를 선택하면 보고서 모음 화면으로 이동합니다.

 

 

이후 검색된 보고서들에 대해 RSS Feed를 활용해 XML 파일에 포함된 보고서별 링크를 통해 필요한 데이터만 파싱하려 했습니다. 그러나 이 방법에는 큰 문제가 있었습니다. 기업별로 보고서 형식과 재무제표 구성이 상이했던 것입니다. 동일한 재무지표라도 기업마다 사용하는 태그나 명칭이 달라 일관된 크롤링이 어려웠습니다. 이런 문제를 해결하기 위해 공시 데이터를 구조화된 형태로 제공하는 표준 포맷인 XBRL을 활용해보려 했습니다. XBRL은 이전보다 통일된 형식을 제공했지만, 여전히 기업마다 차이가 존재했습니다. 결국 모든 기업에서 공통적으로 사용하는 표준 명칭이 필요하다고 판단했습니다. 이에 처음 검색 결과 화면에 표시되는 데이터를 기준으로 크롤링하는 방법을 선택했습니다. 이 방법을 통해 일관된 형식의 재무지표 데이터를 수집할 수 있었습니다.

 

 

참고자료

https://www.youtube.com/watch?v=Mm5dw9JPBxs

 

 

 

반응형

'FinAgent Lab' 카테고리의 다른 글

[LLM] context 기반 답변 비교  (0) 2025.03.27
[DB] Postgresql DB 구축하기  (0) 2025.03.26