FinanceDataReader 사용자 안내서
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]:
In [4]:
import FinanceDataReader as fdr
# 한국거래소 상장종목 전체
df_krx = fdr.StockListing('KRX')
df_krx.head()
Out[4]:
In [5]:
len(df_krx)
Out[5]:
In [6]:
import FinanceDataReader as fdr
# S&P 500 종목 전체
df_spx = fdr.StockListing('S&P500')
df_spx.head()
Out[6]:
In [7]:
len(df_spx)
Out[7]:
가격 데이터 - 국내주식¶
단축 코드(6자리)를 사용.
- 코스피 종목: 068270(셀트리온), 005380(현대차) 등
- 코스닥 종목: 215600(신라젠), 151910(나노스) 등
In [8]:
import FinanceDataReader as fdr
# 신라젠, 2018년
df = fdr.DataReader('215600', '2018')
df.head(10)
Out[8]:
In [5]:
import FinanceDataReader as fdr
# 셀트리온, 2017년~현재
df = fdr.DataReader('068270', '2017')
df['Close'].plot()
Out[5]:
가격 데이터 - 미국 주식¶
티커를 사용. 예를 들어, '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]:
In [7]:
import FinanceDataReader as fdr
# 애플(AAPL), 2017년
df = fdr.DataReader('AAPL', '2017')
df['Close'].plot()
Out[7]:
In [8]:
import FinanceDataReader as fdr
# 아마존(AMZN), 2010~현재
df = fdr.DataReader('AMZN', '2010')
df['Close'].plot()
Out[8]:
한국 지수¶
심볼 | 설명 |
---|---|
KS11 | KOSPI 지수 |
KQ11 | KOSDAQ 지수 |
KS50 | KOSPI 50 지수 |
KS100 | KOSPI 100 |
KRX100 | KRX 100 |
KS200 | 코스피 200 |
국가별 주요 지수¶
심볼 | 설명 |
---|---|
JP225 | 닛케이 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]:
In [10]:
# 다우지수, 2015년~현재
df = fdr.DataReader('DJI', '2015')
df['Close'].plot()
Out[10]:
환율¶
심볼 | 설명 |
---|---|
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]:
In [12]:
# 위엔화 환율, 1995년~현재
df = fdr.DataReader('CNY/KRW', '1995')
df['Close'].plot()
Out[12]:
암호화폐 가격 (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]:
In [14]:
import FinanceDataReader as fdr
# CME 비트코인 선물 가격
df = fdr.DataReader('BTC', '2017')
df['Close'].plot()
Out[14]:
댓글
Comments powered by Disqus