본 모듈은 다양한 웹 싸이트 (Naver / KRX)에서 주가 정보를 스크래핑(scraping) 합니다. API 사용에 대한 책임은 사용자 본인에게 있습니다. 도의적으로도 무분별한 API 호출은 자제해 주시기 부탁드립니다. 또한 결과물은 참고용으로만 사용해야하며, 투자에 대한 책임은 사용자에게 있습니다.
pykrx는 pip을 사용해서 쉽게 설치할 수 있습니다.
pip install pykrx
pykrx는 유가 증권시장의 주식 정보를 스크래핑 합니다. 모듈의 사용은 import부터 시작합니다.
from pykrx import stock
코스피 종목의 주가 관련 정보를 얻는 API 입니다.
get_market_ticker_list() 메서드는 지정한 일자(YYMMDD)의 코스피 시장에 상장된 ticker를 리스트로 반환합니다.
tickers = stock.get_market_ticker_list("20190225")
print(tickers)
['095570', '068400', '006840', '027410', '282330', ...]
날짜를 지정하지 않으면 내부적으로 최근 영업일을 계산해서 ticker 반환합니다. 최근 영업일을 조회하는 시간이 추가로 소모됩니다.
tickers = stock.get_market_ticker_list()
print(tickers)
['095570', '006840', '027410', '282330', '138930', ...]
market
옵션을 추가하면 조회 시장을 지정할 수 있습니다. KOSPI
, KOSDAQ
, KONEX
시장을 지정할 수 있으며, ALL
은 모든 시장에서 티커를 조회합니다. 입력하지 않을 경우 KOSPI
시장을 조회합니다.
tickers = stock.get_market_ticker_list("20190225", market="KOSDAQ")
print(tickers)
['095570', '006840', '027410', '282330', '138930', ...]
get_market_ticker_name() 함수로 티커를 입력하면 종목이름을 반환합니다.
종목 = stock.get_market_ticker_name("000660")
print(종목)
SK하이닉스
get_market_ohlcv_by_date() 함수는 시작일/종료일/티커 세 개의 파라미터를 입력받아 OHLCV를 일자별로 정렬하여 DataFrame으로 반환합니다.
df = stock.get_market_ohlcv_by_date("20180810", "20181212", "005930")
print(df.head(3))
과거 일자의 OHLCV가 위쪽에 위치하는 것을 확인할 수 있습니다.
시가 고가 저가 종가 거래량
2018-08-10 46150 46400 44850 45400 16670643
2018-08-13 44950 45100 44650 45050 9803831
2018-08-14 44850 45400 44850 45150 6409259
get_market_ohlcv_by_date() 함수에 frequency 파라미터(d/m/y)를 추가할 수 있습니다. d는 일자, m은 월, y는 연도를 의미합니다. 다음은 20180810부터 20181212까지의 삼성전자 월별 OHLCV 데이터를 출력합니다.
df = stock.get_market_ohlcv_by_date("20180810", "20181212", "005930", "m")
print(df.head(3))
시가 고가 저가 종가 거래량
2018-08 46150 48450 43500 48450 135518029
2018-09 48200 48300 44000 46450 197984482
2018-10 46450 46800 40400 42400 234645485
get_stock_ticker_list() 함수와 함께 사용하면 전종목의 OHLCV를 가져올 수 있습니다. 한 번에 너무 많은 정보를 요청하면 KRX 서버가 차단할 수 있으므로 time 모듈을 사용해서 1초 지연 후 요청하도록 코드를 작성했습니다.
import time
for ticker in stock.get_stock_ticker_list():
df = stock.get_market_ohlcv_by_date("20181210", "20181212", ticker)
print(df.head())
time.sleep(1)
get_market_ohlcv_by_ticker() 함수는 입력된 일자의 전종목 시세를 DataFrame으로 반환합니다.
df = stock.get_market_ohlcv_by_ticker("20200831")
print(df.head(3))
종목명 시가 고가 저가 종가 거래량 거래대금 시가총액 시총비중 상장주식수
000020 동화약품 23200 24000 23000 23450 786605 18488865200 654992971500 0.029999 27931470
000040 KR모터스 701 750 690 705 3172595 2291451896 64621017690 0.000000 91661018
000050 경방 10600 10850 10350 10550 23905 250412000 289231098500 0
두 번째 파라미터에 특정 시장을 지정해서 종목 시세를 조회할 수 있습니다. 코스피(KOSPI)/코스닥(KOSDAQ)/코넥스(KONEX) 시장을 지원합니다. 값을 입력하지 않는다면 전체 시장 정보를 조회합니다.
df = stock.get_market_ohlcv_by_ticker("20200831", "KOSPI")
df = stock.get_market_ohlcv_by_ticker("20200831", "KOSDAQ")
df = stock.get_market_ohlcv_by_ticker("20200831", "KONEX")
get_market_price_change_by_ticker() 함수는 입력된 기간 동안의 가격 가격 변동 정보를 반환합니다. 다음 코드는 20180301-20180320 동안의 가격 변동폭을 조회합니다. .
df = stock.get_market_price_change_by_ticker("20180301", "20180320")
print(df.head(2))
종목명 시가 종가 변동폭 등락률 거래량 거래대금
000020 동화약품 11400 12300 900 7.89 4573591 54852078400
000030 우리은행 16600 15550 -1050 -6.33 21956076 345083853864
시작일의 시가 혹은 전일 종가를 가격 변동 데이터의 시가로 사용할 수 있는데, KRX 웹서버는 전일 종가를 시가로 반환합니다. 즉 20180301 전일 종가를 시가, 20180320을 종가로 사용합니다. 동화약품(000020)의 경우를 살펴보면 2018/03/02의 전일 영업일 2018/02/28의 종가를 시가로 사용한 것을 알 수 있습니다.
df = stock.get_market_ohlcv_by_date("20180227", "20180320", "000020")
print(df.head())
시가 고가 저가 종가 거래량
날짜
2018-02-27 12200 12350 11800 12050 406559
2018-02-28 11950 12300 11400 11400 570361
2018-03-02 11450 11750 11400 11550 301574
2018-03-05 11650 11750 11100 11250 365544
2018-03-06 11450 11600 11300 11350 162679
입력된 기간에 상장 폐지 되는 종목이 포함될 수 있습니다. 예를 들어 썬코어(051170)은 해당 기간에 상장 폐지가 됐으므로 종가가 0, 등락폭이 -100%로 표시된 것을 확인할 수 있습니다.
print(df.loc["051170"])
종목명 썬코어
시가 1360
종가 0
변동폭 -1360
등락률 -100
거래량 0
거래대금 0
get_market_fundamental_by_ticker() 함수는 입력된 일자의 DIV/BPS/PER/EPS/PBR를 조회합니다. PBR은 PER x EPS / BPS
로 계산된 값입니다.
df = stock.get_market_fundamental_by_ticker("20180305")
print(df.head(2))
종목명 DIV BPS PER EPS PBR
000250 삼천당제약 0.14 5689 84.480003 422 6.266578
000440 중앙에너비스 2.76 37029 25.549999 1135 0.783150
get_market_fundamental_by_date() 함수는 특정 종목에 대해 입력된 기간의 DIV/BPS/PER/EPS/PBR를 조회합니다. PBR은 PER x EPS / BPS
로 계산된 값입니다.
df = stock.get_market_fundamental_by_date("20180301", "20180320", '005930')
print(df.head(2))
DIV BPS PER EPS PBR
20180302 1.24 1156530 14.570000 157967 1.990073
20180305 1.26 1156530 14.310000 157967 1.954560
get_market_fundamental_by_date() 함수에 frequency 파라미터(d/m/y)를 추가할 수 있습니다. d는 일자, m은 월, y는 연도를 의미합니다. 다음은 20180810부터 20181212까지의 삼성전자 월별 DIV/BPS/PER/EPS를 출력합니다. 이때 해당 월의 종가를 기준으로 값이 출력됩니다.
df = stock.get_market_fundamental_by_date("20180810", "20181212", "005930", "m")
print(df.head(2))
DIV BPS PER EPS
201808 1.87 28126 7.57 5997
201809 1.79 28126 7.91 5997
일자별 시장의 거래량을 반환하며, KOSPI / KOSDAQ / KONEX 세 개의 시장을 지원합니다. 거래량/거래대금 합계 항목은 주식(외국주,DR포함), 증권투자회사, REITs, 선박투자회사, 사회간접자본투융자회사가 포함되어 있습니다. 다음은 20200519부터 20200526까지의 코스피 시장의 거래량을 조회합니다.
df = stock.get_market_trading_volume_by_date("20200519", "20200526", "KOSPI")
print(df.head())
전체 주권 투자회사 부동산투자회사
2020-05-26 1017804023 1008972681 6436255 1438271
2020-05-25 641458990 612379841 27522107 1021316
2020-05-22 847467288 830997456 13472156 2173679
2020-05-21 601199346 596327758 2325716 1780149
2020-05-20 699446970 694915934 2694839 750944
2020-05-19 773414630 768223852 2757578 1388145
get_market_trading_volume_by_date() 함수에 frequency 파라미터(d/m/y)를 추가할 수 있습니다. d는 일자, m은 월, y는 연도를 의미합니다. 다음은 20190101부터 20200430까지의 코스피 시장의 월별 거래량을 조회합니다. 조회 기간이 길 수록 데이터를 획득하기 까지의 시간이 오래 걸립니다.
df = stock.get_market_trading_volume_by_date("20190101", "20200430", 'KOSPI', freq='m')
print(df.head())
전체 주권 투자회사 부동산투자회사
2019-01-31 9455197243 9396785789 7324224 27940494
2019-02-28 6882554315 6765527306 76382819 18746555
2019-03-31 6458055507 6396184712 31053864 10150022
2019-04-30 9689748201 9633731691 24109062 13114697
2019-05-31 11242891618 11035793990 174971346 8322116
일자별 시장의 거래 대금을 원 단위로 반환하며 KOSPI / KOSDAQ / KONEX 세 개의 시장을 지원한다. 거래량/거래대금 합계 항목은 주식(외국주,DR포함), 증권투자회사, REITs, 선박투자회사, 사회간접자본투융자회사가 포함되어 있습니다. 다음은 20200519 20200526까지의 코스피 시장의 거래대금을 조회합니다.
df = stock.get_market_trading_value_by_date("20200519", "20200526", "KOSPI")
print(df.head())
전체 주권 투자회사 부동산투자회사
2020-05-26 12545313579000 12524370281000 3260524000 7982490000
2020-05-25 7960324756000 7936195529000 14000492000 5674769000
2020-05-22 9509771760000 9484894049000 6685432000 12007486000
2020-05-21 8636997699000 8619674049000 1535003000 9285644000
2020-05-20 8248632036000 8233849994000 1333854000 3746196000
on 옵션을 사용하면 종류/세션/매수/매도 항목별 거래 실적을 집계할 수 있습니다.
- 종류: 코스피 시장에서만 사용 가능하며 주권/투자회사/부동산투자회사로 분류
- 세션: 정규매매/시간외매매/단일가매매로 분류
- 매수: 주문 매체별 매수 항목을 영업단말/유선단말/무선단말/HTS/기타로 구분
- 매도: 주문 매체별 매도 항목을 영업단말/유선단말/무선단말/HTS/기타로 구분
on 항목을 입력하지 않으면 세션 항목을 조회합니다.
df = stock.get_market_trading_value_by_date("20200519", "20200526", "KOSPI", "매수")
print(df.head())
전체 영업단말 유선단말 무선단말 HTS 기타
날짜
2020-05-26 12545313579000 2544121542000 13320833000 4845642015000 3648271178000 1493958011000
2020-05-25 7960324756000 1652937403000 10708352000 3164366206000 2084118470000 1048194325000
2020-05-22 9509771760000 1587066103000 15175041000 4075163788000 2594949237000 1237417592000
2020-05-21 8636997699000 1758605890000 11824691000 3369326003000 2032898435000 1464342680000
2020-05-20 8248632036000 1664100141000 9733899000 2948842885000 2151991521000 1473963591000
get_market_trading_value_by_date() 함수에 frequency 파라미터(d/m/y)를 추가할 수 있습니다. d는 일자, m은 월, y는 연도를 의미합니다. 다음은 20190101부터 20200430까지의 코스피 시장의 월별 거래량을 조회합니다. 조회 기간이 길 수록 데이터를 획득하기 까지의 시간이 오래 걸립니다.
df = stock.get_market_trading_value_by_date("20190101", "20200430", "KOSPI", freq="m")
print(df.head())
전체 주권 투자회사 부동산투자회사
2019-01-31 123269550914000 123049300164000 9690417000 47380235000
2019-02-28 95521375665000 95279515644000 57578557000 27728378000
2019-03-31 98439945172000 98204744252000 35131873000 28568929000
2019-04-30 118322428665000 118069714956000 39043819000 39676308000
2019-05-31 113039830438000 112541206401000 210877140000 28758383000
get_market_cap_by_ticker() 함수는 특정 일자의 종목별 시가총액/거래량/거래대금/상장주식수/외국인보유주식수를 조회합니다. 시가총액과 거래대금의 단위는 원입니다. 외국인보유주식수는 D-2 (영업일 기준)일 까지 유효한 값이 출력되며, D-1일은 0으로 표기됩니다.
df = stock.get_market_cap_by_ticker("20200625")
print(df.head())
시가총액 거래량 거래대금 상장주식수 외국인보유주식수
종목코드
091990 17366306280400 2104287 239476471400 151406332 29741147
028300 5228972500000 556246 56188336400 52289725 6574994
068760 4880465749600 662319 90479992800 35806792 2929762
196170 3960853850000 1534967 431736743900 13995950 1481879
096530 2911976220000 1759610 200374704500 26234020 3071909
get_market_cap_by_date() 함수는 특정 종목의 일자별 시가총액을 조회합니다. 거래량/거래대금/상장주식수가 함께 조회됩니다.
df = stock.get_market_cap_by_date("20190101", "20190131", "005930")
print(df.head())
시가총액 거래량 거래대금 상장주식수
날짜
2015-07-20 187806655 128928 165366199000 147299337
2015-07-21 186039063 194055 244129106000 147299337
2015-07-22 184566069 268323 333813094000 147299337
2015-07-23 181767382 208965 259446564000 147299337
2015-07-24 181030885 196584 241383636000 147299337
get_market_cap_by_date() 함수에 frequency 파라미터(d/m/y)를 추가할 수 있습니다. d는 일자, m은 월, y는 연도를 의미합니다. 다음은 20200101부터 20200430까지의 월별 시가총액을 조회합니다. 시가총액과 상장주식수는 월별 마지막 거래일의 값을 사용하며, 거래량과 거래대금은 합산된 결과가 출력됩니다. 조회 기간이 길 수록 데이터를 획득하기 까지의 시간이 오래 걸립니다.
df = stock.get_market_cap_by_date("20200101", "20200430", "005930", "m")
print(df.head())
시가총액 거래량 거래대금 상장주식수
날짜
2020-01-31 336695736 319891636 18809460519447 5969782550
2020-02-29 323562214 360007160 21055346438502 5969782550
2020-03-31 285057117 856741868 42269216023680 5969782550
2020-04-30 298489128 424101937 20785194256247 5969782550
조회 일자를 입력받아 미거래 종목을 포함한 투자자별 거래 정보를 반환합니다. 기본적으로 KOSPI 시장의 주식시장 정보를 조회합니다.
df = get_market_trading_value_and_volume_by_ticker("20200907")
print(df.head())
종목명 매수거래량 매도거래량 순매수거래량 매수거래대금 매도거래대금 순매수거래대금
000020 동화약품 813108 813108 0 20647345250 20647345250 0
000040 KR모터스 8363034 8363034 0 8205581530 8205581530 0
000050 경방 18137 18137 0 199704150 199704150 0
000060 메리츠화재 157583 157583 0 2000837650 2000837650 0
000070 삼양홀딩스 14115 14115 0 951039300 951039300 0
market
옵션을 추가해서 특정 시장(KOSPI
/KOSDAQ
/KONEX
)을 조회하거나 전체 시장(ALL
)을 한 번에 검색할 수 있습니다. 입력하지 않으면 KOSPI
시장을 조회합니다.
df = get_market_trading_value_and_volume_by_ticker("20200907", market="KOSDAQ")
print(df.head())
investror
옵션은 투자자 정보를 입력합니다. 입력하지 않으면 전체
데이터를 조회합니다.
- 금융투자 / 보험 / 투신 / 사모 / 은행 / 기타금융 / 연기금 / 기관 / 기타법인 / 개인 / 외국인 /기타외국인 / 전체
df = get_market_trading_value_and_volume_by_ticker("20200907", market="KOSDAQ", investor="전체")
print(df.head())
market_detail
옵션은 세부 검색항목을 지정합니다. 입력하지 않으면 주식시장(STC
)을 선택합니다.
- STC / ETF / ETN / ELW
df = get_market_trading_value_and_volume_by_ticker("20200907", market="KOSDAQ", investor="전체", market_detail="ELW")
print(df.head())
여러 개의 market_detail
을 리스트로 지정해서 한 번에 조회할 수 있습니다.
interest_market = ["ETF", "ELW"]
df = get_market_trading_value_and_volume_by_ticker("20200907", market="KOSDAQ", investor="전체", market_detail=interest_market)
print(df.head())
당일 매매내역은 당일 정규시장 마감 이후(오후 3시 45분 예정) 반영되며, 시간외 등의 매매내역이 포함된 최종 매매내역은 당일자 마감 이후(오후 6시 예정) 제공됩니다.
get_exhaustion_rates_of_foreign_investment_by_ticker() 함수는 상장주식수/외국인한도수량/외국인보유수량/외국인한도소진률 정보를 조회합니다. 외국인 보유수량 및 한도소진율은 장개시 시점 기준(금융감독원 외국인투자 관리시스템 제공 전일자 확정치)입니다.
df = stock.get_exhaustion_rates_of_foreign_investment_by_ticker('20200703')
print(df.head())
상장주식수 한도수량 보유수량 소진률
000020 27931470 27931470 1400966 5.019531
000040 91661018 91661018 43190959 47.125000
000050 27415270 27415270 773627 2.820312
000060 113680000 113680000 12968255 11.406250
000070 8564271 8564271 661240 7.718750
두 번째 파라미터 market
은 코스피(KOSPI)/코스닥(KOSDAQ)/코넥스(KONEX) 시장을 지정해서 조회할 수 있습니다.
df = stock.get_exhaustion_rates_of_foreign_investment_by_ticker('20200703', "KOSPI")
print(df.head())
세 번째 파라미터 balance_limit
을 True
로 지정하면 외국인 보유한도의 제한 종목만 검색할 수 있습니다. 지정하지 않으면 False
입니다.
df = stock.get_exhaustion_rates_of_foreign_investment_by_ticker('20200703', "KOSPI",
balance_limit=True)
print(df.head())
코스피 인덱스를 조회합니다.
get_index_ticker_list() 함수는 코스피 인덱스를 리스트로 반환합니다.
tickers = stock.get_index_ticker_list()
print(tickers)
['1001', '1028', '1034', '1035', '1167', '1182', ...]
현재의 인덱스와 과거의 인덱스가 다를 수 있기 때문에 일자를 입력하면 입력한 일자에 존재하는 인덱스를 반환 합니다.
tickers = stock.get_index_ticker_list("19800104")
코스닥 인덱스를 조회할 때는 market
옵션을 추가합니다.
tickers = stock.get_index_ticker_list(market='KOSDAQ')
get_index_name
함수를 사용해서 티커의 이름을 얻을 수 있습니다.
for ticker in stock.get_index_ticker_list():
print(ticker, stock.get_index_ticker_name(ticker))
1001 코스피
1028 코스피 200
1034 코스피 100
1035 코스피 50
1167 코스피 200 중소형주
1182 코스피 200 초대형제외 지수
1244 코스피200제외 코스피지수
1150 코스피 200 커뮤니케이션서비스
1151 코스피 200 건설
1152 코스피 200 중공업
1153 코스피 200 철강/소재
1154 코스피 200 에너지/화학
1155 코스피 200 정보기술
1156 코스피 200 금융
1157 코스피 200 생활소비재
1158 코스피 200 경기소비재
1159 코스피 200 산업재
1160 코스피 200 헬스케어
1005 음식료품
1006 섬유의복
1007 종이목재
1008 화학
1009 의약품
1010 비금속광물
1011 철강금속
1012 기계
1013 전기전자
1014 의료정밀
1015 운수장비
1016 유통업
1017 전기가스업
1018 건설업
1019 운수창고업
1020 통신업
1021 금융업
1022 은행
1024 증권
1025 보험
1026 서비스업
1027 제조업
1002 코스피 대형주
1003 코스피 중형주
1004 코스피 소형주
1224 코스피 200 비중상한 30%
1227 코스피 200 비중상한 25%
1232 코스피 200 비중상한 20%
인덱스를 구성하고 있는 종목의 티커를 리스트로 반환합니다. 1005
는 섬유의복 인덱스로, 이는 37개의 종목으로 구성돼 있음을 알 수 있습니다.
pdf = stock.get_index_portfolio_deposit_file("1005")
print(len(pdf), pdf)
37 ['011150', '097950', '023150', '005610', '002140', ...]
get_index_ohlcv_by_date() 함수는 입력된 기간 동안의 인덱스 OHLCV를 조회합니다. 다음은 20190101-20190228 동안의 "코스피 200" 인덱스의 OHLCV를 조회합니다.
df = stock.get_index_ohlcv_by_date("20190101", "20190228", "1028")
print(df.head(2))
시가 고가 저가 종가 거래량
20190102 263.350006 263.769989 257.470001 258.230011 69950000
20190103 258.190002 258.700012 255.350006 255.770004 90521000
get_index_ohlcv_by_date() 함수에 frequency 파라미터(d/m/y)를 추가할 수 있습니다. d는 일자, m은 월, y는 연도를 의미합니다. 다음은 20190101부터 20190228까지의 "코스피 200"의 월별 OHLCV를 출력합니다.
df = stock.get_index_ohlcv_by_date("20190101", "20190228", "1028", "m")
print(df.head(2))
시가 고가 저가 종가 거래량
201901 263.350006 288.869995 254.550003 285.890015 2157758000
201902 287.070007 290.320007 280.019989 283.799988 1498968000
get_index_kospi_by_group() 함수는 코스피 인덱스별로 기준지수와 현재지수를 출력합니다.
df = stock.get_index_kospi_by_group("20190228")
print(df.head())
기준시점 발표시점 기준지수 현재지수 시가총액
코스피 1983.01.04 1980.01.04 100.0 2195.44 1448767024
코스피 200 1994.06.15 1990.01.03 100.0 283.80 1254863174
코스피 100 2000.03.02 2000.01.04 1000.0 2152.14 1135924335
코스피 50 2000.03.02 2000.01.04 1000.0 1884.17 960728527
코스피 200 중소형주 2015.07.13 2010.01.04 1000.0 1011.56 118938839
두 번째 파라미터에 시장 정보를 추가할 수 있습니다. 다음은 코스닥 시장의 지수 정보를 출력합니다.
df = stock.get_index_status_by_group("20190228", "KOSDAQ")
print(df.head())
기준시점 발표시점 기준지수 현재지수 시가총액
코스닥 1997.01.03 1996.07.01 1000.0 731.25 249196922
코스닥 150 2015.07.13 2010.01.04 1000.0 1235.26 125083558
코스닥 150 정보기술 2016.07.11 2010.01.04 1000.0 557.56 22063096
코스닥 150 헬스케어 2016.07.11 2010.01.04 1000.0 4154.27 48499634
코스닥 150 커뮤니케이션서비스 2016.07.11 2010.01.04 1000.0 2398.96 12856320
get_index_price_change_by_name() 함수는 지수의 등락률/거래량/거래대금을 반환하며, KRX / KOSPI / KOSDAQ 세 개의 지수를 지원합니다. 코스피, 코스닥 지수의 통계(거래량, 거래대금 등)는 외국주 등까지 포함한 시장 전체 통계입니다.
df = stock.get_index_price_change_by_name("20200520", "20200527", "KOSDAQ")
print(df.head())
시가 종가 등락률 거래량 거래대금
코스닥지수 696.36 724.59 4.05 10488319776 62986196230829
코스닥 150 1065.42 1102.57 3.49 729479528 18619100922088
제조 2266.76 2371.51 4.62 4855249693 27936884984652
음식료·담배 9253.67 9477.11 2.41 156868081 1171238893745
섬유·의류 141.03 147.24 4.40 107124162 449845448978
KRX는 (T+2)일 이후의 데이터를 제공합니다. 최근 영업일이 20190405라면 20190403일을 포함한 이전 데이터를 얻을 수 있습니다.
get_shorting_status_by_date() 메서드는 시작일/종료일/티커 세 개의 파라미터를 입력받아 공매도 현황을 DataFrame으로 반환합니다.
df = stock.get_shorting_status_by_date("20181210", "20181212", "005930")
print(df)
당일 잔고와 (전일 잔고 + 당일 공매도 - 당일 상환) 수량은 정확하게 일치하지 않을 수 있습니다. 이는 투자자가 보유한 공매도잔고 비율이 상장주식수의 0.01% 미만인 경우 보고의 의무가 없기 때문에 집계되지 않을 수 있습니다.
공매도 잔고 공매도금액 잔고금액
20190401 154884 3403293 6981626250 153318349650
20190402 186528 3435390 8529586850 157169092500
20190403 211750 3380137 9837895500 157514384200
get_shorting_volume_by_ticker() 함수는 입력받은 일자의 공매도 거래량 정보를 반환합니다.
df = stock.get_shorting_volume_by_ticker("20190401", "KOSPI")
print(df.head())
공매도거래량 총거래량 비중 공매도거래대금
095570 46 46739 0.10 221785
068400 317 100323 0.32 3740150
006840 641 29857 2.15 34398200
027410 11302 161271 7.01 90395730
282330 8023 15957 50.28 1480534000
코스피/코스닥의 공매도 거래량을 조회할 수 있습니다. 사용하지 않을 경우 코스피가 선택됩니다.
df = stock.get_shorting_volume_by_ticker("20190401", "KOSDAQ")
print(df.head())
조회 속도는 조회 기간에 비례해서 증가합니다.
get_shorting_volume_by_date() 함수는 입력받은 종목에 대해 주어진 기간 동안의 공매도 거래 정보를 반환합니다.
df = df = stock.get_shorting_volume_by_date("20200101", "20200115", "005930")
print(df.head())
공매도거래량 총거래량 비중 공매도거래대금
20200102 39485 12993228 0.30 2186007900
20200103 218704 15422255 1.42 12127503500
20200106 167348 10278951 1.63 9255135600
20200107 142717 10009778 1.43 7993441900
20200108 642430 23501171 2.73 36227648000
get_shorting_investor_volume_by_date() 함수는 시작일/종료일 두 개의 파라미터를 입력받아 해당 기간동안 코스피 종목의 투자자별 공매도 거래량을 DataFrame으로 반환합니다.
df = stock.get_shorting_investor_volume_by_date("20190401", "20190405", "KOSPI")
print(df.head()) print(df)
기관 개인 외국인 기타 합계
20190401 3402249 133996 5702788 200 9239233
20190402 2883434 139801 5580395 0 8603630
20190403 3589910 127075 6375248 0 10092233
20190404 3200221 119193 5604505 1405 8925324
20190405 3163018 134396 6882981 1754 10182149
market 옵션을 사용하면 코스닥의 공매도 거래량을 조회할 수 있습니다. 사용하지 않을 경우 코스피가 선택됩니다.
df = stock.get_shorting_investor_volume_by_date("20190401", "20190405", "KOSDAQ")
print(df.head())
기관 개인 외국인 기타 합계
20190401 913528 398779 5283672 0 6595979
20190402 841544 267618 7295980 249 8405391
20190403 874047 208539 6526794 0 7609380
20190404 1136765 192503 6566776 0 7896044
20190405 1051807 232488 6618597 0 7902892
get_shorting_investor_price_by_date() 함수는 시작일/종료일 두 개의 파라미터를 입력받아 해당 기간동안 코스피 종목의 투자자별 공매도 거래대금을 DataFrame으로 반환합니다.
df = stock.get_shorting_investor_price_by_date("20190401", "20190405", "KOSPI")
print(df.head())
기관 개인 외국인 기타 합계
20190401 105536073368 2936388505 168285844893 30302100 276788608866
20190402 96384728941 2951117600 160734480125 0 260070326666
20190403 112539971387 2169492030 180355524574 0 295064987991
20190404 92635400253 2294543280 175873863029 10918080 270814724642
20190405 90581343837 1221266912 150558110496 2218810 242362940055
코스닥의 공매도 거래량 또한 조회할 수 있습니다.
df = stock.get_shorting_investor_volume_by_date("20190401", "20190405", "KOSDAQ")
print(df.head())
기관 개인 외국인 기타 합계
20190401 20345961749 2766677625 69741628204 0 92854267578
20190402 18131296688 1614215195 65974380594 7009350 85726901827
20190403 12288386154 2796139160 83568208742 0 98652734056
20190404 23535031919 2293798208 70410033688 0 96238863815
20190405 26473311289 2117625828 70100665837 0 98691602954
get_shorting_balance_by_date() 메서드는 시작일/종료일 두 개의 파라미터를 입력받아 해당 기간동안 공매도 잔고 정보를 DataFrame으로 반환합니다.
df = stock.get_shorting_balance_by_date("20190401", "20190405", "005930")
print(df.head())
공매도잔고 상장주식수 공매도금액 시가총액 비중
날짜
20190401 3403293 5969782550 153318349650 268938703877500 0.06
20190402 3435390 5969782550 157169092500 273117551662500 0.06
20190403 3380137 5969782550 157514384200 278191866830000 0.06
조회 속도는 조회 기간에 비례해서 증가합니다.
get_shorting_trade_top50() 메서드는 조회일자를 입력받아 해당일 코스피 종목의 거래 비중 TOP 50을 DataFrame으로 반환합니다.
df = stock.get_shorting_volume_top50("20190401", "KOSPI")
print(df.head())
순위 공매도거래대금 총거래대금 공매도비중 직전40일거래대금평균 공매도거래대금증가율 직전40일공매도평균비중 공매도비중증가율 주가수익률
DGB금융지주 1 5041915380 7429640690 67.862000 855497798 5.894 16.900000 4.015 2.081
BGF리테일 2 1594605500 3610016500 44.172001 866076025 1.841 19.277000 2.291 -3.432
쌍용차 3 301318290 787566640 38.258999 55733550 5.406 7.131000 5.366 -1.373
GS리테일 4 2121989300 5601127100 37.884998 895386019 2.370 16.672001 2.272 -1.277
한라홀딩스 5 104073700 335436950 31.025999 64204705 1.621 8.073000 3.843 1.597
코스닥의 공매도 거래량 또한 조회할 수 있습니다.
df = stock.get_shorting_volume_top50("20190401", "KOSDAQ")
print(df.head())
순위 공매도거래대금 총거래대금 공매도비중 직전40일거래대금평균 공매도거래대금증가율 직전40일공매도평균비중 공매도비중증가율 주가수익률
유니슨 1 161114740 644179185 25.011000 38085924 4.230 4.941 5.062 2.308
포스코케미칼 2 6556483500 27119922000 24.176001 4113259825 1.594 12.031 2.009 -0.332
와이지엔터테인먼트 3 3434609200 14793204050 23.216999 2342244426 1.466 11.391 2.038 -1.724
에이치엘비 4 4924909000 23529248200 20.931000 3037153098 1.622 7.379 2.836 0.125
셀트리온제약 5 837431500 4120898000 20.322001 728907003 1.149 10.656 1.907 0.903
get_shorting_balance_top50() 메서드는 조회 일자를 입력받아 해당 일의 공매도 잔고 TOp 50을 DataFrame으로 반환합니다.
df = stock.get_shorting_balance_top50("20190401", "KOSPI")
print(df.head())
종목명 순위 잔고수량 주식수 잔고금액 시가총액 비중
009150 삼성전기 1 10375082 74693696 1115321315000 8029572320000 13.89
068270 셀트리온 2 12351103 125461438 2247900746000 22833981716000 9.84
042670 두산인프라코어 3 19227597 208161279 140553734070 1521658949490 9.24
008770 호텔신라 4 3276701 39248121 313580285700 3756045179700 8.35
204320 만도 5 2741999 46957120 80477670650 1378191472000 5.84
코스닥 또한 거래량을 조회할 수 있습니다.
df = stock.get_shorting_balance_top50("20190401", "KOSDAQ")
print(df.head())
종목명 순위 잔고수량 주식수 잔고금액 시가총액 비중
티커
215600 신라젠 1 10682769 70363125 691175154300 4552494187500 15.18
028300 에이치엘비 2 3583715 39235182 287055571500 3142738078200 9.13
086520 에코프로 3 1537840 22090191 42675060000 613002800250 6.96
263750 펄어비스 4 868937 13015720 145286266400 2176228384000 6.68
200230 텔콘RF제약 5 5239941 82736256 39771152190 627968183040 6.33
get_etf_ticker_list() 함수는 입력된 날짜에 해당하는 ETF 티커를 리스트로 반환합니다. 날짜는 유효한 영업일이여야 올바른 값이 출력됩니다.
tickers = stock.get_etf_ticker_list("20200717")
print(tickers[:10])
['346000', '342140', '342500', '342600', '342610', .... ]
get_etf_ohlcv_by_date() 함수는 ETF의 OHLCV를 일자별로 출력합니다. 다음은 "ARIRANG 200동일가중(295820)"의 OHLCV를 출력합니다.
df = stock.get_etf_ohlcv_by_date("20190401", "20190405", "295820")
print(df.head())
NAV 시가 고가 저가 종가 거래량 거래대금 기초지수
20190401 9171.40 9080 9175 9080 9170 27 0 2029.91
20190402 9147.04 9150 9150 9095 9140 331 3000000 2024.53
20190403 9239.89 9115 9235 9110 9235 401 3000000 2045.12
20190404 9254.05 9250 9275 9220 9250 325 3000000 2048.28
20190405 9270.59 9235 9260 9225 9235 60 0 2051.92
get_etf_ohlcv_by_date() 함수에 frequency 파라미터(d/m/y)를 추가할 수 있습니다. d는 일자, m은 월, y는 연도를 의미합니다. 다음은 20190301부터 20190405까지의 "ARIRANG 200동일가중"의 월별 OHLCV를 출력합니다.
df = stock.get_etf_ohlcv_by_date("20190301", "20190405", "295820", 'm')
print(df.head())
시가 고가 저가 종가 거래량
201903 9325 9400 8950 9055 125412
201904 9080 9275 9080 9235 1144
get_etf_ticker_list()로 얻어온 티커를 사용해서 반복적으로 OHLCV를 조회할 수 있습니다.
import time
tickers = stock.get_etf_ticker_list()
for ticker in tickers[:10]:
df = stock.get_etf_ohlcv_by_date("20190301", "20190405", ticker)
print(df.head(2))
time.sleep(1)
get_etf_portfolio_deposit_file() 함수는 ETF를 구성하는 종목/비중 정보를 얻어옵니다.
다음은 KODEX 200동일가중(252650)의 PDF를 조회합니다.
df = stock.get_etf_portfolio_deposit_file("252650", "20190329")
print(df.head())
평가 금액이 종목당 약 1200만정도로 비중이 조절된 것을 확인할 수 있습니다.
계약수 금액 비중
동원시스템즈 337 11963500 0.59
호텔신라 121 11543400 0.57
신세계 34 11475000 0.57
엔씨소프트 23 11408000 0.56
LG생활건강 8 11336000 0.56
날짜를 입력하지 않으면 조회 시점을 기준으로 조회합니다.
df = stock.get_etf_portfolio_deposit_file("252650")
print(df.head())
get_etf_price_deviation() 함수는 ETF의 종가/순자산가치/괴리율 정보를 얻어옵니다. 다음은 ARIRANG 200동일가중(295820) 종목의 괴리율을 출력합니다.
df = stock.get_etf_price_deviation("20200101", "20200401", "295820")
print(df.head())
종가 NAV 괴리율
날짜
2020-01-02 8285 8302.580078 -0.21
2020-01-03 8290 8297.889648 -0.10
2020-01-06 8150 8145.950195 0.05
2020-01-07 8220 8226.049805 -0.07
2020-01-08 7980 7998.839844 -0.24
get_etf_tracking_error() 함수는 ETF의 순자산가치/기초지수/추적오차 정보를 얻어옵니다.
df = get_etf_tracking_error("20200101", "20200401", "295820")
print(df.head())
NAV 지수 추적오차
날짜
2020-01-02 8302.580078 1819.109985 0.32
2020-01-03 8297.889648 1818.130005 0.32
2020-01-06 8145.950195 1784.719971 0.32
2020-01-07 8226.049805 1802.339966 0.32
2020-01-08 7998.839844 1752.359985 0.32
df = bond.get_treasury_yields_in_kerb_market("20190208")
수익률 등락폭
장외 일자별 채권수익률
국고채 1년 1.743 -0.008
국고채 3년 1.786 -0.015
국고채 5년 1.853 -0.023
국고채 10년 1.965 -0.030
국고채 20년 2.039 -0.022
국고채 30년 2.034 -0.021
국민주택 1종 5년 1.935 -0.023
회사채 AA-(무보증 3년) 2.234 -0.015
회사채 BBB-(무보증 3년) 8.318 -0.014
CD(91일) 1.860 0.000