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

in #kr • 8 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!