python 파이썬으로 주식/주가 정보, ETF/ETN 가격, 구성종목 등 가져오기 : pykrx (한국거래소 정보 데이터 시스템 스크래핑)

반응형

  종목, 지수데이터에 이어 이번에는 pykrx를 이용해 한국 거래소 KRX 정보데이터시스템에서 ETF/ETN 데이터를 가져오는 방법을 알아보자. 근데 ETF와 ETN은 도대체 무엇이 다르냐. ETF는 Exchange Traded Fund, ETN은 Exchange traded Note. 발행주체가 다르니 법적 성격이 다르니 하는 것보다는 단순히 하나는 펀드고 하나는 채권이라고 생각하면 이해하기 쉽다. 평소에 거래하는 데는 두 개의 차이점은 아예 없다. 허나 채권은 만기가 있다. ETN은 만기가 되면 현재 기준가액으로 청산된다. 물론 만기가 10년씩은 되니까 평소에는 문제가 없긴 하지만 쳐 물렸다고 장기투자한답시고 냅둿다가 그대로 손실확정 짓기 딱 좋은 상품.(더군다나, 시중에 유통되는 대부분의 ETN은 상품 선물 등을 구성종목에 넣어놨기 때문에 장투 시, 롤오버 비용만 주구장창 내기 십상이다.)

  우선 ETF 및 ETN 리스트를 가져와보자. 근데 ETF, ETN 리스트를 가져오는 펑션은 다 한 글자씩 다르다. ETF 리스트를 가져오는 건, get_etf_ticker_list, ETF 이름을 가져오는 건, get_etf_ticker_name, ETN은 각각 get_etn_ticker_list, get_etn_ticker_name 이다. 여기서는 ETF 위주로 설명한다.

from pykrx import stock

for ticker in stock.get_etf_ticker_list('20240306'):
    print(ticker, stock.get_etf_ticker_name(ticker))

pykrx로 ETF 리스트 출력

  기본적인 기능 세트는 개별종목 데이터를 가져오는 그것과 동일하다. 이번엔 가격 데이터를 가져와 보겠다.

df = stock.get_etf_ohlcv_by_date('20231215', '20240315', '122630')
print(df)

pykrx로 ETF 가격 정보 출력

  개별 종목 데이터와 차이가 있다면 'NAV'와 '기초지수' 컬럼이 있다는 것. 해당 데이터는 KODEX 레버리지(122630)의 데이터다. 해당 ETF는 KOSPI200 선물을 기초자산으로 한다. 이는 한국거래소나 네이버 증권에서 ETF분석 메뉴에 가면 나온다. NAV는 'Net Asset Value, 순자산가치'라고 하는데 ETF가 구성종목을 비율에 따라 담은 가치를 나타낸다. 쉽게 말하면 ETF의 적정가격이라고 보면 된다. 근데 실제 데이터를 보면 종가와 NAV가 약간씩 차이가 나는데, 이 차이를 괴리율이라고 한다. 거래가 많고 구성종목 거래 시장이랑 ETF 거래시장이랑 일치하면(장 시간이 일치하면) 이 괴리율이 낮다. 근데 만약 시카고 선물 거래소(CME)에서 거래되는 유가 WTI 선물을 추종하는 ETN의 경우, 장 시간이 안 맞기 때문에 괴리율이 수십 프로씩 나오곤 한다.

  또 추적오차라는 개념도 있는데 개념적으로는 기초지수와 ETF 시가의 차이다. 이 경우에는 기초지수가 KOSPI200이고 추적배수가 두 배이니 KOSPI 200 이 1% 오를 때 ETF 가격이 2% 오르면 되는 것인데, 이게 결국 NAV에 반영되기 때문에 괴리율이나 추적오차 하나만 보면 된다.

  이런 괴리율이나 추적오차가 발생하게 되면 잉여 혹은 부족 금액만큼 기초자산을 매수/매도하는 거래가 터지면서 이 괴리율을 줄여나간다. 단, 앞서 말했듯이 기초자산 시장 개장시간과 ETF, ETN 거래시간이 안 맞으면 기초자산을 매수/매도하지 못해 괴리율이 떠잇다가 기초자산 시장이 열리면 이 괴리율을 해소하는 것. 해법은 구성종목을 확인하고 거래량이 많은 종목을 거래하면 된다.

  말이 나온 김에 추적오차를 가져오는 펑션도 돌려보겠다.

df = stock.get_etf_tracking_error('20231201', '20240315', '122630')
print(df)

pykrx로 추적오차율 정보 출력

  이번엔 투자자별 거래실적이다.

df = stock.get_etf_trading_volume_and_value('20231201', '20240315', '122630')
print(df)

pykrx로 ETF 투자자별 거래 실적 출력

  재밌는 건 같은 펑션에 파라메터를 추가하면 리턴되는 데이터 구조가 달라진다. 기존에 넣었던 파라메터에 이어 거래량/거래대금, 순매수/매수/매도를 지정할 수 있다.

df = stock.get_etf_trading_volume_and_value('20231201', '20240315', '122630', '거래대금', '매수')
print(df)

  기간 합산으로 나오던 데이터가 일별로 출력된다.

pykrx로 ETF 일별 투자자별 거래 실적 출력

 

  앞에까지는 개별 종목과 그 기능이 동일하나 ETF/ETN은 구성종목(PDF, Portfolio Deposit File)이라는 게 있다. 이 데이터 역시 pykrx에서 제공하고 있다.

