본문 바로가기
증권사 API

특정기업의 FNG 요약, 마켓컨센서스 가져오기

by 다빈치스탁 2020. 11. 9.
728x90
반응형

주식투자자의 유형을 크게 2가지로 분류한다면 하나는 펀더멘털(가치투자) 나머지는 모멘텀(움직임) 투자자로 분류할 수 있겠다. 뭐 정답은 아니지만 대부분의 사람들의 투자철학은 이 2가지로 압축되는 경향이 있다. 회귀분석, 시계열분석, 인관관계분석의 경우 큰 범주에서는 모멘텀 분석의 한 종류라 볼 수 있다. 그러나 이는 시장전체적인 유기관계에 있어 가장 확률개연성이 높은 예측자료를 얻는데 유용할 수 있으나 개별기업의 특성에 따른 비체계적 효과는 간과할 수 있는 한계가 존재한다. 

 

따라서 이번 포스트에서는 특정기업의 재무데이터를 가져오는 방법에 대해 한번 알아보자. 방법은 여러가지가 있을 수 있다. 한국전자공시 사이트에 API신청을 하고 XMR 등으로 파싱하는 방법도 있을 수 있지만 이럴 경우 데이터를 정제하는데 꽤나 애를 먹을 수 있다. 재무자료 중 우리가 꼭 필요한 매출액, 순이익 등을 또 파싱해내야 하고 이러한 데이터는 표준화가 되어 있지 않기 때문에 비율로 변경까지 해주어야 한다. 예를 들면 PER,PBR,ROA,ROE 같은 지표가 될 것이다. 

 

이베스트 증권의 API를 이용하면 비교적 간단하게 꼭 필요한 요약정보를 가져올 수 있는데 우선 여러분들의 PC에 XingAPI는 전부 설치되어 있다는 가정하에서 설명을 진행한다. 나는 그런 것 없다? 고 하시는 분들은 이전 포스트(2020/08/28 - [증권사 API] - 이베스트증권 API 샘플 사용법)를 참고바란다. 

 

우선 새로운 정보(TR)을 찾아볼 때에는 이베스트에서 제공하는 데브센터(DevCenter)를 활용하면 개발이 용이하다. 실행 후 로그인을 진행한 뒤 투자정보 항목을 보자. "t3320 FNG_요약"이라는 TR을 확인할 수 있을 것이다. **단 여기서 주의할 점은 TR이라는 말은 Transaction 이라는 말이다. 즉 먼저 들어온 요청이 처리되기 전까지 다음 요청은 대기를 하도록 구현되어 있기 때문에 이러한 TR을 너무 고빈도로 요청하면 서버에 무리를 주기때문에 자연스럽게 Block 처리가 된다. 데브센터에서 보면 초당 전송제한횟수가 친절히 나와 있으니 참고바란다.**

 

데브센터 t3320 속성 화면

Dim WithEvents XAQuery_t3320 As XAQuery 'FNG 요약정보 TR 이벤트 정의

'-------------------------------------------------------------------------------------------------------
' 에프앤가이드 요약정보
Private Sub Request_t3320()

    ' 객체를 생성한다.
    If XAQuery_t3320 Is Nothing Then
        Set XAQuery_t3320 = CreateObject("XA_DataSet.XAQuery")
        XAQuery_t3320.ResFileName = "\res\t3320.res"
    End If
    
    ' 데이터 세팅 : 입력필드는 종목코드 하나 밖에 없으므로 이것만 호출한다.
    Call XAQuery_t3320.SetFieldData("t3320InBlock", "gicode", 0, Sheet2.Cells(2, 3))
    
    ' 데이터 요청
    If XAQuery_t3320.Request(False) = False Then
        MsgBox "전송오류"
    End If

End Sub

Private Sub XAQuery_t3320_ReceiveData(ByVal szTrCode As String)
    Sheet2.Cells(4, 9) = XAQuery_t3320.GetFieldData("t3320OutBlock", "upgubunnm", 0)
    
    'PER, EPS, PBR, ROA, ROE,,, etc 을 특정 cell 에 기록한다.
    Sheet2.Cells(5, 9) = XAQuery_t3320.GetFieldData("t3320OutBlock1", "per", 0)
    Sheet2.Cells(6, 9) = XAQuery_t3320.GetFieldData("t3320OutBlock1", "eps", 0)
    Sheet2.Cells(7, 9) = XAQuery_t3320.GetFieldData("t3320OutBlock1", "pbr", 0)
    Sheet2.Cells(8, 9) = XAQuery_t3320.GetFieldData("t3320OutBlock1", "roa", 0)
    Sheet2.Cells(9, 9) = XAQuery_t3320.GetFieldData("t3320OutBlock1", "roe", 0)
    Sheet2.Cells(10, 9) = XAQuery_t3320.GetFieldData("t3320OutBlock1", "ebitda", 0)
    Sheet2.Cells(11, 9) = XAQuery_t3320.GetFieldData("t3320OutBlock1", "evebitda", 0)
    
End Sub

위의 코드를 주식 sheet 에 입력을 하면 위 그림과 같이 PER, PBR, EPS 등을 조회할 수 있다. 이베스트 API는 가이드가 잘 되어 있어서 구현이 그렇게 난해하지 않다. OutBlock 의 타입이 Occur 형태이면 대부분 for 문으로 받아서 처리하고 그렇지 않은 경우 한번에 조회된다고 생각하고 처리하면 수월할 것이다. 그리고 추가적으로 투자의견에 관한 TR 3401(Occur)도 동일한 방식으로 처리하면 위 그림처럼 해당 종목에 대한 증권사 애널리스트들의 투자의견에 관한 것도 조회가 가능하다. 

 

**엑셀파일을 첨부해 둘테니 위의 내용을 보고도 잘 이해가 안되면 다운받아서 직접 조작해보길 바란다.

 

주식현재가및호가(펀더멘털).xlsm
0.25MB

 

728x90

 

728x90
반응형

댓글