FinanceDataReader 사용자 안내서

FinanceDataReader 사용자 안내서

한국 주식 가격, 미국주식 가격, 지수, 환율, 암호화폐 가격, 종목 리스팅 등 금융 데이터 수집 라이브러리

2018 FinanceData.KR

In [1]:
#  차트 설정
%matplotlib inline
import matplotlib.pyplot as plt

plt.rcParams["font.family"] = 'nanummyeongjo'
plt.rcParams["figure.figsize"] = (14,4)
plt.rcParams['lines.linewidth'] = 2
plt.rcParams["axes.grid"] = True
In [2]:
%%html
<style>
    table { display: inline-block }
    .rendered_html td, .rendered_html th { text-align: left; }
</style>

개요

금융 데이터를 다루는데 가장 기본이 되는 데이터는 거래소별 전체 종목 코드와 가격 데이터 이다.

pandas-datareader 는 잘 구성된 시계열 데이터 수집 라이브러리로 사용이 간편하고 다양한 시계열 데이터를 수집할 수 있다는 장점이 있다. (현재 버전 : pandas_datareader 0.6.0) 하지만, 거래소별(KRX, NASDAQ, NYSE 등) 전체 종목 코드(ticker symbol)를 가져오는 기능이 없으며, 야후 파이낸스가 더 이상지원되지 않고(deprecated), 구글 파이낸스는 UNSTABLE_WARNING + RemoteDataError 를 낸다.

FinanceDataReader는 pandas-datareader 를 대체하기 보다 보완하기 위한 목적으로 만들어졌다. 주요한 기능은 다음과 같다.

종목 코드

  • 거래소별 전체 종목코드: KRX (KOSPI, KODAQ, KONEX), NASDAQ, NYSE, AMEX, S&P 500

가격 데이터

  • 해외주식 가격 데이터: AAPL(애플), AMZN(아마존), GOOG(구글) 등
  • 국내주식 가격 데이터: 005930(삼성전자), 091990(셀트리온헬스케어) 등
  • 각종 지수: KS11(코스피지수), KQ11(코스닥지수), DJI(다우지수), IXIC(나스닥 지수), US500(S&P 5000)
  • 환율 데이터: USD/KRX (원달러 환율), USD/EUR(달러당 유로화 환율), CNY/KRW: 위엔화 원화 환율
  • 암호화폐 가격: BTC/USD (비트코인 달러 가격, Bitfinex), BTC/KRW (비트코인 원화 가격, 빗썸)

설치

pip install -U finance-datareader

사용

In [3]:
import FinanceDataReader as fdr
fdr.__version__
Out[3]:
'0.4.0'

전체 종목 코드

종목 데이터 전체를 얻기 위해 사용할 수 있는 거래소 심볼은 다음과 같다

한국

심볼 거래소
KRX KRX 종목 전체
KOSPI KOSPI 종목
KOSDAQ KOSDAQ 종목
KONEX KONEX 종목

미국

심볼 거래소
NASDAQ 나스닥 종목
NYSE 뉴욕 증권거래소 종목
AMEX AMEX 종목
SP500 S&P 500 종목

※ KRX는 KOSPI,KOSDAQ,KONEX 모두 포함

In [4]:
import FinanceDataReader as fdr

# 한국거래소 상장종목 전체
df_krx = fdr.StockListing('KRX')
df_krx.head()
Out[4]:
Symbol Name Sector Industry
0 001460 BYC 봉제의복 제조업 메리야스,란제리 제조,도매/건축공사/부동산 임대,분양,공급
1 079160 CJ CGV 영화, 비디오물, 방송프로그램 제작 및 배급업 영화상영,영화관 운영
2 005830 DB손해보험 보험업 자동차보험,화재보험,해상보험,특종보험,장기보험
3 139130 DGB금융지주 기타 금융업 지주회사
4 069730 DSR제강 1차 철강 제조업 와이어로프,각종 경강선,철선제품,PC강선,아연도 강연선 제조
In [5]:
len(df_krx)
Out[5]:
2194
In [6]:
import FinanceDataReader as fdr

# S&P 500 종목 전체
df_spx = fdr.StockListing('S&P500')
df_spx.head()
Out[6]:
Symbol Name Sector Industry
0 MMM 3M Company Industrials Industrial Conglomerates
1 ABT Abbott Laboratories Health Care Health Care Equipment
2 ABBV AbbVie Inc. Health Care Pharmaceuticals
3 ACN Accenture plc Information Technology IT Consulting & Other Services
4 ATVI Activision Blizzard Information Technology Home Entertainment Software
In [7]:
len(df_spx)
Out[7]:
505

가격 데이터 - 국내주식

단축 코드(6자리)를 사용.

  • 코스피 종목: 068270(셀트리온), 005380(현대차) 등
  • 코스닥 종목: 215600(신라젠), 151910(나노스) 등
In [8]:
import FinanceDataReader as fdr

# 신라젠, 2018년
df = fdr.DataReader('215600', '2018')
df.head(10)
Out[8]:
Close Open High Low Volume Change
Date
2018-01-01 93500 93500 93500 93500 0.0 0.0000
2018-01-02 102500 95900 104000 93300 6760000.0 0.0963
2018-01-03 103000 102600 104900 99500 4720000.0 0.0049
2018-01-04 92200 102600 104000 92200 6390000.0 -0.1049
2018-01-05 100000 85800 101200 85700 8250000.0 0.0846
2018-01-07 100000 100000 100000 100000 0.0 0.0000
2018-01-08 93800 98000 98400 92500 6280000.0 -0.0620
2018-01-09 109000 96500 119200 93800 12290000.0 0.1620
2018-01-10 98000 105000 107300 97800 6510000.0 -0.1009
2018-01-11 96700 97600 100600 95200 4040000.0 -0.0133
In [5]:
import FinanceDataReader as fdr

