키움 OpenAPI 파이썬: 연중최고가 대비 현재가가 낮은 주식을 찾아보자
Lessons learned ?
지난번 저 멀티플의 저평가주를 검색하는 스크립트를 만들고 결과로 나온 엑셀파일을 들여다 본 후 내 마음에 든 두 종목에 200만원을 투자하는 실험을 해보았다. 너무 간단한 알고리즘 이었지만 직접 테스트 해보고 싶은 마음은 누구나 마찬가지였을 것이다.
키움증권 OpenAPI, 네이버금융: 저평가주 가치주 검색하여 엑셀로 뽑아내는 스크립트
지난 포스트에서 1. 키움증권 OpenAPI를 사용하여 모든 상장 종목을 받아와서 SQLite DB를 사용하여 로컬 컴퓨터에 데이타를 쌓고 2. 받아 놓은 종목 데이타를 주기적으로 업데이트하는 코드도 추가
darkeng.tistory.com
결론적으로 실험은 손절로 끝이 났지만 긴 기간 장투를 해야 하는 과정이 테스트에 빠져있으므로 아직 가치가 있다 없다를 논하기는 이른것 같다.
주가가 올랐냐 내렸냐의 결론 보다 얻은 것이 있다면 '2008년 이후 10여년만에 돌아온 위기 후 유동성의 시대에 맞는 투자법은 아닌 것 같다' 라는 것이고, 이러한 시대에 사람들은 이슈가 있거나 스토리가 있는 스타만 찾는다는 것이다. BTS나 블랙핑크가 아니면 아무리 춤 잘추고 노래 잘 불러도 아무도 모르는 연습생 취급받는 다는 것이다. 결국 코로나로 인해 피해를 받지 않는 주식인 언택트 주식이 뜨고 코로나가 끝나감으로 인해 그동안 외면 받았던 컨택트 주식이 떠오르는데 역시 누구나 들어봤을만한 이름의 회사가 제일 먼저 뜬다.
그래서 저평가주 보다는 이런 시기에는 기간의 평균가나 최고가 대비 현재 가격이 낮은 주식을 찾아서 리스트를 만들고 이 회사들이 그동안 왜 오르지 않았는지 확인해 볼 필요가 있다. 이미 데이타베이스는 준비되어 있으므로 간단한 검색 스크립트 만으로 내가 원하는 수준의 결과물을 빠르게 뽑아내서 확인 가능하다. 이렇게 하면 남들보다 한발 먼저 싼 주식을 가격이 오르기 전에 살 수 있지 않을까?
우선 오늘자 주식 정보를 내 로컬 데이타베이스에 업데이트
지난번에 업데이트 한 후로 한동안 데이타베이스 업데이트가 되지 않았으므로 jongmok_db.py를 이용해서 코스피의 모든 종목 데이타를 업데이트 하였다. 이 작업이 끝나면 로컬 데이타베이스의 코스피 테이블에 오늘자 정보가 다 들어가게 된다.
이전 포스팅에서 만들어 두었던 jongmok_db.py를 실행하여 모든 데이타를 업데이트한 모습이다.
검색 조건 어떻게 할까?
코로나 이전의 가격대비 현재가가 어느정도 복구되었는지를 알고 싶은데 이를 간단히 연중최고가 대비 현재가로 계산해보기로 했다. 물론 코로나 이후에 이전가격을 완전히 다 복구하고도 더 올랐다면 현재가가 최고가가 될수도 있으므로 3월 이전의 기간 중 최고가로 계산하는게 더 정확할 것이다. 당장은 간단히 (현재가/연중최고가)x100 으로 퍼센트를 계산해도 충분할 것 같다.
추가로 코로나 충격이 왔던 때에 대부분 연중최저가를 기록했다고 보고 연중최저가 대비 현재가가 얼마나 올랐는지도 확인해 보았다. (((현재가/연중최저가)x100)-100) 으로 계산했는데 최저가랑 현재가가 같다면 0%로 표기되고 두배로 올랐다면 100%가 되어 수익률을 표시했다.
In Code We Trust
지난 포스팅에서 만들었던 search_company.py를 그대로 카피해서 search_company2.py를 만들었다. 850개 전체 코스피 기업 또는 1500개 전체 코스닥 기업의 고가/저가 대비 현재가를 계산하는 부분 그리고 출력하는 부분만 바뀌므로 정말 간단하다. 바뀐 부분만 아래에 추가해 보았다.
컬럼 선언 부분에 연중최고, 연중최저, 현재가, 최고가대비%, 그리고 최저가대비%를 추가했다.
데이타베이스에서 뽑아온 모든 기업 리스트를 대상으로 한 반복문에서 연중최고, 연중최저, 그리고 현재가를 추가로 뽑아온다. 가격이나 연중최저가의 경우 가격하락을 표시하기 위해 마이너스 값을 가지는 경우가 있어서 abs()로 절대값을 취하고 위에서 설명한대로 최고가 대비 %, 최저가 대비 %를 계산한다.
엑셀 출력을 위한 리스트 자료형에 새로 추가한 데이타를 앞서 선언한 컬럼 위치에 맞게 넣어준다.
코로나 이후 안오른 주식들 vs 많이 오른 주식들 (feat. 코스피)
결과로 출력된 엑셀 파일을 내 입맛에 맞게 정렬해서 연중최저가대비 어떤 기업들이 가장 안올랐는지 어떤 기업이 가장 많이 올랐는지 확인해 보았다. (연중최저가라는 값에 속지는 말자. 코로나때 주가가 좋다가 현재가가 최저가일 경우도 있으니...)
이 기업들은 왜 안올랐을까? 850개 기업 중 절대다수가 올해 저가 대비 50%이상 오른 상황에서 버림받은 이들 기업의 스토리가 궁금해진다.
반대로 정말 많이 오른 회사는 어떤 스토리가 있길래 이렇게 오른 것인지 찾아 볼 필요가 있을 것 같다.
github 소스코드
전체 소스코드는 다음 위치에서 받을 수 있다.
https://github.com/mole-cricket/kiwoom-openapi
mole-cricket/kiwoom-openapi
Contribute to mole-cricket/kiwoom-openapi development by creating an account on GitHub.
github.com