티스토리 뷰

출처 : BST261AG, Ver.0.9

 

# 주가 예측 및 추천 알고리즘 상세 설명서

본 시스템은 과거 일별 데이터(Daily Candles)와 당일 오전(09:00~10:00) 분봉 데이터(Minute Candles)를 결합하여, 당일 10시 이후의 주가 방향과 향후 3일간의 흐름을 예측합니다. 전체 종목을 스캔하여 상승 확률이 가장 높은 상위 200개 종목을 추천하는 것을 목표로 합니다.

## 1. 데이터 처리 파이프라인 (Data Pipeline)

### 1-1. 원본 데이터 (Raw Data)
1. **일봉 데이터 (Daily)**: DB에서 조회. 시가(Open), 고가(High), 저가(Low), 종가(Close), 거래량(Volume).
2. **분봉 데이터 (Minute)**: 엑셀 등에서 조회. 당일 09:00부터 10:00까지의 1분 단위 주가 흐름.

### 1-2. 특성 공학 (Feature Engineering) - 1차 및 2차 데이터 생성
알고리즘은 원본 데이터를 그대로 사용하지 않고, 수학적 변환을 통해 '특징(Feature)'을 추출하여 학습합니다.

**[1차 데이터: 추세 및 현황]**
*   **이동평균선 (Moving Averages)**: 5일, 20일, 50일, 100일, 200일 이동평균을 계산하여 중장기 추세를 파악합니다.
*   **이격도 (Ratio)**: 현재 주가와 각 이동평균선 간의 비율(Close / MA)을 계산하여 과매수/과매도 구간을 판단합니다.
*   **장중 초기 흐름 (Intraday Trend)**: 09:00~10:00 사이의 등락률, 거래량 합계, VWAP(거래량 가중 평균 가격) 등을 산출합니다.

**[2차 데이터: 변동성 및 신호 처리]**
*   **변동성 (Volatility)**: 분 단위 수익률의 표준편차를 계산하여 주가의 흔들림 강도를 측정합니다.
*   **FFT (고속 푸리에 변환) 분석**: 
    *   **일봉 FFT (Daily FFT)**: 최근 60일간의 주가 파동을 주파수 도메인으로 변환하여, 중기적인 주가 사이클(진동 에너지, 지배 주기, 위상)을 추출합니다.
    *   **분봉 FFT (Intraday FFT)**: 당일 09:00~10:00 주가 흐름의 고주파 특성(노이즈 vs 추세성)을 분석합니다.
*   **벡터 상관도 분석 (Vector Correlation)**:
    *   **가격-시간 상관도 (Price-Time Correlation)**: 최근 20일간 주가 흐름이 얼마나 직선적으로 상승/하락하고 있는지(추세 강도)를 측정합니다.
    *   **가격-거래량 상관도 (Price-Volume Correlation)**: 가격이 오를 때 거래량이 동반되는지(건전한 상승)를 수치화합니다.

## 2. 예측 모델링 (Predictive Modeling)

### 2-1. 학습 목표 (Target)
두 가지 관점에서 미래를 예측하도록 모델을 학습시킵니다.
1.  **단기 예측 (Day Trading)**: 당일 10:00 가격 대비 **당일 종가**의 수익률 예측.
2.  **중기 예측 (Swing Trading)**: 당일 종가 대비 **향후 3일 평균 주가**의 수익률 예측.

### 2-2. 알고리즘 경쟁 및 선택 (Model Competition)
다음 4가지 머신러닝 알고리즘을 동시에 학습시키고, 검증 데이터(Validation Set)에서 오차(RMSE)가 가장 작은 최적의 모델을 자동으로 선택합니다.
*   **Linear Regression**: 선형적 관계 파악에 유리.
*   **Ridge Regression**: 과적합 방지.
*   **Random Forest**: 비선형 패턴 및 복합 조건(예: "변동성이 크면서 20일선을 돌파하면 상승") 학습에 강점.
*   **Gradient Boosting**: 오차를 보정해가며 학습하여 높은 예측력을 보임 (주로 이 모델이 채택될 가능성이 높음).

## 3. 종목 스캔 및 추천 (Inference & Ranking)

### 3-1. 전체 종목 스캔
약 5,000개(코드상에서는 예시로 일부 적용) 종목에 대해 다음 과정을 수행합니다.
1.  데이터 로드: 해당 종목의 어제까지의 일봉 + 오늘 10시까지의 분봉.
2.  특징 추출: 위에서 정의한 1차, 2차 데이터를 실시간으로 계산.
3.  모델 예측: '당일 잔여 수익률' 및 '향후 3일 수익률' 예측값 산출.

### 3-2. 순위 선정 (Ranking)
*   **정렬 기준**: 예측된 '당일 잔여 수익률(Pred_RestOfDay_Return)'이 높은 순서대로 정렬합니다. (필요 시 향후 3일 수익률과 가중 합산 가능)
*   **최종 출력**: 상위 200개 종목을 추출하여 사용자에게 제시합니다.

## 4. 요약
이 알고리즘은 단순한 차트 패턴 분석을 넘어, **FFT와 같은 신호 처리 기법**을 통해 주가의 '파동 에너지'를 분석하고, **머신러닝**을 통해 통계적으로 가장 확률 높은 상승 패턴을 찾아내는 구조입니다.

 

 

반응형
반응형
250x250
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/02   »
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
글 보관함