Skip to content

Release Note 0.9.50

FinanceData.KR edited this page Oct 25, 2022 · 1 revision
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'

1) investing.com 수집 부분을 yahoo finance 로 전환

TLTR: investing.com 에서 데이터 수집이 불가하여 investing.com 부분을 yahoo finance로 대체하였습니다.

2022년 9월 15일 즈음 부터 investing.com 이 API 중심으로 개편되면서 점진적으로 수집이 불가하게 되었습니다. 간단히 investing.com이 사용하는 Cloudflare 서비스에서 매우 엄격하게 수집을 금지하는 정책(특히, 403 오류 등) 적용하고 있습니다.

지난 1.5개월간 대략 다음과 같은 내용을 진행하였습니다.

  1. cloudscaper 적용 (변현홍 님께서 수고해주셨습니다), 수집 가능하나 무료 버전에서 불가(무료 버전 Captcha 지원 안됨)
  2. investing.com 의 차트 데이터로 대체 개발 (배포이후 몇 일 만에 막힘)
  3. https://tvc4.investing.com/ 의 데이터로 대체 개발 (1주만에 이부분도 막힘, 배포전)
  4. JS기반으로 방식 변경(Selenium, CasperJS, Cypress, PhantomJS 등) 검토 - 셀레니움(headless mode) 적용 해보았으나 완전하지 못함 (셀레니움 드라이버 추가 설치도 사용자에게 부담)

약 1.5개월 동안 다양한 시험을 해보았으나 결국 investing.com 수집 부분을 yahoo finance로 대체하였습니다.

현재 지원되는 내용들을 모두 대체하였으나,
investing.com에서 수집하던 미국 ETF 리스팅(ETF/US)은 대체 불가하여 지원을 잠정 중단 합니다.

2) 여러종목 한번에 종가(Close)를 취합

종목을 여러개 비교하는 경우가 많은데 다수의 종목을 지정하는 경우 종가(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()

output_6_1

fdr.DataReader('005930,000660,000270,035720,105560', '2020').plot()

plt.legend(['Samsung', 'Hynix', 'KIA', 'Kakao', 'KB'])

output_7_1

3) 지수 지원 정리

국내, 미국, 글로벌 지수 지원을 아래와 같이 정리하였습니다

# 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)

4) FRED 데이터 수집 개선

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()

output_11_1

5) KRX 종목 리스팅 개선

현재 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