주가 데이터 수집 방법별 특징 및 장단점 비교

2021. 4. 16. 16:18데이터 분석/주식투자 실험실

728x90

 

 

작년부터 주식이나 코인에 관심을 갖는 젊은 분들이 많이 늘어난 것 같습니다.

 

예전에는 주로 40~50대 아저씨들과 만났을 때나 주로 들리던 주제인데, 요즘은 젊은 사람들 사이에서도 많이 얘기가 오가고, 대학교에서도 투자 스터디나 동아리들이 생기고 있다고 하네요.

 

특히, 요즘 젊은 층의 주식 투자는 예전보다 훨씬 스마트해지고 있는데, 다양한 인공지능을 활용한 투자 서비스를 활용한다든가, 아니면 코딩을 할 줄 아는 사람들은 본인이 직접 주식 데이터를 활용하여 최적의 투자 방법을 수립하거나 주가를 예측하는 알고리즘 트레이딩, 또는 퀀트 방법을 활용하기도 합니다.

 

알고리즘 트레이딩이나 주식 분석을 하기 위해서 가장 먼저 필요한 것은 바로 과거 주가 데이터입니다.

 

주가 데이터를 제대로 확보할 수 있는 것에서 부터 모든 것이 시작된다고 볼 수 있죠.

 

다른 데이터 분석과 달리 주가 데이터 분석은 데이터 확보 측면에 있어서 많은 이점이 있는데, KOSPI, KOSDAQ 상장된 주식은 한국거래소에 의해서 주가정보가 모두 공개되어 있다는 점입니다. 따라서 다양한 사이트나 앱, 신문 등을 통해 주가 정보를 확인할 수 있습니다.

 

하지만 한 두 종목의 주가가 아닌, 다량의 종목, 또는 수년 치의 장기간 주가정보를 확보하기 위해서는 데이터가 체계적으로 정리되어 제공하거나 수집하는 방법이 필요한데요, 크게 1) API, 2) 크롤링, 3) 데이터 구매 방법이 있습니다. 각 방법마다 특성이 다르기 때문에 본인에게 편리한 방법을 선택해서 활용하시는 것이 좋습니다.

 

 

 


 

1> API

 

API는 데이터나 서비스를 외부에서 이용할 수 있게 제공하는 인터페이스로, 우리나라에서 주가데이터를 제공하는 API로는 국내 주식으로는 대표적으로 대신증권 Cybos Plus, 키움증권 OpenAPI+, 이베스트투자증권 XingAPI가 있습니다.

 

이 증권사에서 제공하는 API는 일반적으로 많이 사용하는 일 단위 주가 뿐만 주, , 분 단위 등 다양한 데이터를 잘 정제하여 제공하고 있고, 각 증권사에서 지속적인 업데이트 및 관리를 하고 있어서 이용방법에 대한 문서화가 잘 되어 있는 편이며 Q&A 게시판 등을 통해 문의가 가능하기 때문에 기술지원이 비교적 잘 된다는 장점이 있습니다.

 

또한 API는 주가 데이터 제공 뿐만 아니라 매매 기능도 제공하고 있기 때문에, 주식 분석에서 나아가 자동 매매까지 구현하는 하나의 완결된 트레이딩 시스템을 만들기 위해서는 API 활용이 필수적입니다.

 

반면 API를 활용하기 위해서는 해당 제공사의 사이트에 회원가입을 해야하며, 증권계좌개설이 필요한 곳도 있기 때문에 등록절차가 번거로울 수 있습니다. 그리고 상당부분 이용자가 추가적인 가공, 분석을 할 것을 전제로 데이터를 제공하기 때문에, 다양한 분석 지표정보는 별도로 제공하지 않는 경우가 많습니다. 그리고 각 API마다 사용방법에 차이가 있기 때문에 사용하는 해당 API의 활용법에 대해 따로 약간의 공부가 필요한 점도 작은 단점이라고 볼 수 있겠네요.

 

+ 요인 : 많은 raw 데이터 확보 가능 / 이용 및 기술지원이 용이 / 자동 매매 구현 가능

 

- 요인 : 최초 이용절차를 거쳐야 함 / 고수준의 지표 정보가 적음 / API마다 사용방법에 차이가 있음

 

 


 

2> 크롤링

 

크롤링은 웹페이지 상에서 표시되는 숫자, 텍스트들을 긁어서 파일이나 데이터로 정리하는 것을 말합니다. 따라서 크롤링으로 주식 데이터를 수집하기 위해서는 주가 정보를 검색할 수 있는 사이트를 참고하는데요. 이러한 사이트들로는 포털 사이트의 증권 페이지, 경제지 사이트, 증권사 사이트 등 여러 군데가 있는데, 우리나라에서는 주로 네이버 증권을 많이 이용하는 것 같습니다. 시중의 주식 분석이나 퀀트 관련된 책들은 대부분 네이버 증권에서 데이터 크롤링하는 방법을 많이 알려주고 있습니다.

 

보통 증권 사이트의 경우 주가 정보 뿐만 아니라 각 종목의 재무정보, PER/PBR 등 부가지표, 배당률 등 참고할 만한 다양한 수치를 제공하기 때문에 API보다 많은 종류의 데이터를 확보할 수 가능성이 있고, 데이터들도 잘 정제되어 있습니다.

 

