yfinance
소개
야후 파이낸스(Yahoo Finance)의 금융 데이터를 쉽게 가져올 수 있게 해주는 오픈소스 파이썬 라이브러리
주가, 재무제표, 거래량 등 다양한 데이터를 데이터프레임 형태로 가져옴
기능이 많음
설치
1
2
3
4
5
# pip 설치
pip install yfinance
# uv 설치
uv add yfinance
Ticker
정의
객체는 특정 주식 종목에 대한 모든 정보가 담긴 인스턴스
yfinance의 모든 데이터 접근은 Ticker 객체를 통해 이루어진다.
종목 코드(Ticker Symbol)를 인자로 전달하여 객체를 생성한다.
1
2
3
4
import yfinance as yf
# 애플에 대한 티커
apple = yf . Ticker ( "AAPL" )
구분
호출 방식 (애플 기준)
반환되는 내용
기본 정보
apple.info
기업 설명, 시가총액, 업종 등 (딕셔너리)
시세 데이터
apple.history()
시가, 고가, 저가, 종가, 거래량 (데이터프레임)
재무 상태
apple.balance_sheet
자산, 부채, 자본 등 대차대조표 항목
수익성
apple.income_stmt
매출, 영업이익, 당기순이익 등 손익계산서
주주 환원
apple.dividends
배당금 지급 날짜와 금액 리스트
종목 코드
종목 코드 확인 방법은 다음과 같다.
https://finance.yahoo.com/
여기서 종목명 검색 결과에서, 종목의 이름 옆에 괄호 안에 써있는 게 종목 코드이다.
주요 속성 (Attributes)
속성명
설명
반환 형식
info
기업 개요, 시가총액, PER, ROE 등 요약 정보 조회
Dictionary
dividends
과거 배당금 지급 내역 (날짜 및 금액)
Pandas Series
splits
과거 주식 분할 내역 및 비율
Pandas Series
actions
배당금과 주식 분할 이력을 합쳐서 제공
Pandas DataFrame
major_holders
주요 주주(내부자, 기관 등)의 지분 보유 비율
Pandas DataFrame
institutional_holders
상위 기관 투자자 명단 및 보유 현황
Pandas DataFrame
news
종목 관련 최근 뉴스 제목, 발행처, URL 목록
List of Dicts
calendar
실적 발표일, 배당락일 등 주요 일정
Dictionary
info
1
2
3
4
5
6
7
import yfinance as yf
# get Ticker
samsung = yf . Ticker ( "005930.KS" )
# info
print ( samsung . info )
1
{ 'address1' : '129 Samsung-Ro' , 'address2' : 'Maetan-3dong Yeongtong-gu' ...}
news
1
2
3
4
5
6
7
import yfinance as yf
# get Ticker
samsung = yf . Ticker ( "005930.KS" )
# news
print ( samsung . news )
1
[{ 'id' : ... 'title' : "Samsung's Galaxy Z TriFold to cost $2 ,899" ..}]
주요 메서드 (Methods)
메서드명
설명
주요 파라미터
history()
과거 시세(Open, High, Low, Close, Volume) 조회
period, interval, start, end
get_income_stmt()
손익계산서 (매출, 영업이익, 순이익 등) 조회
freq=’annual’/’quarterly’
get_balance_sheet()
대차대조표 (자산, 부채, 자본 등) 조회
freq=’annual’/’quarterly’
get_cashflow()
현금흐름표 (영업, 투자, 재무 현금흐름) 조회
freq=’annual’/’quarterly’
get_earnings_dates()
실적 발표일 일정 및 EPS 예상치/실제치 조회
limit (데이터 개수)
get_recommendations()
애널리스트들의 투자의견(Buy, Sell 등) 내역 조회
-
get_shares_full()
발행 주식 수의 시간 경과에 따른 변동 내역 조회
start, end
history - 과거 시세 조회
1
2
3
4
5
6
# get Ticker
samsung = yf . Ticker ( "005930.KS" )
# history
his = samsung . history ( period = "7d" , interval = "1d" )
print ( his )
1
2
3
4
5
6
7
# get Ticker
samsung = yf . Ticker ( "005930.KS" )
# history
# start-end 에서 end 는 조회 기간에 포함되지 않는다. 따라서 마지막날짜 +1일로 조회해야 한다.
his = samsung . history ( start = "2026-01-20" , end = "2026-01-29" )
print ( his )
파라미터
설명
허용되는 값 (예시)
period
데이터를 가져올 전체 기간 (start/end와 함께 사용 불가)
1d, 5d, 1mo, 3mo, 6mo, 1y, 2y, 5y, 10y, ytd, max
interval
데이터의 시간 간격 (봉의 단위)
1m, 2m, 5m, 15m, 30m, 60m, 90m, 1h, 1d, 5d, 1wk, 1mo, 3mo
start
데이터 추출 시작일 (문자열 또는 datetime)
‘YYYY-MM-DD’ (예: ‘2024-01-01’)
end
데이터 추출 종료일 (미포함 기준)
‘YYYY-MM-DD’ (예: ‘2024-12-31’)
prepost
장전/장후 시간외 거래 데이터 포함 여부
True, False (기본값)
auto_adjust
배당, 주식 분할을 반영한 수정 주가 자동 계산 여부
True (기본값), False
actions
배당(Dividends) 및 주식 분할(Splits) 데이터 포함 여부
True (기본값), False
proxy
데이터 요청 시 사용할 프록시 서버 주소
문자열 (예: “127.0.0.1:8080”)
timeout
응답을 기다릴 제한 시간(초)
숫자 (기본값: 10)
1
2
3
4
5
6
7
8
9
Open High Low Close Volume Dividends Stock Splits
Date
2026-01-20 00:00:00+09:00 148500.0 149300.0 143900.0 145200.0 24059218 0.0 0.0
2026-01-21 00:00:00+09:00 141900.0 149800.0 141800.0 149500.0 31703610 0.0 0.0
2026-01-22 00:00:00+09:00 155000.0 157000.0 150800.0 152300.0 32073624 0.0 0.0
2026-01-23 00:00:00+09:00 154700.0 156000.0 150100.0 152100.0 25407497 0.0 0.0
2026-01-26 00:00:00+09:00 154900.0 156400.0 151500.0 152100.0 20561689 0.0 0.0
2026-01-27 00:00:00+09:00 150500.0 159500.0 149200.0 159500.0 29423670 0.0 0.0
2026-01-28 00:00:00+09:00 162600.0 163300.0 160200.0 162400.0 29456431 0.0 0.0
컬럼명
설명
비고
Open
해당 기간의 시가 (시작 가격)
auto_adjust 설정에 영향받음
High
해당 기간의 고가 (최고 가격)
auto_adjust 설정에 영향받음
Low
해당 기간의 저가 (최저 가격)
auto_adjust 설정에 영향받음
Close
해당 기간의 종가 (종료 가격)
auto_adjust 설정에 영향받음
Volume
해당 기간의 거래량
숫자
Dividends
해당 날짜에 지급된 배당금
actions=True일 때 표시
Stock Splits
해당 날짜에 발생한 주식 분할 비율
actions=True일 때 표시
get_recommendations - 투자의견
강매수, 매수, 보유, 매도, 강매도로 나뉘는 투자 의견 데이터프레임
1
2
3
4
5
# get Ticker
samsung = yf . Ticker ( "005930.KS" )
# history
rec = samsung . get_recommendations
print ( rec )
1
2
3
4
5
period strongBuy buy hold sell strongSell
0 0m 10 23 1 1 0
1 -1m 10 22 2 0 1
2 -2m 10 21 3 0 1
3 -3m 10 20 4 0 1
데이터프레임을 마크다운으로 표현
yfinance 에서 출력되는 “데이터프레임” 형태의 결과값은 to_markdown() 함수를 통해 마크다운 형식으로 변환할 수 있다.
1
2
3
apple = yf . Ticker ( "APLE" )
hist = apple . history ( "3d" )
print ( hist . to_markdown ())
1
2
3
4
5
| Date | Open | High | Low | Close | Volume | Dividends | Stock Splits |
|:--------------------------|-------:|-------:|-------:|--------:|----------------:|------------:|---------------:|
| 2026-01-26 00:00:00-05:00 | 12.35 | 12.35 | 12.16 | 12.21 | 2.9147e+06 | 0 | 0 |
| 2026-01-27 00:00:00-05:00 | 12.2 | 12.24 | 11.773 | 11.88 | 3.3231e+06 | 0 | 0 |
| 2026-01-28 00:00:00-05:00 | 11.95 | 12.041 | 11.885 | 11.91 | 514875 | 0 | 0 |
1
2
3
apple = yf . Ticker ( "APLE" )
hist = apple . history ( "3d" )
print ( hist )
1
2
3
4
Open High Low Close Volume Dividends Stock Splits
Date
2026-01-26 00:00:00-05:00 12.35 12.35 12.160 12.21 2914700 0.0 0.0
2026-01-27 00:00:00-05:00 12.20 12.24 11.773 11.88 3323100 0.0 0.0
단 이 기능을 이용하기 위해서는 tabulate 라이브러리가 필요하다.
1
2
3
4
5
# pip
pip install tabulate
# uv
uv add tabulate
Tags:
history ,
information ,
price ,
python ,
recommendation ,
stock ,
yfinance ,
정보 ,
종목 ,
주식 ,
추천 ,
파이썬
Categories:
Python
Updated: 2026-01-d
Comments