투자자들은 GPT 매분기 실적시즌에 바쁘다 정말 미친듯이 바쁘다 ㅠㅠ 텔레그램 AWAKE 님께서 운영하시는 실시간 공시채널이 있지만, 결국 수기로 정리해야만 한다.조금 시간이 지나면 세종데이터에서 제공을 해줬었지만, 이제 서비스를 하지 않으신다고 들었다 ㅠㅠ개인적으로 ROE와 PBR을 이용해서 종목 스크리닝을 하는 방식도 많이 사용하고 있어서 조금씩 시도해봤다.처음 시도는 텔레그램 AWAKE 실시간 공시채널 메세지를 모아서 정리하는 방식.어느정도 성과를 거두긴 했지만, 종목코드를 찾아오고 구글파이낸스에서 시총을 가져오는 과정에 문제가 있었다.항상 많은 도움을 받고 있는 스터디에 부족한 자료나마 공유했는데, 생각 외로 반응이 좋았다. GPT 개인적으로 욕심이 더 생겨 DART 데이터를 바로 긁어와서 정리해주는 프로그램을 구현해보고자 했다.생각보다 수월하게 진행이 되었으나, 몇 가지 어려움이 있었다.KRX 데이터와 DART 데이터를 매칭하는 문제수시로 기업이 상장하고, 상장폐지를 반복하기 때문에 매번은 아니더라도 원할 때 KRX에서 종목을 가지고 올 필요가 있다고 생각했다. 그래서 KRX에서 다운로드 받은 데이터를 이용해 DART에서 종목코드로 검색하는 방식을 적용했는데 이 과정에서 오류가 좀 발생했다. 처음 적용되었던 방식이 DART에 있는 자료 중 KRX 데이터값과 일치하는 것을 뽑는 방식이었는데, DART에 보고서를 제출하는 곳이 GPT 그렇게 많은 줄 처음 알았다. 무려 10만개가 넘어가더라,,, 리츠 전문회사 투자조합 펀드 등 그래서 KRX데이터로 DART 자료를 검색했다. 2. 분기보고서 뽑아오는 문제이 과정에서 하루 이상을 고통받은 것 같은데,,, DART API는 1/2/3/4분기 보고서를 요청할 때 각기 다른 코드가 필요하다. 처음 GPT가 제공한 로직은 1분기 11O11로 시작해서 4분기 11014로 끝났다. 그런데 아무리 해도 데이터가 맞게 뽑히지 않았다. 1분기 매출액 (+) 2분기 매출액(-) 3분기 매출액 (-) 4분기 매출액 (+) 이런 식으로 모든 기업 데이터가 정리되었다. 계산 GPT 로직 문제도 있었는데 이 부분은 뒤에서 설명하고,, 데이터를 가져오는 게 꽤 시간이 걸리는 일이었는데 이 과정에서 GPT에게 아까 그거 아니라고 했잖아라는 식으로 짜증도 냈다. 그 과정에서 50개마다 엑셀에 저장해달라는 코드를 추가했는데, 마지막까지 문제를 체크하는데 도움이 많이 됐다. 여튼 하루 이상 고민하다가 OPENDART에 있는 개발가이드 중 [정기보고서 재무정보] 탭에서 보고서 번호가 틀렸다는 것을 찾았다. 4분기가 11011, 2분기가 11012, 1분기가 11013, 3분기가 11014였다... 이 정보를 반영했을 때도 당연히 값이 맞지 않았다. 그렇지만 큰 차이가 존재했는데,,, GPT 기존 데이터값은 보고서 어디에서도 그 값을 찾을 수가 없었다. ㅠㅠㅠ 그래서 제대로 종목코드에 맞는 회사 보고서를 찾아오는지부터 검증해야 했다. 그렇지만 드디어 자본/부채가 일치하는 기적을 볼 수 있었다.3. 계산 로직문제 이리저리 숫자가지고 씨름한 결과 계산 로직에 문제가 있다는 것을 찾았다. 다수 보고서를 정리해본 경험을 살려봤을 때 분기/반기 보고서를 3개월 단위로 나눠주지 않는 회사들이 있다. 그래서 누적데이터를 이용해서 수작업으로 정리를 했던 기억이 났다. 그래서 '누적 데이터를 활용해서 해당연도 직전 분기 값을 빼는 로직'을 생각했다. 코드 GPT 통일성을 생각했을때 1분기는 3개월 데이터를 가져오고 2/3분기는 누적데이터를 가져오고 하는 것이 좋지 않다고 판단했기 때문이다.여기서 GPT가 또 문제를 만들었는데 내가 생각한 로직이라면 1/2/3 분기 모두 thstrm_add_amoun를 사용하고 2-1, 3-2를 통해서 분기 데이터를 뽑아야 했다. 그리고 4분기만 사업보고서에서 thstrm_amount를 사용하고 3분기의 thstrm_add_amount를 빼서 구해야했는데,,, 이 바보가 1/2/3/4분기 모두를 당기금액 코드를 사용했다. 그러니 1/4분기만 매출액이 (+) , 2/3분기는 매출액(-)인 어처구니없는 일이 발생했지,,,, 4. dart api 일일 호출 제한 (20000회) 문제그렇게 크리티컬한 문제는 아니지만 또 오류를 GPT 찾고 해결하는 과정을 반복하면 순식간에 소모되는 일일제한량이다. 50회마다 나눠서 저장하는 방식을 도입하여 1회 시도 당 소모되는 호출수를 줄였던 것이 유효했던 것 같다. 그리고 메일로 인증하는 방식이다 보니 개인 이메일 여러 개를 돌려서 쓸 수 있다.(저는 4개 썼,,) 저도 아직 과거 연도 데이터를 가져오는 중이고, 차후 실적 시즌에 3~5분마다 동작하도록 업데이트할 생각을 갖고 있어 갈 길이 멉니다. 다만 한 번쯤 시도해보실 것 같아 팁을 드리면,,저는 파이썬을 사용했습니다. 다운로드 받고 메모장에 코드를 적은 뒤 저장명.py로 GPT 하면 됐습니다.2. 코드가 점점 길어지기 때문에 여러 파일로 동작하게 하는 것이 좋았습니다. main.py에서 전반적인 로직을 구현하게 하고 다른 .py파일에서 각각의 기능을 수행하는 방식입니다.너는 krx에서 데이터 가져와, 너는 dart api 중에 krx 데이터 맞는지 확인해, 너는 엑셀 만들어 등등.. 3. 파이참(?) 등을 깔지 않으면 코드를 테스트할 때 명령프롬포트(cmd)를 사용해야 합니다. 이 떄 실행위치를 설정하는 과정이 필요한데 상당히 번거롭습니다. 따로 메모장에 적어두고 복붙하세요.... 기본위치가 c: 라서 .py파일이 위치한 폴더로 바꿔줘야 합니다. 이런 식으로 도전해보면 당신은 GPT GPT 활용능력 상위 1~2%