# 셀트리온, 2017년~현재

df = fdr.DataReader('068270', '2017')
df['Close'].plot()
Out[5]:
<matplotlib.axes._subplots.AxesSubplot at 0x7ff9f47e2198>

가격 데이터 - 미국 주식

티커를 사용. 예를 들어, 'AAPL'(애플), 'AMZN'(아마존), 'GOOG'(구글)

In [6]:
import FinanceDataReader as fdr

# 애플(AAPL), 2018-01-01 ~ 2018-03-30
df = fdr.DataReader('AAPL', '2018-01-01', '2018-03-30')
df.tail()
Out[6]:
Close Open High Low Volume Change
Date
2018-03-23 164.94 168.39 169.92 164.94 41030000.0 -0.0232
2018-03-26 172.77 168.07 173.10 166.44 37540000.0 0.0475
2018-03-27 168.34 173.68 175.15 166.92 40920000.0 -0.0256
2018-03-28 166.48 167.25 170.02 165.19 41670000.0 -0.0110
2018-03-29 167.78 167.81 171.75 166.90 38400000.0 0.0078
In [7]:
import FinanceDataReader as fdr

# 애플(AAPL), 2017년
df = fdr.DataReader('AAPL', '2017')
df['Close'].plot()
Out[7]:
<matplotlib.axes._subplots.AxesSubplot at 0x7ff9ec1933c8>
In [8]:
import FinanceDataReader as fdr

# 아마존(AMZN), 2010~현재
df = fdr.DataReader('AMZN', '2010')
df['Close'].plot()
Out[8]:
<matplotlib.axes._subplots.AxesSubplot at 0x7ff9f1a31b00>

한국 지수

심볼 설명
KS11 KOSPI 지수
KQ11 KOSDAQ 지수
KS50 KOSPI 50 지수
KS100 KOSPI 100
KRX100 KRX 100
KS200 코스피 200

미국 지수

심볼 설명
DJI 다우존스 지수
IXIC 나스닥 지수
US500 S&P 500 지수
VIX S&P 500 VIX

※ DJI, IXIC, US500 가 미국 3대 지수

국가별 주요 지수

심볼 설명
JP255 닛케이 225 선물
STOXX50E Euro Stoxx 50
CSI300 CSI 300 (중국)
HSI 항셍 (홍콩)
FTSE 영국 FTSE
DAX 독일 DAX 30
CAC 프랑스 CAC 40
In [9]:
import FinanceDataReader as fdr

# KS11 (KOSPI 지수), 2015년~현재
df = fdr.DataReader('KS11', '2015')
df['Close'].plot()
Out[9]:
<matplotlib.axes._subplots.AxesSubplot at 0x7ff9ec106438>
In [10]:
# 다우지수, 2015년~현재

df = fdr.DataReader('DJI', '2015')
df['Close'].plot()
Out[10]:
<matplotlib.axes._subplots.AxesSubplot at 0x7ff9ebc3d278>

환율

심볼 설명
USD/KRW 달러당 원화 환율
USD/EUR 달러당 유로화 환율
USD/JPY 달러당 엔화 환율
CNY/KRW 위엔화 원화 환율
EUR/USD 유로화 달러 환율
USD/JPY 달러 엔화 환율
JPY/KRW 엔화 원화 환율
AUD/USD 오스트레일리아 달러 환율
EUR/JPY 유로화 엔화 환율
USD/RUB 달러 루블화
In [11]:
import FinanceDataReader as fdr

# 원달러 환율, 1995년~현재
df = fdr.DataReader('USD/KRW', '1995')
df['Close'].plot()
Out[11]:
<matplotlib.axes._subplots.AxesSubplot at 0x7ff9ec15f198>
In [12]:
# 위엔화 환율, 1995년~현재

df = fdr.DataReader('CNY/KRW', '1995')
df['Close'].plot()
Out[12]:
<matplotlib.axes._subplots.AxesSubplot at 0x7ff9ec0bbb38>

암호화폐 가격 (KRW)

암호 화폐 원화 가격 (빗썸)

심볼 설명
BTC/KRW 비트코인 원화 가격
ETH/KRW 이더리움 원화 가격
XRP/KRW 리플 원화 가격
BCH/KRW 비트코인 캐시 원화 가격
EOS/KRW 이오스 원화 가격
LTC/KRW 라이트 코인 원화 가격
XLM/KRW 스텔라 원화 가격

암호화폐 가격 (UDS)

암호 화폐 달러화 가격 (Bitfinex)

심볼 설명
BTC/USD 비트코인 달러 가격
ETH/USD 이더리움 달러 가격
XRP/USD 리플 달러 가격
BCH/USD 비트코인 캐시 달러 가격
EOS/USD 이오스 달러 가격
LTC/USD 라이트 코인 달러 가격
XLM/USD 스텔라 달러 가격

암호화폐 선물

심볼 설명
BTC 비트코인 CME 선물
In [13]:
import FinanceDataReader as fdr

# 비트코인 원화 가격 (빗썸), 2016년~현재
df = fdr.DataReader('BTC/KRW', '2016')
df['Close'].plot()
Out[13]:
<matplotlib.axes._subplots.AxesSubplot at 0x7ff9ec0dc198>
In [14]:
import FinanceDataReader as fdr

# CME 비트코인 선물 가격
df = fdr.DataReader('BTC', '2017')
df['Close'].plot()
Out[14]:
<matplotlib.axes._subplots.AxesSubplot at 0x7ff9ebf4df60>

댓글