df = stock.get_etf_portfolio_deposit_file('122630')
print(df)

pykrx로 ETF 구성 종목 출력

  역시 무릇 PDF라 하면 종목과 금액 or 비중까지 나와야 한다. 근데 비중이 다 0이네? 원래는 나왔었는데 보니까 KRX에서 데이터를 안 보내주는 것 같다. 뭐 안되면 금액으로 가지고 계산하면 되긴 하지만..

  이 ETF 구성종목을 살펴본 적이 있는지 모르겠지만 잘 보면 KOSPI 200을 기초자산으로 한다 하지만 구성종목은 207개다. KOSPI 200 기초자산으로 하면 200개에 현금, 그리고 KOSPI 200 선물(위 화면에서는 마지막 것 101V60이 KOSPI200 6월 물 선물이다. 레버리지 상품이기 때문에 선물을 보유하고 있는 것)까지 해서 201, 202개가 돼야 될 듯하지만 잘 보면 다른 KOSPI200을 기초자산으로 하는 ETF를 몇 개 가지고 있다. 뭐 도낀 개 낀 이긴 하지만..

  다음은 이어서 ELW와 채권 관련된 기능을 살펴보겠다.

2024.03.28 - [주가 예측 모델/관련 package] - python 파이썬으로 주식/주가 정보, EPS, PER, PBR, 배당 등 가져오기 : pykrx (한국거래소 정보 데이터 시스템 스크래핑)

 

python 파이썬으로 주식/주가 정보, EPS, PER, PBR, 배당 등 가져오기 : pykrx (한국거래소 정보 데이터

이번에 살펴볼 패키지는 한국거래소(KRX)에서 데이터를 스크래핑하여 가져오는 pykrx이다. 한국거래소에서는 정보데이터시스템이라는 창구를 통해 엄청난 데이터들을 투자자들에게 공개하고 있

antsinvest.tistory.com

2024.03.28 - [주가 예측 모델/관련 package] - python 파이썬으로 주식/주가 정보, Forward PER 가져오기 : pykrx (한국거래소 정보 데이터 시스템 스크래핑)

 

python 파이썬으로 주식/주가 정보, Forward PER 가져오기 : pykrx (한국거래소 정보 데이터 시스템 스크

앞서 pykrx를 통해 KRX 한국거래소 정보데이터시스템에서 주식과 관련된 주가, PER, PBR, 배당 수익률, 투자주체별 거래실적, 외인 지분률 등 많은 데이터를 가져와 봤다. 근데 pykrx는 KRX 한국거래소

antsinvest.tistory.com

2024.03.28 - [주가 예측 모델/관련 package] - python 파이썬으로 주식/주가 정보, 투자자별 매매동향, 외국인/기관 투자주체 거래실적/수급 가져오기 : pykrx (한국거래소 정보 데이터 시스템 스크래핑)

 

python 파이썬으로 주식/주가 정보, 투자자별 매매동향, 외국인/기관 투자주체 거래실적/수급 가져

지난 포스팅에서 pykrx를 사용하여 한국거래소 KRX 정보데이터시스템에서 개별 종목 및 시장의 OHLCV 가격정보, EPS, PER, BPS, PBR, 배당 정보, 그리고 시가총액 및 상장주식수 등을 가져오는 방법을 살

antsinvest.tistory.com

2024.03.28 - [주가 예측 모델/관련 package] - python 파이썬으로 주식/주가 정보, Index 지수 가격, PER, 구성종목 등 가져오기 : pykrx (한국거래소 정보 데이터 시스템 스크래핑)

 

python 파이썬으로 주식/주가 정보, Index 지수 가격, PER, 구성종목 등 가져오기 : pykrx (한국거래소

앞서 pykrx를 이용해 한국거래소 KRX의 정보데이터시스템에서 개별 종목 데이터를 가져오는 방법을 알아보았다. 이번에는 Index 지수에 대한 정보를 가져오는 법을 알아보자. 이 인덱스를 도데체

antsinvest.tistory.com

2024.03.28 - [주가 예측 모델/관련 package] - python 파이썬으로 주식/주가 정보, 공매도 정보 가져오기 : pykrx (한국거래소 정보 데이터 시스템 스크래핑)

 

python 파이썬으로 주식/주가 정보, 공매도 정보 가져오기 : pykrx (한국거래소 정보 데이터 시스템

이전 포스팅에 이어서 pykrx를 이용해 한국거래소 KRX 정보데이터시스템에서 데이터를 가져오는 내용을 좀 더 살펴 본다. 이번에는 공매도 정보를 가져와볼텐데 공매도 데이터는 2일 이전 데이터

antsinvest.tistory.com

2024.03.28 - [주가 예측 모델/관련 package] - python 파이썬으로 주식/주가 정보, ELW, 채권 정보 가져오기 : pykrx (한국거래소 정보 데이터 시스템 스크래핑)

 

python 파이썬으로 주식/주가 정보, ELW, 채권 정보 가져오기 : pykrx (한국거래소 정보 데이터 시스템

이번에는 pykrx를 이용하여 한국 거래소 KRX 정보데이터시스템에서 ELW와 채권 정보를 가져와보겠다. 우선 ELW 데이터를 가져올 건데 이 ELW 관련된 데이터는 리스트와 종목명 정도 밖에 없다. from pyk

antsinvest.tistory.com

반응형