yfinance(Python)란 무엇인가?

파이썬 생태계에서 주식 데이터를 다루는 가장 손쉬운 방법 중 하나는 바로 yfinance-Python입니다. 이는 Yahoo Finance 데이터를 기반으로 정보를 수집할 수 있도록 도와주는 오픈소스 라이브러리로, 간단한 코드 몇 줄만으로도 주가, 펀드, 옵션, 재무제표 등의 데이터를 받아올 수 있습니다.

yfinance-Python

Yahoo Finance는 한때 자체 API를 운영했지만 2017년 공식 지원이 종료되면서, 커뮤니티는 새로운 대안을 필요로 했습니다. 이에 따라 개발자 Ran Aroussifix-yahoo-finance라는 프로젝트로 시작해 현재의 yfinance로 발전시켰습니다.

2025년 현재 yfinance는 파이썬 기반 주식 데이터 분석 및 퀀트 전략 개발의 기본 도구로 자리 잡았습니다.


yfinance-Python 설치 방법

아래 명령어로 간단하게 설치할 수 있습니다.

pip install yfinance

PyPI 페이지: https://pypi.org/project/yfinance


기본 사용법: Ticker 객체로 데이터 수집하기

주어진 종목의 정보 가져오기

Ticker 객체를 사용하면 종목에 대한 다양한 정보를 얻을 수 있습니다. 다음은 마이크로소프트(MSFT)의 데이터를 불러오는 예시입니다.

import yfinance as yf

def get_stock_data_ticker(target):
    ticker = yf.Ticker(target)
    return ticker

msft = get_stock_data_ticker("MSFT")

# 회사 기본 정보
print(msft.info)

# 실적 발표 일정
print(msft.calendar)

# 애널리스트 목표 주가
print(msft.analyst_price_targets)

# 분기별 손익계산서
print(msft.quarterly_income_stmt)

# 최근 1개월 주가 데이터
print(msft.history(period='1mo'))

# 옵션 체인: 콜옵션
print(msft.option_chain(msft.options[0]).calls)

주요 출력 항목 설명

  • info: 기업의 산업, 시가총액, CEO 이름 등 일반 정보
  • calendar: 실적 발표일 등 중요 이벤트 일정
  • analyst_price_targets: 주가 예측 평균 및 최고/최저 범위
  • quarterly_income_stmt: 3개월 단위 손익계산서
  • history: 과거 주가 히스토리 (OHLC 데이터 포함)
  • option_chain: 옵션 만기일별 콜/풋옵션 데이터

주가 데이터 다운로드 방법

보다 간단하게 일정 기간의 가격 데이터를 받고 싶다면 yf.download() 함수가 적합합니다.

def get_stock_data_download(target):
    data = yf.download(target)
    return data

aapl = get_stock_data_download("AAPL")
print(aapl.head())

이 함수는 pandas.DataFrame 형식으로 결과를 반환하며, 가격 분석, 이동 평균 계산 등에 적합합니다.


펀드 데이터 가져오기

ETF나 펀드 데이터도 동일한 방식으로 수집할 수 있습니다. 예를 들어 S&P 500 ETF인 SPY를 가져오는 경우:

def get_funds_data_ticker(target):
    fund = yf.Ticker(target)
    return fund

spy = get_funds_data_ticker("SPY")

# ETF 설명
print(spy.info['longBusinessSummary'])

# 상위 보유 종목 정보
print(spy.fund_holdings)

2025년 기준으로 SPY는 여전히 세계에서 가장 거래량이 높은 ETF 중 하나입니다. 구성 종목 정보까지 확인할 수 있어 퀀트 전략 개발에 유용합니다.


실전 예제: 여러 종목 한 번에 조회하기

stocks = ['MSFT', 'AAPL', 'GOOGL', 'TSLA']
for symbol in stocks:
    ticker = yf.Ticker(symbol)
    info = ticker.info
    print(f"{symbol}: {info.get('shortName')} - 시가총액: {info.get('marketCap')}")

이 예제는 여러 기업의 기본 정보를 반복적으로 출력합니다. yfinance-Python은 자동화된 데이터 수집 스크립트를 짜기에 매우 적합한 구조입니다.


yfinance-Python 데이터를 활용한 실전 활용 방안

1. 기술적 분석

history()를 통해 수집한 종가 데이터를 기반으로 이동 평균, MACD, RSI 등 다양한 기술 지표를 계산할 수 있습니다.

2. 알고리즘 트레이딩

실시간은 아니지만 과거 데이터를 기반으로 백테스트용 알고리즘을 구성하는 데 활용됩니다. backtrader, zipline 등의 백테스트 프레임워크와 함께 사용할 수 있습니다.

3. 재무 분석

손익계산서(income_stmt), 대차대조표(balance_sheet), 현금흐름표(cashflow) 등을 활용하여 종목의 가치평가나 재무건전성 분석이 가능합니다.

4. ETF 리밸런싱 감시

ETF의 fund_holdings 데이터를 기반으로, ETF 포트폴리오가 어떻게 변경되고 있는지를 추적하고, 시장 트렌드를 파악할 수 있습니다.


yfinance의 한계와 주의사항

  • 실시간 데이터 아님: 딜레이가 있을 수 있으며, 고빈도 트레이딩에는 부적합
  • 웹 스크래핑 기반: Yahoo Finance 사이트 구조가 변경되면 작동하지 않을 수 있음
  • 오피셜 API 아님: Yahoo의 정책 변화에 영향을 받을 수 있음

결론: yfinance는 2025년에도 여전히 유효한가?

그렇습니다.
2025년에도 yfinance는 간단하고 빠르게 주식 및 ETF 데이터를 수집할 수 있는 도구로써 널리 사용되고 있습니다. 비공식 도구라는 한계는 있지만, 데이터 분석 입문자부터 퀀트 개발자까지 활용 가능하며, 커뮤니티도 활발하게 유지되고 있습니다.


추천 GitHub 프로젝트

By Mark

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다