본문 바로가기
똑똑한 재테크

파이썬으로 주식 데이터 가져오기 — yfinance 입문 [코딩 초보도 가능]

by Mindy.s 2026. 5. 12.

주식 데이터를 직접 분석해보고 싶은데 어디서 가져와야 할지 모르겠다면, yfinance부터 시작하세요.

yfinance는 야후 파이낸스에서 주식·ETF·환율 데이터를 무료로 가져올 수 있는 파이썬 라이브러리예요. 코드 몇 줄만으로 삼성전자, 애플, S&P500 ETF의 과거 가격 데이터를 내 컴퓨터로 가져올 수 있어요. 복잡한 API 키 발급도 필요 없고, 무료예요.

파이썬 기초만 알면 충분히 따라할 수 있어요. 설치부터 실전 활용까지 처음부터 정리해봤습니다.

yfinance로 뭘 할 수 있나요

가능한 것들

주식·ETF·지수의 일별·주별·월별 가격 데이터 다운로드, 현재가·시가·고가·저가·거래량 조회, 재무제표(매출·영업이익·순이익) 데이터, 배당 이력, 기업 기본 정보(시가총액·PER·PBR 등), 환율 데이터까지 가져올 수 있어요. 투자 아이디어를 데이터로 검증하거나, 포트폴리오 수익률을 직접 계산하거나, 자동매매 봇에 데이터를 공급하는 용도로 활용해요.

1단계 — 설치

1
yfinance 설치
  1. 터미널(맥) 또는 명령 프롬프트(윈도우) 열기
  2. 아래 명령어 입력
# yfinance 설치
pip install yfinance

# pandas도 함께 설치 (데이터 분석용)
pip install pandas matplotlib

2단계 — 주가 데이터 가져오기

예제 1
애플 주가 1년치 다운로드
가장 기본적인 사용법
import yfinance as yf

# 애플 티커 객체 생성
apple = yf.Ticker("AAPL")

# 1년치 일별 주가 데이터 다운로드
df = apple.history(period="1y")

# 데이터 확인
print(df.head())

# 출력 예시:
# Open High Low Close Volume
# 2024-04-01 171.2 173.5 170.1 172.3 52000000
예제 2
기간 지정해서 데이터 가져오기
start/end 날짜 직접 지정
import yfinance as yf

# 날짜 범위 지정
df = yf.download("AAPL",
                 start="2020-01-01",
                 end="2025-12-31")

# 종가만 추출
close_price = df["Close"]
print(close_price.tail())
예제 3
여러 종목 한 번에 다운로드
포트폴리오 수익률 비교에 유용
import yfinance as yf

# 여러 종목 동시 다운로드
tickers = ["AAPL", "MSFT", "NVDA", "SPY"]
df = yf.download(tickers, period="1y")

# 종목별 종가만 추출
close = df["Close"]
print(close.tail())

3단계 — 국내 주식·ETF 데이터 가져오기

국내 주식은 티커 뒤에 .KS(코스피) 또는 .KQ(코스닥)를 붙이면 돼요.

예제 4
삼성전자·KODEX 200 데이터
국내 주식 티커 형식
import yfinance as yf

# 삼성전자 (코스피: .KS)
samsung = yf.download("005930.KS", period="1y")

# KODEX 200 ETF
kodex200 = yf.download("069500.KS", period="1y")

print(samsung["Close"].tail())

자주 쓰는 티커 모음

종목티커설명
애플AAPL미국 대표 기술주
엔비디아NVDAAI 반도체 대장주
S&P500 ETFSPY미국 S&P500 추종
나스닥100 ETFQQQ미국 나스닥100 추종
삼성전자005930.KS코스피 대장주
KODEX 200069500.KS국내 코스피200 ETF
달러/원 환율USDKRW=X원달러 환율
금 선물GC=F금 가격

4단계 — 수익률 계산 및 차트 그리기

예제 5
포트폴리오 누적 수익률 비교 차트
투자 판단에 가장 많이 쓰는 시각화
import yfinance as yf
import matplotlib.pyplot as plt

