본문 바로가기
백테스트

미국 주식(ETF) 종가 데이터 가져오는 방법 (Python)

by 꼬마퀀트 2021. 12. 24.
반응형

안녕하세요. 꼬마퀀트입니다. 오늘부터 유튜브 "할 수 있다! 알고 투자"의 강환국 님이 저술하신 "거인의 포트폴리오"에서 설명되는 많은 전략들 혹은 포트폴리오를 백테스트해보려고 합니다. 

기본적으로 "거인의 포트폴리오"에서 다루어지는 포트폴리오들은 미국 주식(ETF)의 종가 데이터를 사용하여 자산배분과 마켓타이밍으로 이루어진 전략으로 백테스트를 하기 때문에 가장 기본적인 주가 데이터를 어떻게 가져오는지 알아보겠습니다.

주가 데이터를 얻어오는 방법에는 여러 방법들(Excel 다운로드, 크롤링, 라이브러리/모듈 등등)이 있으나 "거인의 포트폴리오" 전략을 구현할 때에는 오픈소스 라이브러리인 파이썬 패키지를 사용할 예정입니다.

pandas-datareader는 Yahoo Finance의 가격 데이터를 읽어올 수 있는 라이브러리이며, 읽어 들인 가격 데이터는 pandas의 dataframe 형태로 반환됩니다.

저의 경우에는 해당 소스코드를 간단하게 테스트하기 위해서 JupyterLab을 사용해서 결과를 확인하였습니다. 만약 Jupyter 개발환경의 세팅이 어렵거나 개발환경을 세팅하지 못하더라도 구글에서 지원해주는 Colab(하기 링크를 참조)을 이용하면 별도의 환경 세팅 없이 해당 코드를 테스트해볼 수 있습니다. 추후에 시간이 된다면 Colab과 연동하여 공유하도록 하겠습니다.

https://colab.research.google.com/notebooks/intro.ipynb

 

Google Colaboratory

 

colab.research.google.com

 

주가 데이터 (pandas dataframe)

위의 주가 데이터(pandas dataframe)를 보았을 때, 2004년 11월 18일부터 시작으로 되어있는데 그 이유는 ETF의 운용 시작일이 모두 다르다 보니 시작일이 달라서 NAN의 데이터를 갖는 경우 삭제하였습니다. "거인의 포트폴리오"의 백테스트 결과는 모두 allocatesmartly(하기의 링크 참조)에서 결과를 얻어낸 것이며 ETF 운용 시작일보다도 더 많은 데이터를 가지고 있습니다. 그 이유는 각 ETF의 인덱스 지수를 추종하여 포트폴리오의 양상을 파악하기 위해서 시뮬레이션 데이터를 만들어 낸 것이기 때문에 더 많은 데이터를 제공하고 있습니다. 추후에 시간이 남는다면 시뮬레이션 데이터를 만들어서 백테스트해보고 싶지만, 일단은 가지고 있는 데이터를 통해 포트폴리오 전략들을 구현해보는걸 우선적으로 할 예정입니다.

다음 포스팅부터는 가져온 주가 데이터를 활용해 책에서 보여주는 결과와 유사하게 투자기간, 초기 자산, 최종 자산, 연복리수익률, 승률, MDD 등 다양한 성과와 지표를 분석하는 방법을 공유드리겠습니다.  

https://allocatesmartly.com

 

Allocate Smartly

The industry's best tactical asset allocation strategies, in one place. The industry's best tactical asset allocation strategies, all in one place. LEARN MORE

allocatesmartly.com

 

 

반응형

'백테스트' 카테고리의 다른 글

가격 데이터 리샘플링 방법 (Python)  (0) 2021.12.26

댓글