모델 학습 데이터 수집
https://stockman.fly.dev 대시보드 개발에 사용된 학습 데이터 수집 과정을 설명합니다.
📊 수집하는 데이터의 종류
1. KRX 시장 지수 데이터
KOSPI, KOSDAQ 같은 주요 시장 지수의 일별 데이터를 pykrx 를 활용해 수집합니다.
2. 주가(OHLCV) 데이터
개별 종목의 주가 데이터를 pykrx 를 활용해 수집합니다.
- 시가(Open): 장 시작 가격
- 고가(High): 당일 최고가
- 저가(Low): 당일 최저가
- 종가(Close): 장 마감 가격
- 거래량(Volume): 거래된 주식 수
이 데이터는 한국거래소(KRX)에서 제공하는 공식 데이터로 2015년부터 현재까지의 과거 데이터를 수집했습니다.
3. 투자자별 매매 동향
투자자별 매매 동향 데이터를 pykrx 를 활용해 수집합니다.
- 외국인 순매수/순매도 금액
- 기관 순매수/순매도 금액
- 투자주체별 거래량
4. 기업 기본 지표(Fundamental)
기업 기본 지표를 pykrx 를 활용해 수집합니다.
- PER(주가수익비율): 주가가 수익 대비 얼마나 비싼지 판단
- PBR(주가순자산비율): 주가가 자산 대비 얼마나 비싼지 판단
- EPS(주당순이익): 한 주당 벌어들이는 이익
- DIV(배당수익률): 투자금 대비 배당금 비율
5. 거시경제 지표 (ECOS)
한국은행 경제통계시스템(ECOS)에서 제공하는 거시경제 지표를 ECOS Open API 를 활용해 수집합니다.
- 기준금리: 금리가 오르면 주식 시장에 부정적 영향
- 환율(USD/KRW): 원달러 환율 변동
- 물가상승률(CPI): 인플레이션 지표
- 수출액/수입액: 대외 무역 동향
- 무역수지: 수출액 - 수입액
6. 기업 재무제표 (DART)
금융감독원 전자공시시스템(DART)에서 기업들이 공시하는 정식 재무제표 데이터를 DART Open API 를 활용해 수집합니다.
- 매출액: 기업이 벌어들인 총 수익
- 영업이익: 본업으로 벌어들인 이익
- 당기순이익: 최종적으로 남은 순이익
- 총자산: 기업이 보유한 모든 자산
- 자기자본: 부채를 제외한 순수 자본
- 부채총계: 기업이 갚아야 할 부채
그리고 이를 기반으로 계산되는 재무 비율들:
- 부채비율: 자본 대비 부채 비율
- ROE(자기자본이익률): 자본 대비 수익성
- ROA(총자산이익률): 자산 대비 수익성
- 영업이익률, 순이익률: 매출 대비 이익률
7. 네이버 증권 정보
네이버 금융에서 제공하는 증권사 애널리스트들의 종합 의견과 시장 정보입니다. Playwright 로 수집/파싱 합니다.
- 투자의견 점수: 증권사들의 매수/보유/매도 의견 종합
- 목표주가: 증권사들이 제시한 목표 주가의 평균
- 52주 최고가/최저가: 지난 1년간의 주가 범위
- 예상 PER/EPS: 향후 실적 전망치
- 동종업종 PER: 같은 업종의 평균 PER
- 외국인 보유비율: 외국인이 보유한 주식 비중
- 상장주식수: 전체 발행 주식 수
🔄 데이터 수집 프로세스
자동화된 데이터 파이프라인
모든 데이터는 자동화된 프로세스를 통해 매일 수집됩니다.
-
증분 수집 방식: 데이터베이스에서 마지막으로 수집된 날짜를 확인하고, 그 이후의 데이터만 수집합니다. 이를 통해 중복 수집을 방지하고 효율성을 높입니다.
-
기간 분할 처리: 장기간의 데이터를 한 번에 수집하면 API 제한에 걸리거나 메모리 문제가 발생할 수 있으므로, 1년 단위로 나누어 수집합니다.
-
API 호출 제한 준수: 각 API마다 호출 횟수 제한이 있으므로, 요청 사이에 적절한 대기 시간(5~10초)을 두어 안정적으로 데이터를 수집합니다.
-
에러 처리: 네트워크 오류나 데이터 품질 문제 등이 발생해도 전체 프로세스가 중단되지 않도록 예외 처리를 구현했습니다.
-
데이터 검증: 수집된 데이터의 품질을 검증하여 이상 데이터는 걸러내고, 정상 데이터만 저장합니다.
💾 데이터 저장 방식
모든 데이터는 PostgreSQL 데이터베이스에 저장하고 있습니다.
데이터베이스에 저장함으로써:
- 대용량 데이터를 효율적으로 관리
- 여러 모델에서 동일한 데이터를 재사용
- SQL 쿼리로 복잡한 데이터 분석 가능
- 데이터 백업과 복구가 용이
📈 수집 대상 종목
현재 KOSPI와 KOSDAQ의 주요 종목 약 200개를 대상으로 데이터를 수집하고 있습니다.