Junuu / Financial-Statement-Analysis

기업의 재무제표를 분석하여 투자에 도움을 주는 프로그램
2 stars 0 forks source link

프로그램 설계 계획 및 시행착오 #1

Open Junuu opened 4 years ago

Junuu commented 4 years ago
  1. 종목코드 또는 종목명를 입력받는다.

    • 예시) 네이버의 종목코드는 035420
    • 숫자일때 종목코드를 통해 검색 , 한글일때 종목명을 통하여 검색, 그외의 경우일때 예외처리
  2. 네이버금융사이트의 url 에 종목코드를 접합하여 크롤링함.

  3. 유의미한 지표들을 개인적으로 선택하여 크롤링 및 분석한다.

  4. 분석을 통하여 해당기업에 투자하면 좋을것인지 척도를 판단한다.

Junuu commented 4 years ago

추후 계획

Junuu commented 4 years ago

https://sootax.co.kr/3811

Junuu commented 4 years ago

5/26 유의미한 지표 선택, 지표를 통해 어떻게 분석을 할지 5/27 지표 크롤링 5/28 지표 크롤링 5/29 크롤링한 데이터 분석 6/1 분석한 데이터를 통한 투자 척도 판단 6/2 일일 골든크로스 종목 불러와서 투자 척도 판단 6/3 ~ 종목별 투자 척도 판단이 긍정적인 종목 이후 시가 분석

Junuu commented 4 years ago

네이버 증권 -> 종목분석 -> 재무분석

네이버 증권 -> 종목분석 -> 투자지표 EPS : 주당순이익 = 당기순이익 / 주식 수 BPS : 주당 순자산 = 자본총계 / 주식 수
PER : 주가 / EPS = 투자해서 본전을 얼마만에 찾을 수 있는가 PER은 10이 적정 PBR : 주가 / 주당 순자산(BPS) : PBR이 1이하이면 자본대비 저평가, 1이상이면 자본대비 고평가

EV/EBITDA : EV(기업을 인수할 때 들어가는 돈) / EBITDA(벌어들이는 돈) : 인수하면 몇년이면 본전을 뽑을 수 있는지 EV/EBITDA가 15년이라면 100으로 나누어 투자수익률은 6.7% 투자수익률이 높을수록 매력적인 주식

현금배당성향 : 기업의 순이익의 몇 퍼센트를 배당금으로 주는가

Junuu commented 4 years ago

종목코드 또는 종목명을 입력을 받을 때 종목코드는 그대로 사용하면 되지만 종목명이 들어올경우에는 종목명을 통해 종목코드로 연결해줘야 한다.

종목명이나 종목코드를 올바르게 입력한 경우

종목명이나 종목코드를 잘못 입력한 경우

Junuu commented 4 years ago

네이버 금융에서 종목 "검색"이라는 문구로 검색시에 query문이 incoding되어 나타남

ex) https://finance.naver.com/search/search.nhn?query=%B0%CB%BB%F6 이를 이용하여 종목명이 들어온다면 종목명을 incoding 시켜 query= 뒷부분만 변경시켜준다면 종목명을 통해 검색할 수 있을 것으로 추정

하지만 incoding 시켜서 url에 추가해 검색해보자 ‘????濡??’ 에 대한 검색결과가 없습니다. 라는 예상외의 결과가 발생

따라서 네이버에서 종목명을 검색 후 종목코드를 크롤링하기로 결정https://search.naver.com/search.naver?sm=top_hty&fbm=0&ie=utf8&query=현대로템 이라고 검색시에 증권정보쪽을 보면 종목명 옆에 종목코드를 찾을 수 있음.

따라서 "https://search.naver.com/search.naver?sm=top_hty&fbm=0&ie=utf8&query=종목명"을 사용한다면 종목코드를 찾을 수 있을 것으로 기대 됨.

따라서 url + 종목명을 사용했으나 query= 뒷부분의 현대로템은 하이퍼링크가 적용이 되지 않음. url+종목명

해결방안으로 "https://search.naver.com/search.naver?sm=top_hty&fbm=0&ie=utf8&query=종목명" 에서 종목명을 인코딩한다면 하이퍼링크가 적용될 것이라고 기대

종목명을 인코딩한 후 query= 뒷부분에 추가하니 https://search.naver.com/search.naver?sm=top_hty&fbm=0&ie=utf8&query=%ED%98%84%EB%8C%80%EB%A1%9C%ED%85%9C 잘 적용된 하이퍼링크를 얻을 수 있었음.

Junuu commented 4 years ago

위에서 얻은 url을 통해 크롤링을 통해 종목코드를 얻기

image

종목명을 검색 하면 위와 같은 화면을 얻을 수 있는데 증권정보 부분을 찾아낸다면 종목코드를 얻을 수 있을 것으로 기대