하지만 복잡한 웹 화면에서 데이터를 올바르게 가져오려면 해당 웹페이지의 html 구조에 맞게 코드를 잘 짜야하고, 텍스트로 가져온 데이터를 테이블 형태로 정갈하게 다듬기 위해 손이 많이 가는 편입니다. 다행히 네이버 증권의 경우 시중의 많은 책이나 인터넷에 크롤링하는 미리 구현된 코드가 많기 때문에 이를 참고하시면 금방 만들 수 있습니다.

 

단점으로는 자주있는 일은 아니지만 해당 사이트가 개편되어 html 구조가 변경될 경우 코드를 전면적으로 수정해야하고, 마지막으로 해당 사이트가 정책에 따라 크롤링으로 인해 과도한 트래픽 발생 시 차단될 가능성이 있습니다. 과도한 트래픽 차단을 위한 호출횟수 제한은 API에도 존재하지만, API는 명확한 기준이 있는 반면 크롤링은 그러한 기준이 없기 때문에 나도 모르게 과다 호출한 경우 임의로 차단될 수 있는 가능성이 존재합니다.

 

다행히 네이버증권의 경우 일반적인 수준의 주가 데이터 수집을 위해 크롤링하거나 크롤링한 데이터를 활용하는 것에 대해 특별한 제재를 하지는 않는 것으로 보입니다. 따라서 크롤링의 단점은 현재 당장 문제가 되는 것은 아니고 잠재적으로 존재한다고 이해하시면 될 것 같습니다.

 

 

+ 요인 : 다양한 기업정보 및 지표 데이터 확보 가능 / 별다른 절차 없이 이용 가능

 

- 요인 : 데이터 전처리 필요 / 사이트의 구조나 정책이 변경될 경우 애로사항이 발생

 

 


 

3> 데이터 구매

 

API처럼 체계적으로 관리되고, 크롤링처럼 다양하고 고품질 데이터를 얻을 수 있는 두 가지 요소를 모두 갖춘 방법이 바로 데이터 구매입니다. 주가 데이터를 정제하고 판매하는 곳은 여러 군데가 존재할 것으로 생각되나 가장 대표적으로는 한국거래소의 'KRX 정보데이터시스템'코스콤의 '코스콤 데이터몰'이 있습니다.

 

유료 서비스인 만큼 깔끔하게 정리된 주가 자료를 파일 형태로 받을 수 있기 때문에 별 다른 코딩이나 데이터 처리 없이도 '돈만 내면' 바로 이용할 수 있다는 장점이 있습니다.

 

하지만 무료로 이용할 수 있는 API나 크롤링에 비하면 돈이 든다는 것이 치명적인 단점인데요. 코스콤 데이터몰의 경우 코스피, 코스닥 전 종목 하루치 주가 데이터가 5,000, 수정주가 데이터는 7,000원이고 1년치 주가 데이터는 545,000, 수정주가 데이터는 1,855,000원입니다.

 

회사 차원에서 활용하거나 아니면 이미 꾸준히 수익을 내고 있는 투자자라면 충분히 투자할 만한 액수라고 볼 수 있겠지만, 처음으로 테스트삼아 분석하거나 개발하는 개인 입장에서는 꽤 부담되는 가격입니다. 그래서 본인의 지출 가능한 금액과 효용을 따져서 이용하시면 좋겠습니다.

 

 

+ 요인 : 데이터의 종류 및 신뢰성 높음 / 코딩없이 바로 데이터 확보 가능

 

- 요인 : 개인 입장에서는 부담스러운 요금 발생

 

 

 


 

4> 결론 및 저의 선택

 

이상으로 세 가지 주가 데이터 수집방법의 특성과 장단점을 알아보았고, 그 중에서 저는 API방법을 선택했습니다.

 

그 이유는 API가 데이터를 좀 더 체계적으로 제공하기 때문에 코드가 알아보기 쉬워진다는 것이 가장 컸구요. 기초적인 활용방법을 인터넷의 학습자료를 참조해서 수집코드를 작성하면, 추가로 필요한 기능은 매뉴얼을 보고 금방 수정할 수 있을 것 같습니다.

 

그리고 API 중에서도 저는 이번에 대신증권의 Cybos Plus API를 활용하기로 했습니다. 원래 예전에 수집기 만들때는 이베스트투자증권의 Xing API를 이용했었는데, 장기간 주가 데이터를 활용하려면 일반적인 주가가 아닌 수정주가를 활용해야 하는데, Xing API는 수정주가를 제공하지 않고 수정비율이라는 보정할 수 있는 정보만 제공합니다. 하지만 이걸 활용해서도 중간중간 데이터가 잘 안맞는 구멍이 생겨서 이를 보정하기가 너무 힘들었구요. 그리고 Xing API는 단위시간 당 호출 한도가 적어서 전 종목 데이터를 가져오는데 시간도 오래걸리고 불편했습니다.

 

반면 Cybos Plus API는 코드도 훨씬 간단하고, 수정주가를 제공하며 호출 한도도 훨씬 널럴해서 수집시간도 적게들고 데이터도 훨씬 신뢰가 갔습니다. Xing API로는 몇날 몇일을 수집이랑 데이터 보정으로 고생했었는데, Cybos Plus API로는 반나절만에 코드를 대강 다 만들 수 있었네요.

 

 

다음 글에서는 Cybos Plus API로 과거 주가데이터를 수집하는 방법에 대해 설명드리도록 하겠습니다.