본문 바로가기

주식종목스크리닝11

뇌동매매 금지 - 10. Bug fix와 이것저것 추가하기 - 3 새롭게 추가한 데이터들에 대해 검증작업을 진행해봅니다. 추가한 데이터에 대해 검증해보기 PEG PEG는 사실 제공해주는 사이트가 없어서 검증하기가 어려웠습니다. QoQ, YoY 증가율 증가율에 대해서는 네이버의 재무제표를 이용해서 검증해보겠습니다. YoY에 대해서는 네이버증권에서는 전년도 동기 대비 증가율이 아니라 해당연도의 최종 사업보고서 (4분기) 기준으로만 기재되어있어서, 증권플러스의 데이터를 참고했습니다. 캡쳐에는 딱 필요한 정보 이외에는 컬럼 숨기기를 했습니다. QoQ 매출액 영업이익 순이익 YoY QoQ, YoY 모두 증권 정보 제공 서비스들과 일치하는 것을 확인할 수 있습니다. YoY에서는, 과거 4개의 데이터가 모두 빈칸인 것을 확인할 수 있는데, 이것은 당연하게도 비교할 데이터군이 없어서.. 2022. 9. 12.
뇌동매매 금지 - 10. Bug fix와 이것저것 추가하기 - 2 다음으로는 extract.py 에 대해서 버그 수정 및 몇가지 팩터데이터 추가, 코드의 리팩토링을 진행해봅니다. Bug fix __find_financial_indicator() 일단 2분기 사업보고서가 발행될때 즈음해서 조회를 하려고 하니 제대로 조회가 되지 않는다거나, 똑같은 연도를 가진 데이터가 2~3개씩 중복으로 들어가는 것을 확인했습니다. 이것은 재무데이터를 조회할 때, 제무데이터가 없음에도 불구하고 조회를 하려고해서 이슈가 발생했습니다. 원래는 extract.py 파일의 __find_financial_indicator() 메소드 내부에 아래의 코드가 있었는데, 여기서의 pass 를 continue 로 수정합니다. 만들면서 일단 pass로 적어도 놓고 코드를 완성시켰었는데, 이 때는 이슈가 없어.. 2022. 9. 12.
뇌동매매 금지 - 10. Bug fix와 이것저것 추가하기 - 1 이 시리즈를 작성할 때에는 2022년 1분기 사업보고서가 발행되고 나서였습니다. 이후에 조금씩 수정을 하다가, 2분기 사업보고서가 새로 발행되고 나서 제대로 동작하지 않는다는 것을 알게 되어서 수정도 하고, 또 이것저것 추가도 하였습니다. 마침 몇 번인가 잘 안돌아가는 것 같다는 문의메일을 받았기에, 이 참에 수정내용을 좀 더 기재해볼까합니다. 다만 기존의 포스트를 수정하지 않는 것은, 이러한 흐름으로 제작되었다~ 라는 것을 기록으로 남기기 위함입니다. 개별 종목 재무데이터 조회하기 이전 포스트까지 기록했던 것은 시가총액이 일정분위 이하의 데이터만 조회하는 것이었습니다. 따라서 재무제표 데이터 계산을 검증을 위해 하나의 종목만 조회해본다거나, 제가 가진 종목만 조회해보고자할때 이것을 할 수 없는 불편함이.. 2022. 9. 12.
뇌동매매 금지 - 9. 스크리너 제작 후기 약 4주간 직장에서 지쳐 돌아와 인터넷에서 자료들을 수집하고 코드를 짜집기하며 만든 후기를 작성합니다. 그래서 주식이 효과가 있었냐하면...? 파이썬을 이용한 스크리너 제작 후기 주식을 하기 시작하면서 하도 뇌동매매가 심해가지고 제대로 버는 나날이 많지 않았습니다. 크게 벌기도 하고 크게 잃기도하고 ... 결과는 0에서 약간의 마이너스 수준이랄까.. 밑빠진 독에 물붓기의 느낌. 이 때 강환국 작가의 하면된다 퀀트투자 책을 알게되었는데, 맥북이라 젠포트나 퀀트킹 같은 프로그램을 돌릴 수가 없기도 했고.. (아마존 인스턴스를 만들었으면 쓸 수 있었겠지만 프로그램 사용료에 인스턴스 사용비도 내야 했고..물론 프로그램 사용료는 1년에 커피 몇 잔 아끼면 쓸 수 있는 돈이긴 했습니다.) 그러던 와중에 인터넷에 검.. 2022. 9. 12.
뇌동매매 금지 - 8. 상장종목 스크리닝 해보기 그동안 만들었던 것들을 조합하여 스크리닝해보겠습니다. main.py 프로젝트 최상단에 main.py 를 하나 만들어서 실행 준비합니다. main.py 에서는 실행시간을 확인하기 위해 간단한 프린트문도 준비해봅니다. 전체 종목 획득 및 소형주의 재무공시 정보 조회 import datetime import time import filter_data from extract_data.extract import Extract from export_data import ExportToData start = time.time() extractor = Extract() exporter = ExportToData() kospi_kosdaq_data = extractor.get_data() print("----------.. 2022. 9. 12.
뇌동매매 금지 - 7. 종목 스크리닝을 위한 필터 만들기 이번 포스트에서는 종목 스크리닝을 위한 필터를 만들어 봅니다. 들어가기에 앞서.. 필터 데이터들의 기반? 출처? 종목 스크리닝의 방법에는 많은 방법들과 데이터들이 있습니다만, 이번 포스트에서는 강환국 작가의 하면 된다! 퀀트 투자 에 소개된 전략들을 필터로 구현해보았습니다. 물론 모든 항목들을 구현한 것은 아니고, 현재의 구현에서 계산할 수 있는 데이터들을 이용해 필터를 만들어보았습니다. 또한 데이터를 계산하는 로직이 틀렸을 수도 있습니다 자동으로 추천을 해주진 않고, 목록에서 고르는 건 결국 본인의 몫 필터링을 한다고해서, 제일 조건이 좋은 종목을 사라! 고 권장하는 그런 것이 아닙니다. 이 시리즈에서 작성하고 있는 정도로는 아직 계산할 수 없는 팩터데이터들도 많고, 시장상황이라던지 업종 상황까지는 반.. 2022. 9. 12.
뇌동매매 금지 - 5. 추출하고 계산한 분기별 데이터 검증해보기 OpenDart를 통해 추출하고, 각각의 재무정보들을 이용해 팩터데이터들을 계산해보았는데, 이번에는 이것이 실제로 맞는지, 문제가 없는지 검증을 해야합니다. 데이터 검증해보기 특정 상품의 데이터들을 검증해보겠습니다. 검증 대상은 가장 최근 분기의 데이터 2021년12월30일 기준의 사업보고서를 기반으로 비교진행하고, 비교대상은 가장 접하기 쉬운 네이버 증권의 정보와 비교해보겠습니다. pykrx와 FinanceDataReader로 추출해온 통칭 기본정보는 스크래핑 데이터에 기반하고, 최근 영업일 종가기준의 데이터이기 때문에 아마 맞을 겁니다만, 일단 전체를 확인하고자 합니다. 오공이라는 종목으로 검증을 해보겠습니다. Pykrx / FinanceDataReader를 이용해 얻은 기본정보 이 기본 종목정보는 .. 2022. 9. 12.
뇌동매매 금지 - 4. 팩터데이터 계산해보기, 기본 필터조건 만들어보기 저번 포스트에서 OpenDartReader를 이용해 공시 재무정보를 읽어보았습니다. 이번 포스트에서는 펙터데이터를 계산해보고, 필터조건을 만들어보기 시작합니다. 팩터데이터 계산하기 앞선 포스트에서는 기본적인 재무정보를 불러오는 작업을 진행했었습니다. def extract_finance_data(self, finance_years, df): #디버깅을 위한 설정 pd.set_option('display.max_columns', None) pd.options.display.float_format = '{:.2f}'.format data = [] count = 1 for row in df.itertuples(): #터미널 상의 추출상황 로깅을 위한 프린트문 현재갯수/전체종목갯수, .. 2022. 9. 12.
뇌동매매 금지 - 3. 분기별 재무정보 조회해보기 OpenDartReader를 이용하여 각 종목의 재무정보를 조회해봅니다. 재무 정보 조회하기 OpenDart API Key 발급받기 재무 정보를 조회해야하는데 어떻게 조회해야할지 막막합니다. 일단 기업에서 매 분기마다 발표하는 재무제표를 기반으로한 공시정보를 조회해야합니다. OpenDartReader는 전자재무공시시스템에서 Api key를 이용하여 재무정보를 손쉽게 조회할 수 있게 도와줍니다. https://opendart.fss.or.kr 여기서 회원가입을 하신다음, API Key를 발급받으면 됩니다. 개인의 경우 한도는 1일 최대 1만회로 제한되어있으며 자주 조회를 하면 조금씩 조회한도를 늘려주는 것 같긴합니다. 단, 무자비한 호출속도를 사용하면 아이피 제한이 걸릴수도 있다 하니 참고하셔야겠습니다. .. 2022. 9. 12.
반응형