우클릭 후 페이지 소스보기를 누르면 image 종목코드는 sItemCode 옆에 나타남 image 다른 종목명으로 검색시에도 동일함으로 sItemCode 부분을 크롤링한다면 종목코드를 얻을 수 있을것으로 기대

모든 script 태그부분을 크롤링 해 온 뒤, sltemCode를 포함하는 script의 index를 찾고 그 script 에서 sltemCode의 시작부분 index를 찾는다면 종목코드를 가져올 것으로 기대

예외처리 "코스피200"으로 검색 시 종목코드는 없지만 증권l을 통해 크롤링을 통해 종목코드를 얻기

image

종목명을 검색 하면 위와 같은 화면을 얻을 수 있는데 증권정보 부분을 찾아낸다면 종목코드를 얻을 수 있을 것으로 기대

우클릭 후 페이지 소스보기를 누르면 image 종목코드는 sItemCode 옆에 나타남 image 다른 종목명으로 검색시에도 동일함으로 sItemCode 부분을 크롤링한다면 종목코드를 얻을 수 있을것으로 기대

모든 script 태그부분을 크롤링 해 온 뒤, sltemCode를 포함하는 script의 index를 찾고 그 script 에서 sltemCode의 시작부분 index를 찾는다면 종목코드를 가져올 것으로 기대

예외처리 "코스피200"으로 검색 시 종목코드는 없지만 "KPI 200"이라는 sltemCode를 가짐 "wti" 등등 코스피200과 같은 증권정보는 있지만 종목코드가 없는 것들에 대한 처리가 필요. *또한 종목코드는 있지만 재무제표가 없는경우도 있음 처리가 필요

Junuu commented 4 years ago

재무제표 이외의 크롤링 했을 때 나오는 추가 정보들

종목 시세 정보

2020년 05월 28일 16시 10분 기준 장마감
종목명 차바이오텍
종목코드 085660 코스닥
현재가 21,050 전일대비 상승 250 플러스 1.20 퍼센트
전일가 20,800
시가 21,000
고가 22,350
상한가 27,000
저가 20,400
하한가 14,600
거래량 2,831,217
거래대금 60,866백만

기업개요

 

동사는 2002년 디오스텍으로 설립되어, 2005년 코스닥 시장에 상장함. 2009년 차바이오텍을 흡수합병하며 상호명을 차바이오앤디오스텍으로 변경하였다가, 2014년 광학사업부를 인적분할하고, 현재의 사명으로 변경.

동사는 병원의 의료서비스, 세포치료제 연구사업 및 제대혈, 줄기세포 보관사업 등을 사업으로 영위하는 종합 의료업체임.

2019년 기말 기준 미국, 일본, 호주, 싱가폴 및 국내 등에 42개의 종속기업을 두고 있음.

재무제표 분석 결과

긍정적 평가 부정적 평가
Junuu commented 4 years ago
Junuu commented 4 years ago

당기순이익의 증감여부를 가장크게 반영하여 매수를 결정

Junuu commented 4 years ago

추후계획 6/2 일일 골든크로스 종목 불러와서 투자 척도 판단 6/3 ~ 종목별 투자 척도 판단이 긍정적인 종목 이후 시가 분석

Junuu commented 4 years ago

골든크로스 종목 알고리즘

  1. 골든크로스 종목들을 크롤링해서 종목명을 뽑아냄
  2. 종목명을 종목코드로 변환
  3. 종목코드를 통해 재무제표 크롤링
  4. 수집된 재무제표를 분석 후 매수할것인지 매수하지 않을것인지 선택
  5. 매수할 종목들을 표시
Junuu commented 4 years ago

시행착오 생각보다 예외처리 할 부분들이 많았음 종목명이 잘못들어온경우, 종목코드를 잘못입력한경우, 재무제표에 빈부분이 있을 경우, 재무제표가 없는경우, 기업개요가 없는경우 거의 대부분 try, except을 사용하여 해결하였으며 크롤링을 할 때 url뒷부분에 한글을 더하여 검색하고싶을 때 url 인코딩을 하지 않으면 잘 되지않아 인코딩으로 해결함 또한 재무제표분석파트에서 년도별로 당기순이익등을 비교해야 하는데 예를들어 [18,300] 같은 str형으로 되어있어서 "," 때문에 float로 형변환이 어려웠기 때문에 replace() 함수를 사용하여 ,를 없애고 float로 형변환하여 비교하였음

Junuu commented 4 years ago

추후계획 6/2 ~ 종목별 투자 척도 판단이 긍정적인 종목들의 추적시작가와 종가를 기록(분석 한달정도 후 업로드 예정) 6/2 ~ 웹사이트로 해당프로그램을 구현하여 배포할 예정