파이썬으로 거래소에서 국내 증시 종목 정보 얻어오기 - alphaj_krxcrawler 패키지

in #kr6 years ago

alphaj_logo.png

Alpha J Investment


필자가 프로그래밍 강의를 진행할 때, 첫 수업 시간에 수강생들에게 꼭 설명해주는 내용이 있다.

필자가 "프로그램 실행 흐름"이라고 부르는 것이다.

우리가 사용하는 모든 프로그램은 크게 3단계의 큰 흐름으로 쪼갤 수 있다.

  • 데이터의 수집 & 입력

  • 데이터의 가공

  • 데이터의 저장

모든 프로그램은 위와 같은 3단계 과정을 순차적으로 거쳐서 수행된다.

오늘 포스팅에서 다룰 내용은 위 3단계 과정 중 첫번째 과정에 해당하는 내용이다.

필자가 "본 전쟁에 나가기 전에, 총알을 준비하는 과정"이라고 표현하는 과정이다.

주식 투자와 관련된 프로그램을 작성하고자 하는 사람들은, 대부분 한번쯤은 국내에 상장된 모든 기업의 정보가 필요하다고 느끼는 시점을 맞이하게 된다.

이는 자연스러운 흐름이다. 국내 증시를 대상으로 퀀트 투자를 해보고 싶던, 공시 정보를 수집하고 싶던 상장된 기업들의 목록을 알고나야 앞에 과정들을 수행할 수 있기 때문이다.

데이터를 구하는 방법은 크게 2가지가 있다. 잘 정제된 데이터를 판매하는 업체에서 구매하거나, 아님 직접 구하거나.

직접 데이터를 구하기로 마음을 먹은 경우, 우리는 "크롤링 (Crawling")이라는 과정을 수행해서 데이터를 구해야만 한다. 간단히 말하면, 웹페이지 화면에 표시된 데이터를 프로그램을 이용해 읽어들여 우리가 원하는 형태로 가공한 다음, 저장하는 것이다.

크롤링을 직접 수행하기 위해서는 번거로운 노가다를 여러 번 수행해야 한다. 웹페이지의 구조를 파악하고 페이지 상의 데이터가 어떤식으로 서버에 요청되고 페이지에 그려지는지 그 과정을 모두 이해해야 한다. 그래서 크롤링을 수행해 데이터를 수집하고 정제하는 과정은 상당히 시간이 많이 드는 작업이고, 번거로운 과정이다.

위에서 언급한 국내에 상장된 종목 정보 (종목코드, 종목명, 산업구분, 시가총액 등)를 얻으려면, 한국거래소의 데이터를 활용하면 된다.

한국거래소는 투자자들이 쉽게 데이터를 수집할 수 있게 하기 위해 자체 제작한 API를 배포해서 데이터를 받아갈 수 있도록 해두었지만, 하루에 호출 가능한 횟수 제한이 있다는 치명적인 단점이 존재한다.

따라서 예를 들어 만약 백테스트를 위해 특정 시점의 종목 정보를 얻고자 API를 여러번 호출해야 한다면 횟수 제한에 걸려 데이터를 받아오지 못하는 현상을 겪을수도 있다.

이를 우회하기 위해서는 위에서 언급한 크롤링 과정을 수행해야 하지만, 이 역시 매우 번거로운 과정이다.

알파J인베스트먼트는, 퀀트 투자의 대중화를 위해
한국거래소의 종목 정보를 손쉽게 얻어올 수 있는 크롤러 패키지를 제작해,
투자자들에게 무료로 배포하고 있다.

해당 패키지의 이름은 alphaj_krxcrawler로, 누구나 공짜로 설치 가능한 파이썬 패키지이다.

pip install alphaj_krxcralwer

명령어로 설치할 수 있고,

def save_stock_list_as_excel(file_name, target_date=None)
def get_stock_list_from_krx(target_date=None)

2개의 함수를 제공한다.

두 함수 모두, target_date에 지정한 datetime 객체의 날짜에 해당하는 국내 증시 상장 종목 리스트를 가져오는 함수로,

target_date를 지정하지 않을 경우 해당 날짜로부터 가장 가까운 시점에 업데이트 된 상장 주식 목록을 가져온다.

save_stock_list_as_excel 함수는 file_name 인자로 지정한 파일이름으로 다음과 같은 엑셀 파일을 저장한다.

get_stock_list_from_krx 함수는 다음과 같은 형태의 json 배열을 반환한다:

target_date 지정을 통해, 과거 시점의 상장 종목을 가져올 수 있다는 점이 본 패키지의 특징이다.

이는 과거 시점의 데이터를 이용해야 하는 백테스트 등에서 유의미하게 사용 될 수 있을 것이다.

해당 패키지는 현재 상장 종목의 리스트만 가져오는 기능만 구현되어 있지만,

추후 재무 데이터, 공시 정보 등도 가져올 수 있도록 기능이 추가 될 예정이다.

추후 해당 데이터를 파이썬을 이용해 직접 크롤링 하는 방법도 알파J인베스트먼트 공식 블로그를 통해 정리할 예정이니, 많은 기대 부탁드린다.

본 패키지가 퀀트 투자의 활성화에 도움이 되길 바라며..


이 글을 읽으시는 모든 분들의 경제적 자유를 염원합니다.

​이 글이 도움이 되셨다면, 주변에 공유해주세요! 올바른 투자 문화를 전파하는 데에 동참해주셨으면 합니다.

이 땅에 사는 모든 사람이 투자자가 되어 행복해지길 바랍니다.

Alpha J (알파J인베스트먼트 대표)

공식 웹사이트: http://alphaj-im.com/
공식 유튜브: https://www.youtube.com/channel/UC1XZU7dLsIJKMhpNTwH3uEw
공식 블로그: https://jaeminyx.blog.me/

Sort:  

짱짱맨 호출에 응답하였습니다.

Congratulations @alphaj! You received a personal award!

Happy Birthday! - You are on the Steem blockchain for 1 year!

You can view your badges on your Steem Board and compare to others on the Steem Ranking

Do not miss the last post from @steemitboard:

3 years on Steem - The distribution of commemorative badges has begun!
Happy Birthday! The Steem blockchain is running for 3 years.
Vote for @Steemitboard as a witness to get one more award and increased upvotes!