일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- FOMC
- 중국증시
- 경제위기
- 뇌졸중
- 지엔티파마
- 코로나19
- 주식투자
- 퀀트
- 마법공식
- 뉴지스탁
- WTI유
- 금리인상
- 머신러닝
- 주가분석
- 유상증자
- 테슬라
- Python
- 제다큐어
- prometheus
- WTI
- 기업분석
- 국제유가
- 반려견치매
- 엘론 머스크
- 아모레퍼시픽
- 스크리닝
- DSP
- 넬로넴다즈
- 중국경제
- 미국금리
- Today
- Total
Data Analysis for Investment & Control
DAVID - 주가 및 거래량 데이터 수집 프로그램 본문
주가 예측을 위한 분석을 진행하기 위해서는 당연히 실제 데이터가 있어야 한다. 과거 주가 데이터를 구하기가 쉽지만은 않은데, 대량의 데이터를 무료로 얻을 수 있는 방법 중에 하나가 증권사 API를 이용하는 것이다. 주식이나 채권과 같은 증권 데이터를 제공하거나 지수 정보를 제공, 또는 매매를 위해 프로그래밍 언어 기반의 인터페이스를 제공하는 것이 증권사 API이다.
증권사 API 선택
국내 모든 증권사가 이런 API를 제공하는 것은 아닌 것 같다. 그 중에 대표적인 것은 대신증권, 키움증권, 이베스트(구 이트레이드) 증권사 등이다.
이전에는 대신증권 API를 사용하여 주가 데이터 수집 프로그램을 만들었는데, 최근 API 서비스에 대해서 상당히 무성의한 모습을 보이고 있다. 4월 홈페이지 개편 이후로는 질문에 대한 피드백도 전혀 없는 듯 보인다. API가 COM 기반에, 인터페이스도 다소 복잡해서 사용하기 어려웠는데, 더 이상 사용하지 말라는 것 같다.
대신증권 말고 어떤 증권사 API가 괜찮은지 찾아보다가 이베스트 증권사 API가 괜찮다는 말을 듣고, 가입하여 이베트스 XingAPI를 사용해 보았다. DLL 기반으로 인터페이스 함수 구성이 깔끔한게 그나마 괜찮아 보였다.
주가 데이터 수집 프로그램
우선적으로 이베스트 증권에서 제공하는 XingAPI 샘플 프로그램을 사용해 보고, 내가 필요한 특정 기업의 주가와 거래량 데이터를 어떻게 얻을 수 있는지 확인했다.
일정 기간의 주가와 거래량 데이터를 제공받을 수 있는 Transaction 아이디를 파악하고 해당 모듈을 가지고 특정 기업의 코드를 조회하여 데이터를 받아올 수 있도록 했다. 이 과정에서 내(사용자)가 기업의 모든 코드를 알 수는 없으므로 기존에 만들어 두었던 컴포넌트 모듈을 활용하여, 기업명을 입력하면 ISIN을 조회하여 코드 변환 과정을 거쳐 XingAPI로 조회하는 루트를 거치도록 프로그래밍 하였다.
위의 개념도에 따라 구현되었다..
DAVID - Data Aquisition and Verification Interface on Demand
Prometheus를 위해 개발하고자 하는 주가 분석 및 예측을 위한 데이터 수집 프로그램의 이름을 뭘로 지을까 고민하다가 DAVID라는 이름을 떠올렸다. 수요 기반 데이터 수집 및 검증 인터페이스(Data Aquisition and Verification Interface on Demand)로 지었다. Prometheus에서 사용하려는 데이터 포맷이 주가나 거래량 뿐만 아니라 재무제표의 표준 데이터 포맷, 다양한 경제 지표의 표준 데이터 포맷으로의 수집/변환/검증/저장을 목적으로 하고 있기 때문에 어찌보면 적당한 이름이라고 생각된다.
초기 버전이라 딱히 버전 넘버링도 하지 않았는데, 더욱 더 구색이 갖추어 지면 넘버링도 해야 되겠다.
일단 프로그램이 실행되면 이베트스 증권사 서버에 접속하기 위한 로그인 과정을 거친다.
로그인이 정상적으로 진행되면, TabCtrl 내에 예제 프로그램에서 따온 다이얼로그가 있고, 상단에 기업명과 현재 시점으로부터 구하고자 하는 데이터(일 기준) 수를 입력하는 부분이 있다.
내용을 입력하고 검색을 하면 리스트 컨트롤 내에 조회한 데이터가 나타나게 된다. 우리가 필요한 부분은 날짜와 종가, 거래량이므로 프로그램 내에서는 해당 데이터만 저장이 된다.
저장 버튼을 선택하면, ISIN을 이름으로 하는 데이터 파일이 저장된다.
사실 그 동안 FnGuide의 웹페이지 파싱 기법으로 재무제표 수집 프로그램을 만들기도 했고, 대신증권 API가지고도 주가 데이터 수집 프로그램을 만들기도 했는데, 데이터 포맷 표준화가 안되어 활용도는 낮았다.
이번에는 Prometheus를 위한 목적성을 가지고 있는 만큼 데이빗(DAVID)의 활용도가 기대된다.
향후 개선 사항들...
비교적 빠른 파일 입출력을 위해 간단한 구조의 표준화된 파일 포맷을 고려해야 한다. 파일 내용의 갱신을 고려한 모델 역시 필요하겠다.
주가와 거래량 데이터 뿐만 아니라, 재무제표 데이터 수집을 위한 인터페이스 추가가 필요하다.
웹페이지 html 코드 파싱 보다는 다른 방법을 생각해 보자...
'Investment Assistant Tools > DAVID' 카테고리의 다른 글
DAVID - 재무제표 데이터 수집 기능 추가 (2) | 2015.05.25 |
---|