2분기 가치지표/투자 분석기

지난달에 만든 허접한 투자 분석기와 그 소스, 자료들입니다.

 

(크기 때문에 파일 첨부가 안돼 블로그글에 첨부해 놓았습니다. URL로 첨부를 해도 오류가 나네요ㅡ.ㅡ)

 

http://blog.naver.com/neobundy/130008657559

 

(가치 지표 데이타만 필요한 분은 여기 첨부한 엑셀파일만 받으셔도 됩니다.)

 

압축을 풀면 소스 파일과 함께 data 디렉토리 안에 엑셀 파일 및 MySQL dump 파일(data.sql)이 만들어집니다.

 

필요에 따라 다음처럼 사용할 수 있습니다.

 

MySQL 및 Python 지식이 전혀 없는 일반 투자자

 

data 디렉토리안에 있는 엑셀 파일들을 활용하시면 됩니다. FnGuide.com 등에서 수집한 2005년 ~ 2006년 2/4분기까지 실적 데이타 등이 포함돼 있습니다.

 

특히, fundamentals_200606.xls (본 글에도 첨부)는 투자분석기를 통해 만들어진 기업의 펀더멘탈 엑셀파일(2006년 2/4분기 실적 데이타 및 2005년 배당금 및 2006년 9월 8일 종가 기준)이며 PBR 대 ROE 프리미엄으로 계산한 목표주가 괴리율 순으로 순서가 메겨져 있습니다. 물론, 엑셀에서 헤더를 이용해 다른 지표 순으로 정렬할 수도 있습니다,

 

목표주가 계산에 대한 배경 논리는 http://blog.naver.com/neobundy/130008061534 에 나와 있습니다. 아주 보수적인 짠돌이 목표주가라 여기시면 됩니다.

 

MySQL 지식이 있는 투자자

 

MySQL 5.0 이상을 설치하고 data/data.sql 덤프 파일을 MySQL Administrator에서 import 하면 stocks 라는 데이타베이스 밑에 여러 stored procedures/functions가 만들어 집니다. 물론, 2005년1/4분기에서 2006년 2/4분기까지의 실적 데이타 및 2004년/2005년 배당금 데이타, 기업 정보 데이타, 2006년 9월 8일 종가 데이타까지 모두 import 됩니다.

 

stored procedures 및 functions 소스를 훑어보면 충분히 활용할 수 있을 겁니다.

 

 

 
stocks 데이타베이스 스키마
 
 
 
stored procedures
 
 
stored functions 일부

 

예:

 

select getPBR('A015750') -> 성우하이텍 PBR 얻기 (종목 코드는 'A015750' 식이어야함. )

 

call ListMarketFundamentals() -> 전체 기업 펀더멘탈 지표(fundamentals_200606.xls 와 같은) 얻기

 

select * from market_fundamentals order by discount_ratio desc -> 앞 call ListMarketFundamentals() 에서 뽑아낸 지표가 market_fundamentals 테이블을 업데이트 하므로 어떤 지표순으로도 정렬해 뽑아볼 수 있음

 

call addToPortfoilo('A015750') -> 성우하이텍 포트에 담기

call deleteFromPortfoilo('A015750') -> 성우하이텍 포트에서 제거

 

call ListPortfolioFundamentals() -> 내 포트폴리오 펀더멘탈 지표 뽑아보기

 

등등...

 

MySQL 및 Python/wxPython 지식이 있는 프로그래머

 

Python 소스는 데이타 임포트 용으로만 사용하고 데이타 임시 스토리지 및 기본 출력은 엑셀(COM으로 연결)을 활용합니다.

 

각 소스의 db 사용자명과 암호는 각각 'root', '1234'로 돼 있는데 사용자에 맞게 수정해야 합니다.

 

각 소스와 데이타 파일은 다음과 같으며 FnGuide.com 에서 분기별로 발표하는 자료를 '분기' 데이타만 남도록 약간 편집해야 함. 기 제공된 각 엑셀 데이타 파일 형식과 같아야 함. (예: 200606_quarterly_report.xls 는 2006년 2/4분기 실적 데이타이므로 이와 똑같이 200609_quarterly_report.xls 를 만들어 3/4분기 실적 데이타를 import할 수 있음.)

 

    cwkCompanyImporter.py -> data/companies.xls (기업 기본 정보)
    cwkQuarterlyReportImporter.py -> data/606_quarterly_report.xls (기업 분기 실적)
    cwkStockQuoteGetter.py -> data/stock_quotes.xls (현재 종가)
    cwkStockImporter.py -> data/60630_시가총액.xls (발행주식수 정보)
    cwkDividendImporter.py -> data/5_dividends.xls (배당금 정보)
    cwkMarketCapFileStockCodeGetter.py -> 기업코드/기업명 매칭
    cwkExportTool.py -> 엑셀 export 용 소스 템플릿
   

 

