본문 바로가기

AI 및 자동화 툴 활용법

AI로 주가 예측 모델 만들기 (초보자용 가이드)

서론

주식 시장은 변동성이 크고, 다양한 요인이 가격에 영향을 미치기 때문에 정확한 예측이 어렵다. 하지만 AI와 머신러닝(ML)을 활용하면 과거 데이터를 분석하여 미래 주가 변동을 예측할 수 있다.

특히, 초보자도 Python과 간단한 머신러닝 라이브러리를 사용하면 기본적인 주가 예측 모델을 만들 수 있다. 이 글에서는 Python과 머신러닝을 활용한 간단한 주가 예측 모델을 만드는 방법을 단계별로 설명하겠다.

 

 

AI로 주가 예측 모델 만들기 (초보자용 가이드)


1. 주가 데이터 수집하기

필요한 라이브러리 설치

Python에서 주가 데이터를 가져오려면 yfinance 라이브러리를 사용하면 편리하다.

python
코드 복사
pip install yfinance pandas scikit-learn matplotlib

주가 데이터 다운로드

다음은 yfinance를 이용해 특정 종목(TSLA: 테슬라)의 주가 데이터를 가져오는 코드이다.

python
코드 복사
import yfinance as yf import pandas as pd # 테슬라(TSLA) 주가 데이터 가져오기 ticker = 'TSLA' data = yf.download(ticker, start="2020-01-01", end="2024-01-01") # 데이터 확인 print(data.head())

결과: data에는 날짜별 주가(Open, High, Low, Close, Volume 등)가 포함됨.


2. 데이터 전처리

필요한 컬럼 선택

주가 예측에서 중요한 것은 Close(종가) 가격이다.

python
코드 복사
data = data[['Close']] data = data.dropna() # 결측치 제거

데이터 정규화 (MinMax Scaling)

주가 데이터는 값의 범위가 크므로, 머신러닝 모델의 성능을 높이기 위해 데이터를 정규화한다.

python
코드 복사
from sklearn.preprocessing import MinMaxScaler scaler = MinMaxScaler(feature_range=(0, 1)) data_scaled = scaler.fit_transform(data)

3. 머신러닝을 활용한 주가 예측

여기서는 Linear Regression(선형 회귀) 모델을 사용해 간단한 주가 예측을 진행한다.

학습 데이터 준비

주가 예측을 위해 t-1일의 종가를 입력(X)으로 하고, t일의 종가를 출력(y)으로 설정한다.

python
코드 복사
import numpy as np X = [] y = [] for i in range(1, len(data_scaled)): X.append(data_scaled[i-1]) # 이전 날짜의 종가 y.append(data_scaled[i]) # 해당 날짜의 종가 X = np.array(X) y = np.array(y) # 학습 데이터와 테스트 데이터 분리 (80% 학습, 20% 테스트) train_size = int(len(X) * 0.8) X_train, X_test = X[:train_size], X[train_size:] y_train, y_test = y[:train_size], y[train_size:]

4. 모델 학습 및 평가

선형 회귀 모델 학습

python
코드 복사
from sklearn.linear_model import LinearRegression model = LinearRegression() model.fit(X_train, y_train) # 모델 평가 score = model.score(X_test, y_test) print(f"모델 정확도 (R^2 Score): {score:.4f}")

출력 예시: 모델 정확도 (R^2 Score): 0.85
(※ 정확도는 데이터에 따라 달라질 수 있음)


5. 주가 예측 및 시각화

미래 데이터 예측하기

python
코드 복사
import matplotlib.pyplot as plt # 실제 값과 예측 값 비교 predicted = model.predict(X_test) # 데이터를 원래 스케일로 변환 y_test_original = scaler.inverse_transform(y_test) predicted_original = scaler.inverse_transform(predicted) # 그래프 그리기 plt.figure(figsize=(12, 6)) plt.plot(y_test_original, label="Actual Price", color='blue') plt.plot(predicted_original, label="Predicted Price", color='red', linestyle='dashed') plt.legend() plt.title("Stock Price Prediction (Linear Regression)") plt.show()

결과: 실제 주가(파란색)와 예측 주가(빨간색)를 비교하는 그래프 출력.


6. 한 단계 더 나아가기 (딥러닝 적용하기)

선형 회귀 모델은 단순한 패턴만 학습하므로, LSTM (Long Short-Term Memory) 같은 딥러닝 모델을 적용하면 더 정교한 예측이 가능하다.

python
코드 복사
from tensorflow.keras.models import Sequential from tensorflow.keras.layers import LSTM, Dense # 모델 구성 model = Sequential([ LSTM(50, return_sequences=True, input_shape=(1, 1)), LSTM(50, return_sequences=False), Dense(1) ]) # 모델 컴파일 및 학습 model.compile(optimizer='adam', loss='mean_squared_error') model.fit(X_train.reshape(-1, 1, 1), y_train, epochs=20, batch_size=16) # 예측 수행 predicted_lstm = model.predict(X_test.reshape(-1, 1, 1)) predicted_lstm_original = scaler.inverse_transform(predicted_lstm) # 결과 시각화 plt.plot(y_test_original, label="Actual Price", color='blue') plt.plot(predicted_lstm_original, label="Predicted Price (LSTM)", color='green', linestyle='dashed') plt.legend() plt.title("Stock Price Prediction (LSTM)") plt.show()

결과: 딥러닝 모델을 활용한 주가 예측 그래프 출력.


결론

선형 회귀 모델: 간단한 예측 가능, 학습 속도가 빠름
딥러닝(LSTM) 모델: 복잡한 패턴도 학습 가능, 하지만 더 많은 데이터가 필요

초보자라면 선형 회귀 모델부터 시작하고, 더 정교한 예측을 원한다면 LSTM과 같은 딥러닝 모델을 적용하는 것이 좋다.

이제 AI를 활용하여 자신만의 주가 예측 모델을 만들어보자! 🚀