전자책 미리보기 실행중입니다.
내 서재

퀀트 투자 분석

종목 리스트 획득

북마크(메모)

 

퀀트 투자 분석




종목 리스트 획득


첫단계는 주식 전체의 리스트를 다운로드 받는 것부터 시작한다. 전체 주식종목들 중에서 시가총액이 하위 20%에 해당하는 종목들만 추려내는 작업을 진행하겠다.



한국의 모든 주식은 한국거래소 홈페이지(http://www.krx.co.kr)에 있다. 여기서는 KOSPI, KOSDAQ뿐만 아니라 KONEX 까지 상장된 모든 주식종목을 관리하고 있다. 날짜별 상한가 종목을 포함하여 여러가지 정보를 얻을수 있으니 들어가면 좋은 정보를 얻을수 있다. 다마, KONEX는 개인의 구매에 제한이 있으므로 제외할 예정이다.



여기서는 한국거래소에 접속해서 주식정보를 가져올 수 있는 페이지는 "주식 - 종목시세 - 전종목시세"이다. 이 페이지에서 모든 주식의 목록을 엑셀로 다운로드하여 활용할 수 있다. 물론 수동으로 다운로드하고 다운로드 된 파일을 업로드하여 진행해도 무방하다. 하지만 우리는 자동으로 처리해주기를 원하기 때문에 자동으로 파일을 다운로드하고 업로드하여 각 주식종목을 분석하도록 프로그램을 개발할 것이다. 다만, 부하때문인지 낮에는 파일의 다운로드가 잘 안되는 현상이 있으나 장마감 이후 저녁에는 다운로드가 잘 된다. 이 문제로 야간에 포트폴리오를 작성하고 다음날 매매하는 형태로 구성하였다. 필요하다면 수동으로 파일을 다운로드하고 진행하는 형태로 바꿔도 된다.



홈페이지의 내용 중에서 원하는 데이터를 자동으로 웹사이트를 탐색하여 데이터를 수집하는 작업을 웹크롤링이라고 한다. 이 기법을 사용하기 위해서 Selenium이라는 파이썬 라이브러리와 크롬 드라이브(Chrome Driver)를  사용하겠다.



Selenium은 크롬드라이버를 통해 크롬 브라우저를 컨트롤하여 프로그램이 홈페이지의 특정 버튼을 클릭하여 파일을 다운로드를 할수 있는 기능을 제공해준다. 이 라이브러리 덕분에 자동으로 주식 목록을 다운로드할 수 있다.



시작하기전에 크롬 드라이브를 다운로드 받아야한다. 크롬 드라이브는 지금 설치되어있는 크롬 브라우져와 같은 버전을 사용해야한다. 



크롬의 버전은 크롬의 오른쪽 위의 설정 버튼(점 세개)에서 설정을 선택해도 되고, 주소창에 “chrome://version” 을 입력해도 확인할 수 있다. 크롬의 버전을 확인한 다음 크롬 드라이버로 검색하거나 다운로드 사이트에서 다운로드를 할 수 있다.


크롬 드라이브 다운로드 : https://sites.google.com/a/chromium.org/chromedriver/downloads 

 



 




필자의 컴퓨터에 설치된 크롬의 버전은 88.0.4324.182이므로 크롬 드라이브에서 88 버전을 다운로드 한다. 다운로드 페이지에서 win32 파일을 다운로드 하면, 압축파일이 받아진다. 압축을 풀게 되면 chromedriver.exe 파일이 나오는데, 이 파일을 프로젝트 폴더(“C:\Users\(윈도우 계정)\PycharmProjects\(프로젝트이름)”)에 넣는다. 



나중에 프로그램을 사용하다가 오류가 나게 되면 크롬과 크롬드라이버의 버전을 확인해야한다. 크롬을 업데이트하면 크롬 드라이버가 동작을 하지 않을 수가 있기 때문에 꼭 기억해두시기 바란다.



이제 실제 코드를 입력해보자. 데이터베이스를 생성하면서 사용했던 “self.getCodeList() 함수를 사용하자. 코드의 행은 가능한 동일하게 입력하겠다. 다만. 전역변수나 함수 실행부분을 추가하면서 조금씩 달라질 수 있기 때문에 주의하시기 바란다. 



먼저 크롬드라이버를 이용하기 위한 환경설정이다. 주식 목록 파일을 다운로드 받아야하지만 한국거래소에서 파일을 다운로드 받으면 파일명은 “data-(일련번호)-날짜.xlsx”로 매번 받을때마다 파일명이 달라진다. 파일을 수동으로 받아서 처리해도 되지만 자동으로 하기 위해 환경설정을 하겠다.



시작하기 전에 프로젝트 폴더에 “down” 이라는 폴더를 추가하고 진행하자. 폴더를 미리 만들지 않고 실행하면 오류가 발생한다.




 




크롬 드라이버를 사용하면 다운로드 폴더를 바꿀수 있다. 폴더경로를 자신의 계정명에 맞추어 수정해야한다. 그래서 프로젝트 폴더 안에 만들어둔 “down” 폴더에 다운로드를 할 것이다. 하지만 이전에 다운로드 받은 파일이 있다면 삭제해야한다. 34행에서 down 폴더안에 있는 파일들을 찾아서 filelist에 넣고, 33행~36행에서 반복하면서 삭제한다. 



여기서 for문이 나오는데, 파이썬의 for문은 굉장히 단순하다. for filename in filelist:의 의미는 filelist에 저장한 파일들을 filename이라는 이름으로 하나씩 넣어서 아래의 코드를 실행하라는 의미이다. 다음은 파일이 있는지 확인하고 있으면(os.path.isfile(filePath))은 파일이 있으면 “참(True)”, 없으면 “거짓(False)” 값을 나타낸다. 그리고, os.remove(filePath)는 파일을 삭제하라는 명령이다. 즉, down 폴더에 파일이 있으면 파일을 모두 삭제한다.




( 이하 내용은 전자책 구매 후 확인하실 수 있습니다 )