대개 분기별로 분기실적 엑셀파일과 연간 배당금 정보, 지표 계산을 하는 날 현재 종가 정도 업데이트 필요.

 

종가 데이타는 네이버의 시세 홈페이지를 정규식 파싱. 네트워크 에러시 (timeout) 5회 재시도.


정리도 제대로 안된 허접한 소스지만... 라이센스는 GPL :-)

 

투자 분석기 특징과 단점

 

 - 무조건 현재 분기부터 과거 4분기 데이타를 연환산하여 지표 산출 (예외: ListQuarterFundamentals() 는 최근 분기 데이타만 사용해 1분기 지표 산출)

 

- 과거 데이타를 충분히 구할 수 없어 각 지표의 안정성은 확보할 수 없음. 따라서 기본적인 기업 필터링에만 적합하고 나머지는 투자자의 수작업 필요.

 

- 목표주가는 ROE와 PBR을 기준으로 3년치 프리미엄을 계산함. 예를 들어 성우하이텍의 경우 23%의 ROE를 3년간 유지한다는 전제하에 PBR 1 수준에서 3년치 프리미엄을 계산해 9500원.

 

목표주가 계산 공식 (getTargetPrice() stored function 소스 일부):

 

SET target_price = bps;
my_loop: REPEAT
    IF years >= num_years THEN
 LEAVE my_loop;
    END IF;
   
    SET target_price = target_price + (roe * target_price);
    SET years = years + 1;


UNTIL years >= num_years
END REPEAT my_loop;

 

- 액면분할이나 합병, 유무상증자 등으로 인한 오류가 발생할 수 있음. 예: 무림SP

 

- 일시적 이익으로 인한 ROE 등 지표 왜곡이 발생할 수 있음. 예: 아이즈비전

 

자세한 내용은 다음 투자 분석기 프로젝트 일지 참고

 

    투자분석기 프로젝트 1: http://blog.naver.com/neobundy/130007774974
    투자분석기 프로젝트 2: http://blog.naver.com/neobundy/130007872168
    투자분석기 프로젝트 3: http://blog.naver.com/neobundy/130007912077
    투자분석기 프로젝트 4: http://blog.naver.com/neobundy/130008004920
    투자분석기 프로젝트 5: http://blog.naver.com/neobundy/130008243589

 

주의 및 당부 말씀

 

분명 데이타 오류, 논리적 오류가 있을 수 있습니다. 지난 한달간 포트폴리오 재편을 위해 활용한 결과 1차적으로 기업 필터링을 하는 데는 큰 무리가 없어 보였습니다. 하지만, 투자자의 지식도 필요하고 수작업도 이곳 저곳 필요합니다.

 

특히, 적자 기업은 가치 지표 계산에서 목표주가를 뽑을 수 없기 때문에 현재 적자시현중인 턴어라운드 기업 잡기는 힘듭니다.

 

(분석기 만들고 그 자료를 토대로 포트를 재편했는데... 오늘 다시 돌려보니 그 당시보다 주가가 많이들 올랐군요^^)

 

데이타 오류는... 저도 어쩔 수 없는 부분이고 FnGuide.com 을 돈주고 쓰지 않는 이상 (엔간하면 쓰고 싶은 사용료가 헐...) ... 논리상의 오류를 발견해주시는 분들이 계시면 고맙겠습니다^^ 오픈소스 프로그래머기도 하지만 논리상 오려 잡는게 사실 주된 공개 이유기도 하네요 :-)

 

사용자 친화적이지 않은 분석 도구라 얼마나 많은 분이 사용하실지 모르겠지만... 그냥 원래 만들때 의도대로 공개하고 봅니다. 프로그램은 뭐든 만들면 공개하는 넘이라....

<©가치를 찾는 투자 나침반, 아이투자(www.itooza.com) 무단전재 및 재배포금지>







프린트프린트 스크랩블로그 담기(0명) 점수주기점수주기(1명)
보내기 : 미투데이

