3 분 소요

Pykrx

여러 웹사이트에서 주가 정보를 스크랩하는 라이브러리

종목의 가격뿐만이 아닌 PER, PBR, EPS, BPS, DIV, DPS의 펀더멘탈 지표 같은

중요한 정보들도 가져올 수 있음

사용법

주로 많이 쓰이는 함수들을 알아보자

개발환경은 구글 코랩에서 실시

자세한 정보는 여기서

https://github.com/sharebook-kr/pykrx

!pip install pykrx
from pykrx import stock
import pandas as pd
import numpy as np

전체 종목 정보 가져오기

get_market_ticker_list(date=”YYYYMMDD”, market=”거래소명”)

kospi = stock.get_market_ticker_list("20220617", market="KOSPI")
kospi[:5]
['095570', '006840', '027410', '282330', '138930']
kosdaq = stock.get_market_ticker_list("20220617", market="KOSDAQ")
kosdaq[:5]
['060310', '054620', '265520', '211270', '032790']
all = stock.get_market_ticker_list("20220617", market="ALL")
all[:5]
['060310', '095570', '006840', '054620', '265520']

일정 기간 종목의 가격 변동 조회

get_market_price_change_by_ticker(fromdate=”조회시작일”, todate=”조회종료일”, market=”거래소명”)

df = stock.get_market_price_change_by_ticker(fromdate="20220522", todate="20220601")
df.head()
            종목명      시가      종가   변동폭   등락률      거래량         거래대금
티커                                                               
095570   AJ네트웍스    6850    6970   120  1.75   734513   5192580470
006840    AK홀딩스   19500   21200  1700  8.72   104100   2081742950
027410      BGF    5060    5160   100  1.98   715781   3698040110
282330   BGF리테일  186000  183500 -2500 -1.34   237019  44185666500
138930  BNK금융지주    7620    7890   270  3.54  5003526  39024054380

종목 이름 가져오기

get_market_ticker_name(ticker)

name = stock.get_market_ticker_name("005930")
name
'삼성전자'

특정 일자 전체 종목 시세 OHLCV(시가, 고가, 저가, 종가, 거래량, 거래대금, 등락률) 가져오기

stock.get_market_ohlcv_by_ticker(date=날짜)

df = stock.get_market_ohlcv_by_ticker(date="20220617")
df.head()
            시가      고가      저가      종가      거래량         거래대금   등락률
티커                                                                
095570    6610    6850    6530    6750   140939    937272870 -0.88
006840   16550   17150   16100   17050    42072    689997850  2.10
027410    4300    4345    4245    4270   228636    979533785 -2.18
282330  177500  178000  170500  174500    53682   9345751000  0.00
138930    7340    7350    7240    7290  2025318  14766919140 -1.49

날짜별 OHLCV(시가, 고가, 저가, 종가, 거래량, 거래대금, 등락률) 가져오기

stock.get_market_ohlcv_by_date(조회시작일, 조회종료일, 종목코드)

df = stock.get_market_ohlcv_by_date("20220520", "20220610", "005930")
df.head()
               시가     고가     저가     종가       거래량
날짜                                              
2022-05-20  67800  68400  67700  68000  12109671
2022-05-23  68800  68800  67600  67900  13684088
2022-05-24  67500  67700  66500  66500  15482576
2022-05-25  66700  67100  65900  66400  15150490
2022-05-26  66300  67200  65500  65900  15970890
# 월별로 가져오기 (일 : "d", 년 : "y")
df = stock.get_market_ohlcv_by_date("20220420", "20220610", "005930", "m")
df.head()
               시가     고가     저가     종가        거래량
날짜                                               
2022-04-30  67000  68300  64500  67400  126503617
2022-05-31  66600  68800  64900  67400  310129252
2022-06-30  66600  67300  63800  63800  103005538

전체 종목의 펀더멘탈 지표(PER, PBR, EPS, BPS, DIV, DPS) 가져오기

stock.get_market_fundamental_by_ticker(date=날짜, market=거래소)

df = stock.get_market_fundamental_by_ticker(date='20220617', market="ALL")
df.head()
          BPS     PER   PBR   EPS   DIV  DPS
티커                                          
060310    792  174.69  3.53    16  0.00    0
095570   8075    3.95  0.84  1707  4.00  270
006840  45961    0.00  0.37     0  1.17  200
054620  10088    8.07  0.94  1179  1.05  100
265520  12713    4.88  1.51  3932  1.25  240

일자별 DIV/BPS/PER/EPS 조회

stock.get_market_fundamental(조회시작일, 조회종료일, 종목코드)

df = stock.get_market_fundamental("20220504", "20220601", "005930")
df.head()
              BPS    PER   PBR   EPS   DIV   DPS
날짜                                              
2022-05-04  43611  11.75  1.56  5777  2.13  1444
2022-05-06  43611  11.51  1.52  5777  2.17  1444
2022-05-09  43611  11.44  1.52  5777  2.18  1444
2022-05-10  43611  11.37  1.51  5777  2.20  1444
2022-05-11  43611  11.37  1.51  5777  2.20  1444

투자자별 순매수 상위종목 조회

stock.get_market_net_purchases_of_equities(조회시작일, 조회종료일, 거래소, 투자자)

투자자 :금융투자 / 보험 / 투신 / 사모 / 은행 / 기타금융 / 연기금 / 기관합계 / 기타법인 / 개인 / 외국인 / 기타외국인 / 전체

df = stock.get_market_net_purchases_of_equities("20210115", "20210122", "KOSPI", "개인")
df.head()
            종목명     매도거래량      매수거래량    순매수거래량         매도거래대금         매수거래대금  \
티커                                                                             
005930     삼성전자  79567418  102852747  23285329  6918846810800  8972911580500   
000270      기아차  44440252   49880626   5440374  3861283906400  4377698855000   
005935    삼성전자우  15849762   20011325   4161563  1207133611400  1528694164400   
051910     LG화학    709872     921975    212103   700823533000   908593419000   
096770  SK이노베이션   4848359    5515777    667418  1298854139000  1478890602000   

              순매수거래대금  
티커                     
005930  2054064769700  
000270   516414948600  
005935   321560553000  
051910   207769886000  
096770   180036463000  

공매도 거래비중 상위 50 종목 조회

stock.get_shorting_trade_top50(“날짜”)

df = stock.get_shorting_volume_top50("20220617")
df.head()
        순위      공매도거래대금         총거래대금  공매도비중  직전40일거래대금평균  공매도거래대금증가율  \
티커                                                                      
207940   1  65582327000  206809432000  31.71   5708922700       11.49   
001450   2   3658823300   12098289300  30.24   1647440381        2.22   
323410   3  23475005600   79295281780  29.61   9212193240        2.55   
005940   4   3029191010   10782747820  28.09    661281673        4.58   
251270   5   4277996500   15308949800  27.94   4498179143        0.95   

        직전40일공매도평균비중  공매도비중증가율  주가수익률  
티커                                     
207940         15.09      2.10   3.10  
001450         13.08      2.31  -0.48  
323410         13.44      2.20  -0.82  
005940          8.55      3.29  -0.30  
251270         24.73      1.13   0.14  

댓글남기기