AI
AI 자동매매 시스템
LSTM 기반 주가 예측 모델로 구축한 AI 자동매매 시스템. 데이터 수집부터 모델 학습, 실전 매매 신호 생성까지 전 과정을 자동화했습니다.

크게 보기

크게 보기

크게 보기
프로젝트 소개
주식·코인 시장의 24시간 변동성을 AI로 대응하기 위해 개발한 자동매매 시스템입니다. LSTM(Long Short-Term Memory) 딥러닝 모델로 시계열 주가 데이터를 학습하고, 매매 신호를 자동 생성하여 리스크를 관리합니다.
⚠️ 본 시스템은 교육 및 연구 목적으로 개발되었습니다. 실제 투자 시 충분한 백테스트와 리스크 관리가 필수입니다.
시스템 아키텍처
데이터 수집 → 전처리 → 모델 학습 → 신호 생성 → 주문 실행 → 모니터링
주요 기능
- 자동 데이터 수집: yfinance로 주가 데이터 및 기술 지표(RSI, MACD) 자동 수집
- LSTM 예측 모델: 시계열 딥러닝으로 다음날 종가 예측
- 매매 신호 생성: 예측 등락률 기반 BUY / SELL / HOLD 신호 출력
- 리스크 관리: 손절매(2%), 포지션 사이징(10%), MDD 제한(15%) 자동 적용
- 백테스트: 과거 데이터 기반 전략 성과 검증
기술적 구현
데이터 수집 및 기술 지표
import yfinance as yf
import pandas as pd
def get_stock_data(ticker: str, period: str = "2y") -> pd.DataFrame:
stock = yf.Ticker(ticker)
df = stock.history(period=period)
return df[["Open", "High", "Low", "Close", "Volume"]]
def add_indicators(df: pd.DataFrame) -> pd.DataFrame:
# RSI
delta = df["Close"].diff()
gain = (delta.where(delta > 0, 0)).rolling(14).mean()
loss = (-delta.where(delta < 0, 0)).rolling(14).mean()
df["RSI"] = 100 - (100 / (1 + gain / loss))
# MACD
ema12 = df["Close"].ewm(span=12).mean()
ema26 = df["Close"].ewm(span=26).mean()
df["MACD"] = ema12 - ema26
return df
LSTM 모델 구성
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import LSTM, Dense, Dropout
def build_model(input_shape: tuple) -> Sequential:
model = Sequential([
LSTM(128, return_sequences=True, input_shape=input_shape),
Dropout(0.2),
LSTM(64, return_sequences=False),
Dropout(0.2),
Dense(32, activation="relu"),
Dense(1) # 다음날 종가 예측
])
model.compile(optimizer="adam", loss="mse")
return model
매매 신호 생성
def generate_signal(model, data: np.ndarray, threshold: float = 0.02):
predicted = model.predict(data)
current_price = data[-1, -1, 3] # 현재 종가
change_rate = (predicted[0][0] - current_price) / current_price
if change_rate > threshold:
return "BUY"
elif change_rate < -threshold:
return "SELL"
return "HOLD"
리스크 관리 전략
| 항목 | 기준 | |------|------| | 손절매 | 2% 이상 손실 시 자동 청산 | | 포지션 사이징 | 전체 자산의 최대 10% 이내 | | 분산 투자 | 단일 종목 집중 금지 | | MDD 제한 | 최대 낙폭 15% 초과 시 거래 중단 |
백테스트 결과
2년간 백테스트 기준:
- 연 수익률: 23%
- 최대 낙폭(MDD): 11.3%
- 샤프 비율: 1.8
- 승률: 58%
프로젝트 정보
카테고리
AI
완료일
2025년 1월 20일
읽기 시간
3 min read
기술 스택
PythonTensorFlowLSTMKeraspandasyfinance