나도 한마디 (댓글 8개)

  1. Metropolis
    Metropolis | 06.09/10 19:43
    ㅜㅜbbbbbbbbbbbbbbbb
    답글쓰기
  2. albatros
    albatros | 06.09/11 08:46
    먼저 상당한 프로그램 내공을 겸비한 가치투자자가 나타났네요..^^... 저와 같은 고민으로 비슷한 방향으로 간다는 생각이 듭니다... 저는 일단 접근이 편한 엑세스를 가지고 하고있으며 차후 업그레이드를 고려하여 접근중입니다. 서서히 오픈 소스에 대해 매우 강력한 툴들이 등장할 것으로 보입니다. 다만, 근본적인 문제 즉, raw 데이타를 얻는 문제가 항상 걸리네요.... 개인적으로 mysql 을 설치하지 않아 테스트를 다 해볼 수는 없지만 이 소스의 가치는 정말로 크다고 느껴집니다... 대두족장님 같은 분이 아마도 새로운 바람을 몰고 올 듯 하네요....^^ 정말 귀중한 자료 감사드리며... 개인적으로 같은 고민과 같은 길을 간다는 생각이 들어 덧글 남깁니다...
    답글쓰기
  3. 피시굿
    피시굿 | 06.09/11 09:49
    ㅋㅋ; 역시 같은 생각을 가지는 사람이 많네요..어디서 raw데이터를 얻을 수 없는지..ㅋㅋ;
    음 한국신용평가 웹데이터는 스캔해서 엑세스로 익스포트 시켰습니다만,
    과거 데이터가 없어서 별 의미 없는 듯 합니다. 적어도 5년 이상의 데이터가 있어야 분석다운 분석이
    가능 할 것 같은데... ㅋㅋ;;
    답글쓰기
  4. 대두족장
    대두족장 | 06.09/11 09:57
    5년치 데이타... 노가다 마음을 먹으면... 가능은 합니다. FnGuide.com 무료 3일 사용 가능하고... 큰 맘먹고 한달 정도 유료회원 도전하면 ㅋㅋ (1년 약정이지만 중도해지 가능하다고 하더군요.)

    근데 그럼 아마 자료 공개에 문제가 생기겠지요. 3일 무료 계정 쓰면서 개인적으로 쓸 자료는 다운을 받아봤습니다. 3일 정도면... 가능할 것 같더군요.

    3일 무료계정은 모든 서비스 무료입니다. 일부는 엑셀 다운로드가 안되지만, 필수 자료는 대부분 엑셀 다운로드 가능하더군요.
    답글쓰기
  5. 캬오
    캬오 | 06.09/11 13:23
    재무데이터는 이곳을 잘 뒤져보면 잘 정리되어 나옵니다. 단점이라면 페이지가 많다는것..
    http://sm.krx.co.kr/webkor/sang/sang_index.jsp?url=/webkor/sang/fn/corp/sn_fn_corp_stat01.jsp
    답글쓰기
  6. 워니와렌
    워니와렌 | 07.01/02 02:08
    캬오
    위에 사람들 외계인 인가! 무슨말하는지 모르겠어! raw는 철권에 나오는 그 라우??(농담입니다)
    공부좀 해야하겠습니다 ㅜㅜ
    답글쓰기
  7. dream279
    dream279 | 07.01/14 01:00
    문의
    귀중한 자료 잘 보았습니다. 전 엑셀자료의 fundamental만 봤는데
    혹시 무림sp,국제약품등 상위 종목들은 per,pbr등 모든 수치가 믿기
    어려울 정도인것로 볼 때 액면분할 한것이 반영되지 않고 나온게
    아닌가 궁금 합니다.
    답글쓰기
  8. 대두족장
    대두족장 | 07.02/07 21:52
    설명에 나와 있는데...^^
    raw 데이타가 충분치 않아 액분이나 유/무증의 경우 수치가 왜곡될 수 있습니다. 그래서 1차적인 필터 역할만 한다고 말씀드린 겁니다 :-)
    답글쓰기

* HTML 태그 등은 사용하실 수 없습니다.

댓글입력

글쓰기
목록

제휴 및 서비스제공사

키움증권 미래에셋증권 KB증권 NH농협증권 하이투자증권 교보증권 동부증권 신한금융투자 유안타증권 이베스트증권 VIP투자자문 WISEfn UM2M LG 유플러스 카카오
우리투자증권-맞춤형 투자정보 서비스