지난 포스팅에서 pykrx를 사용하여 한국거래소 KRX 정보데이터시스템에서 개별 종목 및 시장의 OHLCV 가격정보, EPS, PER, BPS, PBR, 배당 정보, 그리고 시가총액 및 상장주식수 등을 가져오는 방법을 살펴보았다. 이번에는 투자자별 매매동향, 투자주체별 거래실적을 가져오는 방법을 알아보자.
우선 get_market_trading_value_by_date을 이용하여 외국인/기관/개인 별 거래실적을 가져와보자. 이 펑션은 거래수량이 아닌 순매수 실적을 리턴해준다.
df = stock.get_market_trading_value_by_date('20230126', '20240203', '005930')
print(df)
순 매수 실적이 아닌, 매수수량 or 매도수량을 보고 싶다면 'on' 파라메터를 활용한다. '매수' or '매도' (한글로..) 넣어주면 된다.
df = stock.get_market_trading_value_by_date('20230126', '20240203', '005930', on='매도')
print(df)
이 펑션으로는 종목별 거래 실적이 아닌, 시장 총 거래실적도 볼 수 있다. 티커 대신에 'KOSPI', 'KOSDAQ', 'KONEX' 아니면 전체 시장에 대해 조회하려면 'ALL'을 넣으면 된다.
df = stock.get_market_trading_value_by_date('20230126', '20240203', 'KOSPI')
print(df)
이번에는 같은 펑션에서 'detail'이란 파라메터에 'True'로 값을 넣어보자. 기존에 나오던 기관, 외국인 등이 더 세분화되어 나오는 것을 볼 수 있다. 증권사 앱에서 나오는 대부분의 데이터의 원천이 한국거래소(KRX)인 만큼, 여러분이 보던 데이터는 다 여기에도 있다고 보면 된다.
df = stock.get_market_trading_value_by_date('20230126', '20240203', '005930', detail=True)
print(df)
get_market_trading_value_by_date와 비슷한 펑션인데, 이번엔 get_market_trading_value_by_investor다. 출력되는 값은 같으나 표현이 다르다. 행(row)과 열(column)이 바뀌어 출력된다.
df = stock.get_market_trading_value_by_investor('20230126', '20240203', '005930')
print(df)
여기서 끝이 아니다. 우리가 증권사 앱에서 자주보던 외인 매수 상위, 기관 매수 상위 등의 정보도 역시 원천은 KRX이다. 물론 지금까지 살펴본 기능으로도 계산할 수 있겠으나, get_market_net_purchases_of_equities를 사용해 뽑아 보자. 이 펑션에서 리턴된 데이터를 sorting만 하면 매수 상위 데이터다.
파라메터는 시장과 투자주체를 넣어줘야 하는데 이 투자주체에 들어갈 수 있는 값은 아래와 같다.
- 금융투자 / 보험 / 투신 / 사모 / 은행 / 기타금융 / 연기금 / 기관합계 / 기타법인 / 개인 / 외국인 / 기타외국인 / 전체
df = stock.get_market_net_purchases_of_equities('20230126', '20240203', 'KOSPI', '외국인')
print(df)
국내 주식시장에서 최강 수급주체는 역시 외국인이다. 이 때문인지 외국인 지분, 한도소진률 등을 보여주는 펑션도 제공한다. 한도소진률이란 무슨 스크린쿼터제처럼 종목별로 외국인이 살 수 있는 비율이 정해져 있는 종목들이 있다. 소위 국가 기반 산업이라는 데에 이런 쿼터를 걸어놨는데, 대표적인 게 전력, 통신 등의 유틸리티 산업이다. 이 한도소진율이 없는 종목들은 지분율과 한도소진률이 동일하게 나온다.
get_exhaustion_rates_of_foreign_investment이라는 펑션으로 외국인 한도소진율을 조회해보자.
df = stock.get_exhaustion_rates_of_foreign_investment('20231001', '20240302', '005930')
print(df)
마찬가지로 날짜만 넣었을 경우에는 특정일자에 대해 전체종목 데이터 조회가 가능하다.
df = stock.get_exhaustion_rates_of_foreign_investment('20231004')
print(df)
아직 끝이 아니다. 한국거래소 정보데이터시스템에서 제공하는 데이터가 워낙 많고, 이 pykrx에서는 이 데이터를 모두 긁어오도록 펑션화 하여 제공하기 때문에 개별종목에 대한 펑션은 해당 포스팅에서 이 정도로 마치고 나머지 내용은 추후 이어서 진행한다. 다음은 지수, 인덱스 정보를 가져오는 방법을 살펴본다.