가치 투자 및 관련 종목 검색 (대신증권 API 기반 파이썬 활용)

가치 투자라는 것은 성장 가능성만을 보고 투자하지는 않는다. 전망을 신뢰하기 보다 객관적인 자료로 현재 상황을 판단하여 투자하는 방식이다. 필자는 성장 가능성을 주로 보긴 하지만 가치 투자에 근거하여 일부 종목을 매매해보고자 자료를 수집하고 정리해봅니다. 투자에 참고하시길 바랍니다.

가치 투자 정의

기업 가치의 산출에는 여러 가지 방법이 있지만 금융감독원의 ‘유가증권 인수업무에 관한 규정’에서 제시하는 식을 살펴보면 아래와 같다

본질가치 = (자산가치 * 2+ 수익가치 * 3) /5

여기서 자산 가치는 재무상태상의 자본 총계를 의미하며 부채를 뺀 순 자산가치를 의미한다.

자산가치 = 자산총계 – 부채총계 = 순자산가치 = 청산가치

그리고 수익 가치는 기업활동으로 이익으로 발생 가능한 가치이다.

자산가치와 수익가치를 기업의 주식수로 나누면 각각 BPS(=자산가치)와 EPS(=수익가치)로 표현된다.

파이썬 활용 종목 검색

시가총액 2000억 이상이며 1/PER(=기대수익률) > 0.12 이상 그리고 PBR < 1.0 이하이면서 자산가치가 현재 주가보다 높은 종목(가치투자에 따른 상승 기대 종목)을 검색하기 위해 파이썬 코드로 검색해보았다.

대신증권 API 활용, Python 3.6.1(x32)

# find valuable items
import win32com.client

# declare Cybosplus API
cpStockCode = win32com.client.Dispatch("CpUtil.CpStockCode")
cpStockMst = win32com.client.Dispatch("dscbo1.StockMst") # not CpDib.StockMst

# total num of stock items
itNum = cpStockCode.GetCount()
print(itNum)

for it in range(0, itNum):

   # get item info
   itCode = cpStockCode.GetData(0, it)
   itName = cpStockCode.GetData(1, it)

   # request info
   cpStockMst.SetInputValue(0, itCode)
   cpStockMst.BlockRequest()

   # get header values
   managedStatus = chr(cpStockMst.GetHeaderValue(66)) # 관리구분
   alarmInvestStatus = chr(cpStockMst.GetHeaderValue(67)) # 투자 경고 구분
   tradeStopStatus = chr(cpStockMst.GetHeaderValue(68)) # 거래 정지 구분
   unfaithfulNoticeStatus = chr(cpStockMst.GetHeaderValue(69)) # 불성실 공시 구분
   exchangeType = chr(cpStockMst.GetHeaderValue(45)) # 소속구분 '1' : 거래소, '5': 코스닥

   # filtering items
   if managedStatus == 'N' and alarmInvestStatus == '1' and 
         tradeStopStatus == 'N' and unfaithfulNoticeStatus == '0':

      # only to consider KOSPI or KOSDAQ
      if exchangeType == '1' or exchangeType == '5':

         currentPrice = int(cpStockMst.GetHeaderValue(11)) # current price (현재가)
         stockNum = int(cpStockMst.GetHeaderValue(31)) # 발행주식수
         marketCap = currentPrice * stockNum
         EPS = float(cpStockMst.GetHeaderValue(20)) # EPS
         BPS = float(cpStockMst.GetHeaderValue(70)) # BPS
         PER = float(cpStockMst.GetHeaderValue(28)) # PER

         if BPS != 0:
            PBR = float(currentPrice/BPS) # PBR calculation
         else:
            PBR = float('inf')

         # calc essencial value (본질 가치)
         assetValue = BPS
         profitValue = EPS / 0.01 # 10% 할인률 적용
         eValue = (assetValue * 2 + profitValue * 3) / 5

         if marketCap > 200000000000 and PER != 0 and 1 / PER > 0.12 and PBR < 1.0:
            if eValue > currentPrice:
               print(itName + "<" + itCode + ">")

검색 결과 (2017년 8월 13일)

대림산업<A000210>
한국타이어월드와이드<A000240>
기아차<A000270>
대원강업<A000430>
동아쏘시오홀딩스<A000640>
강남제비스코<A000860>
한화<A000880>
대한제분<A001130>
유진투자증권<A001200>
부국증권<A001270>
종근당홀딩스<A001630>
신영증권<A001720>
오리온홀딩스<A001800>
삼호<A001880>
KISCO홀딩스<A001940>
한국유리<A002000>
아세아<A002030>
쌍용양회<A003410>
대신증권<A003540>
현대제철<A004020>
세방<A004360>
대림씨엔에스<A004440>
현대차<A005380>
넥센<A005720>
풍산홀딩스<A005810>
에스엘<A005850>
동아타이어<A007340>
서연<A007860>
현대모비스<A012330>
동원개발<A013120>
유니드<A014830>
부산가스<A015350>
예스코<A015360>
한국전력<A015760>
SK가스<A018670>
유진기업<A023410>
기업은행<A024110>
원익홀딩스<A030530>
교보증권<A030610>
LG디스플레이<A034220>
평화정공<A043370>
세아홀딩스<A058650>
세이브존I&C<A067830>
현대백화점<A069960>
GS<A078930>
휠라코리아<A081660>
대한제강<A084010>
한화생명<A088350>
현대EP<A089470>
SK이노베이션<A096770>
메리츠금융지주<A138040>
BNK금융지주<A138930>
DGB금융지주<A139130>
JB금융지주<A175330>
아세아시멘트<A183190>
광주은행<A192530>
서연이화<A200880>
코라오홀딩스<A900140>
GRT<A900290>

참조

 

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Google photo

Google의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중