-
Notifications
You must be signed in to change notification settings - Fork 366
Release Note 0.9.50
import matplotlib.pyplot as plt
plt.rcParams["axes.grid"] = True
plt.rcParams["figure.figsize"] = (16,9)
import FinanceDataReader as fdr
fdr.__version__
'0.9.50'
TLTR: investing.com 에서 데이터 수집이 불가하여 investing.com 부분을 yahoo finance로 대체하였습니다.
2022년 9월 15일 즈음 부터 investing.com 이 API 중심으로 개편되면서 점진적으로 수집이 불가하게 되었습니다. 간단히 investing.com이 사용하는 Cloudflare 서비스에서 매우 엄격하게 수집을 금지하는 정책(특히, 403 오류 등) 적용하고 있습니다.
지난 1.5개월간 대략 다음과 같은 내용을 진행하였습니다.
- cloudscaper 적용 (변현홍 님께서 수고해주셨습니다), 수집 가능하나 무료 버전에서 불가(무료 버전 Captcha 지원 안됨)
- investing.com 의 차트 데이터로 대체 개발 (배포이후 몇 일 만에 막힘)
- https://tvc4.investing.com/ 의 데이터로 대체 개발 (1주만에 이부분도 막힘, 배포전)
- JS기반으로 방식 변경(Selenium, CasperJS, Cypress, PhantomJS 등) 검토 - 셀레니움(headless mode) 적용 해보았으나 완전하지 못함 (셀레니움 드라이버 추가 설치도 사용자에게 부담)
약 1.5개월 동안 다양한 시험을 해보았으나 결국 investing.com 수집 부분을 yahoo finance로 대체하였습니다.
현재 지원되는 내용들을 모두 대체하였으나,
investing.com에서 수집하던 미국 ETF 리스팅(ETF/US)은 대체 불가하여 지원을 잠정 중단 합니다.
종목을 여러개 비교하는 경우가 많은데 다수의 종목을 지정하는 경우 종가(Close)를 하나의 데이터프레임으로 반환하는 기능을 추가하였습니다. 하나의 거래소에 대해 콤마(,)로 구분하여 여러 종목을 한번에 지정 할 수 있습니다. (현재는 동일 거래소에 대해서만 동작합니다. 향후 업데이트를 통해 다수의 거래소를 지원하도록 업데이트 예정 입니다)
# 삼성전자(005930), SK하이닉스(000660), 기아(000270), 카카오(035720), KB금융(105560)
df = fdr.DataReader('005930,000660,000270,035720,105560', '2020')
df
005930 | 000660 | 000270 | 035720 | 105560 | |
---|---|---|---|---|---|
Date | |||||
2020-01-02 | 55200 | 94700 | 42500 | 30609 | 46550 |
2020-01-03 | 55500 | 94500 | 42000 | 30609 | 47150 |
2020-01-06 | 55500 | 94300 | 41900 | 31010 | 46600 |
2020-01-07 | 55800 | 94000 | 42050 | 32114 | 47000 |
2020-01-08 | 56800 | 97400 | 41300 | 32014 | 46150 |
... | ... | ... | ... | ... | ... |
2022-10-19 | 55800 | 92900 | 69000 | 49800 | 47900 |
2022-10-20 | 55500 | 90200 | 68400 | 47750 | 46500 |
2022-10-21 | 55900 | 90500 | 67900 | 48850 | 46000 |
2022-10-24 | 57500 | 91800 | 65300 | 48450 | 45150 |
2022-10-25 | 57700 | 93500 | 66300 | 48800 | 45750 |
695 rows × 5 columns
df = fdr.DataReader('AAPL,TSLA,AMZN', '2020')
df
AAPL | TSLA | AMZN | |
---|---|---|---|
Date | |||
2020-01-02 | 75.087502 | 28.684000 | 94.900497 |
2020-01-03 | 74.357498 | 29.534000 | 93.748497 |
2020-01-06 | 74.949997 | 30.102667 | 95.143997 |
2020-01-07 | 74.597504 | 31.270666 | 95.343002 |
2020-01-08 | 75.797501 | 32.809334 | 94.598503 |
... | ... | ... | ... |
2022-10-18 | 143.750000 | 220.190002 | 116.360001 |
2022-10-19 | 143.860001 | 222.039993 | 115.070000 |
2022-10-20 | 143.389999 | 207.279999 | 115.250000 |
2022-10-21 | 147.270004 | 214.440002 | 119.320000 |
2022-10-24 | 149.449997 | 211.250000 | 119.820000 |
709 rows × 3 columns
fdr.DataReader('AAPL,TSLA,AMZN,GOOGL', '2020').plot()
fdr.DataReader('005930,000660,000270,035720,105560', '2020').plot()
plt.legend(['Samsung', 'Hynix', 'KIA', 'Kakao', 'KB'])
국내, 미국, 글로벌 지수 지원을 아래와 같이 정리하였습니다
# KRX Indices 국내 지수 데이터
df = fdr.DataReader('KS11') # KOSPI 지수 (KRX)
df = fdr.DataReader('KQ11') # KOSDAQ 지수 (KRX)
df = fdr.DataReader('KS200') # KOSPI 200 (KRX)
# US market Indices 미국 시장 지수 데이터
df = fdr.DataReader('DJI') # 다우존스 지수 (DJI - Dow Jones Industrial Average)
df = fdr.DataReader('IXIC') # 나스닥 종합지수 (IXIC - NASDAQ Composite)
df = fdr.DataReader('US500') # S&P 500 지수 (NYSE)
df = fdr.DataReader('RUT') # 러셀2000 지수 (RUT - US Small Cap 2000)
df = fdr.DataReader('VIX') # VIX지수 (VIX - CBOE Volatility Index)
# Global Indices 글로벌 지수 데이터
df = fdr.DataReader('SSEC') # 상해 종합지수 Shanghai (SSEC -Shanghai Composite)
df = fdr.DataReader('HSI') # 항셍지수 (HSI - Hang Seng)
df = fdr.DataReader('N225') # 일본 닛케이지수 (N225 - Nikkei 225)
df = fdr.DataReader('FTSE') # 영국 FTSE100 (FTSE 100 - Financial Times Stock Exchange)
df = fdr.DataReader('FCHI') # 프랑스 FCHI 지수 (CAC 40 - CAC quarante)
df = fdr.DataReader('GDAXI') # 독일 닥스지수 (DAX30 - germany-30)
FRED 데이터의 여러 항목을 한번에 가져올 수 있도록 했으며, 보다 간편한 표기법을 지원합니다.
# 1달러당원화 환율, M2통화량(미국), 나스닥종합지수 3가지를 한번에 가져옵니다.
df = fdr.DataReader('FRED:DEXKOUS,M2,NASDAQCOM')
df
# 1달러당원화 환율, M2통화량(미국), 나스닥종합지수 3가지를 한번에 가져옵니다.
df = fdr.DataReader('FRED:DEXKOUS,M2,NASDAQCOM')
df
DEXKOUS | NASDAQCOM | M2 | |
---|---|---|---|
DATE | |||
1980-01-02 | NaN | 148.17 | NaN |
1980-01-03 | NaN | 145.97 | NaN |
1980-01-04 | NaN | 148.02 | NaN |
1980-01-07 | NaN | 148.62 | NaN |
1980-01-08 | NaN | 150.68 | NaN |
... | ... | ... | ... |
2022-10-18 | 1422.19 | 10772.40 | 19404.4 |
2022-10-19 | 1426.07 | 10680.51 | 19404.4 |
2022-10-20 | 1431.63 | 10614.84 | 19404.4 |
2022-10-21 | 1440.31 | 10859.72 | 19404.4 |
2022-10-24 | 1440.31 | 10952.61 | 19404.4 |
11169 rows × 3 columns
df.plot()
현재 KRX는 KOSPI에 상장된 모든 종목을 가져오는데 너무 많은 항목(7,632 종목)을 가져와 오히려 다소 불편합니다.
fdr.StockListing() 의 심볼을 거래 가격 데이터 중심(KRX, KOSPI, KOSDAQ, KONEX) 데이터와 설명중심의 데이터 심볼(KRX-DESC, KOSPI-DESC, KOSDAQ-DESC, KONEX-DESC)과 구분하였습니다. 또한, 거래 가격 데이터 중심 데이터를 시가총액 순으로 나열 됩니다.
stocks = fdr.StockListing('KRX') # 거래소 주식 종목 (2,663 종목)
stocks = fdr.StockListing('KRX-DESC') # 편드를 포함하여 모든 종목 (7,632 종목)
fdr.StockListing('KRX').head(10) # (시총상위 10, 전체 2,663 종목)
Code | ISU_CD | Name | Market | Dept | Close | ChangeCode | Changes | ChagesRatio | Open | High | Low | Volume | Amount | Marcap | Stocks | MarketId | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 005930 | KR7005930003 | 삼성전자 | KOSPI | 57700 | 1 | 200 | 0.35 | 57000 | 58600 | 57000 | 17405678 | 1009512119302 | 344456453135000 | 5969782550 | STK | |
1 | 373220 | KR7373220003 | LG에너지솔루션 | KOSPI | 511000 | 1 | 2000 | 0.39 | 510000 | 526000 | 509000 | 473847 | 245733032000 | 119574000000000 | 234000000 | STK | |
2 | 000660 | KR7000660001 | SK하이닉스 | KOSPI | 93500 | 1 | 1700 | 1.85 | 91900 | 94800 | 91000 | 2656194 | 248751488800 | 68068221127500 | 728002365 | STK | |
3 | 207940 | KR7207940008 | 삼성바이오로직스 | KOSPI | 884000 | 1 | 11000 | 1.26 | 878000 | 895000 | 868000 | 118113 | 104458931000 | 62917816000000 | 71174000 | STK | |
4 | 006400 | KR7006400006 | 삼성SDI | KOSPI | 655000 | 1 | 5000 | 0.77 | 653000 | 668000 | 651000 | 277578 | 182468088000 | 45040767150000 | 68764530 | STK | |
5 | 005935 | KR7005931001 | 삼성전자우 | KOSPI | 53100 | 1 | 600 | 1.14 | 52400 | 53100 | 52000 | 1410982 | 74605989180 | 43695283770000 | 822886700 | STK | |
6 | 051910 | KR7051910008 | LG화학 | KOSPI | 552000 | 2 | -23000 | -4.00 | 576000 | 576000 | 550000 | 394043 | 219667521000 | 38966973336000 | 70592343 | STK | |
7 | 005380 | KR7005380001 | 현대차 | KOSPI | 162500 | 1 | 1000 | 0.62 | 162500 | 163000 | 160000 | 967860 | 156034393500 | 34721080387500 | 213668187 | STK | |
8 | 035420 | KR7035420009 | NAVER | KOSPI | 165500 | 1 | 1500 | 0.91 | 164500 | 167000 | 164000 | 547041 | 90584669000 | 27150123567500 | 164049085 | STK | |
9 | 000270 | KR7000270009 | 기아 | KOSPI | 66300 | 1 | 1000 | 1.53 | 65600 | 66300 | 64600 | 2080083 | 136692147400 | 26875589906100 | 405363347 | STK |
df = fdr.StockListing('KRX-DESC')
df[df.Sector=='화학섬유 제조업'].sample(5)
Code | Name | Market | Sector | Industry | ListingDate | SettleMonth | Representative | HomePage | Region | |
---|---|---|---|---|---|---|---|---|---|---|
5389 | 120110 | 코오롱인더 | KOSPI | 화학섬유 제조업 | 산업자재, 화학, 필름 | 2010-02-01 | 12월 | 장희구, 유석진 | http://www.kolonindustries.com/ | 서울특별시 |
5524 | 104480 | 티케이케미칼 | KOSDAQ | 화학섬유 제조업 | 수지, 폴리에스터, 스판덱스 | 2011-04-26 | 12월 | 이태우 | http://www.tkchemi.co.kr | 대구광역시 |
5467 | 003240 | 태광산업 | KOSPI | 화학섬유 제조업 | 석유화학제품(PTA,AN),화섬사,직물 등 | 1975-12-27 | 12월 | 조진환, 정철현 (각자 대표이사) | http://www.taekwang.co.kr | 서울특별시 |
2166 | 294140 | 레몬 | KOSDAQ | 화학섬유 제조업 | EMI Shield Can, 나노멤브레인 등 | 2020-02-28 | 12월 | 김광진 | http://www.lemonano.co.kr | 경상북도 |
7593 | 298050 | 효성첨단소재 | KOSPI | 화학섬유 제조업 | PET타이어코드 | 2018-07-13 | 12월 | 이건종 | http://www.hyosungadvancedmaterials.com | 서울특별시 |
빠른 리뷰를 위해서 quick-start 를 검토해 보시기 바랍니다.
https://github.com/financedata-org/FinanceDataReader/tree/master#quick-start
2018-2024 FinanceData.KR | facebook.com/financedata