# S&P500(SPY)와 나스닥(QQQ) 5년 데이터
tickers = ["SPY", "QQQ"]
df = yf.download(tickers, period="5y")["Close"]

# 누적 수익률 계산 (시작 기준 100으로 정규화)
normalized = df / df.iloc[0] * 100

# 차트 그리기
normalized.plot(figsize=(12, 6), title="SPY vs QQQ 누적 수익률")
plt.ylabel("수익률 (시작=100)")
plt.grid(True)
plt.show()
예제 6
기업 기본 정보 가져오기
PER·PBR·시가총액 자동 조회
import yfinance as yf

ticker = yf.Ticker("AAPL")
info = ticker.info

# 주요 지표 출력
print(f"시가총액: {info['marketCap']:,}")
print(f"PER: {info['trailingPE']:.2f}")
print(f"52주 최고가: {info['fiftyTwoWeekHigh']}")
print(f"52주 최저가: {info['fiftyTwoWeekLow']}")
print(f"배당 수익률: {info.get('dividendYield', 0)*100:.2f}%")

5단계 — 실전 활용 예제 (자동매매 연계)

예제 7
이동평균선 계산 — 매매 신호 기초
자동매매 전략의 기본 재료
import yfinance as yf
import pandas as pd

df = yf.download("SPY", period="1y")
close = df["Close"]

# 20일, 60일 이동평균선 계산
df["MA20"] = close.rolling(window=20).mean()
df["MA60"] = close.rolling(window=60).mean()

# 골든크로스 신호 (20일선이 60일선 상향 돌파)
df["signal"] = "hold"
df.loc[df["MA20"] > df["MA60"], "signal"] = "buy"
df.loc[df["MA20"] < df["MA60"], "signal"] = "sell"

print(df[["Close", "MA20", "MA60", "signal"]].tail(5))
💡 yfinance는 야후 파이낸스의 비공식 API를 활용해요. 간헐적으로 데이터가 지연되거나 오류가 날 수 있어요. 실제 자동매매에 쓸 때는 증권사 공식 API(한국투자증권 KIS Developers, 키움 OpenAPI 등)와 병행하는 게 안전해요.
💡 국내 주식 자동매매에 연계하려면 — yfinance로 글로벌 데이터를 가져오고, 국내 주식 주문은 한국투자증권 KIS Developers API 또는 키움 OpenAPI를 활용하는 조합이 가장 많이 쓰여요.
✅ 핵심 요약
  • yfinance = 야후 파이낸스 데이터를 무료로 가져오는 파이썬 라이브러리
  • pip install yfinance로 설치, API 키 불필요
  • 미국 주식 티커 그대로 / 국내 주식은 005930.KS 형식
  • 일별·주별·월별 가격, 재무제표, PER·시가총액, 배당 이력 모두 조회 가능
  • 여러 종목 동시 다운로드 → 포트폴리오 수익률 비교·차트 시각화
  • 이동평균·골든크로스 등 매매 신호 계산의 기초 데이터로 활용
  • 실전 자동매매에는 증권사 공식 API와 병행 권장

파이썬으로 주식 데이터를 직접 다루는 게 거창해 보이지만, yfinance 설치하고 코드 몇 줄 실행하면 바로 데이터가 뽑혀나와요. 투자 아이디어를 직접 데이터로 검증하는 재미가 생기거든요.

궁금한 점은 댓글로 남겨주세요!

지금 바로 터미널 열고 pip install yfinance 입력해보세요.

애플 주가 1년치 데이터를 10초 만에 뽑아볼 수 있어요. 투자와 파이썬이 만나는 순간이에요.

※ 이 글은 기술적인 정보 제공 목적으로 작성되었으며 투자 권유가 아닙니다. yfinance 데이터는 비공식 API를 통해 제공되며 정확성을 보장하지 않습니다. 실제 투자 및 자동매매 시스템 구축 전 충분한 검증이 필요합니다.