4주차: 종합 예제 및 전략 검증
강의 목표: 이번 주차 강의에서는 앞서 배운 내용을 종합하여 실제 데이터를 사용해 주식 시장의 거래 전략을 수립하고 검증하는 방법을 학습합니다. 또한, 후행 전략의 한계를 보완하기 위한 예측 모델과 리스크 관리 기법을 소개합니다.
1. 종합 예제 소개
이번 강의에서는 Apple(AAPL) 주식 데이터를 사용하여 종합 예제를 진행합니다. 이 예제는 데이터 수집, 전처리, K-평균 클러스터링을 통한 시장 레짐 감지, 거래 전략 수립 및 검증의 전 과정을 다룹니다.
2. 데이터 수집 및 전처리
먼저, Yahoo Finance API를 사용하여 데이터를 수집하고 전처리합니다.
import yfinance as yf
from sklearn.preprocessing import StandardScaler
import matplotlib.pyplot as plt
# 데이터 다운로드
df = yf.download('AAPL', start='2023-01-01', end='2023-12-31')
df = df[['Open', 'High', 'Low', 'Close', 'Volume']]
df.fillna(method='ffill', inplace=True)
# 데이터 표준화
scaler = StandardScaler()
scaled_features = scaler.fit_transform(df)
- 데이터 다운로드:
yfinance
라이브러리를 사용하여 Apple(AAPL) 주식 데이터를 다운로드합니다. - 전처리: 결측치를 이전 값으로 채워 넣고, 데이터를 표준화합니다.
3. K-평균 클러스터링 적용
수집한 데이터에 K-평균 클러스터링을 적용하여 시장 레짐을 감지합니다.
from sklearn.cluster import KMeans
# K-평균 클러스터링 적용
kmeans = KMeans(n_clusters=3, random_state=0)
df['Cluster'] = kmeans.fit_predict(scaled_features)
# 클러스터 결과 시각화
plt.figure(figsize=(10, 5))
plt.scatter(df.index, df['Close'], c=df['Cluster'])
plt.title('Market Regime Clustering')
plt.xlabel('Date')
plt.ylabel('Close Price')
plt.show()
- K-평균 클러스터링: 3개의 클러스터로 데이터를 나누고, 각 데이터 포인트에 클러스터 레이블을 할당합니다.
- 시각화: 클러스터 결과를 시각화하여 각 클러스터가 주가와 어떻게 연관되는지 확인합니다.
4. 클러스터 중심값 분석
각 클러스터의 중심값을 분석하여 시장 레짐을 정의합니다.
# 클러스터 중심값 확인
cluster_centers = scaler.inverse_transform(kmeans.cluster_centers_)
for i, center in enumerate(cluster_centers):
print(f'클러스터 {i}: 중심값 = {center}')
- 클러스터 중심값 확인: 각 클러스터의 중심값을 출력하여 각 클러스터가 어떤 시장 상태를 나타내는지 분석합니다.
5. 거래 전략 수립
각 시장 레짐에 맞는 거래 전략을 수립합니다.
def trading_strategy(cluster):
if cluster == 0:
return "Buy"
elif cluster == 1:
return "Sell"
else:
return "Hold"
df['Strategy'] = df['Cluster'].apply(trading_strategy)
print(df[['Close', 'Cluster', 'Strategy']].head())
- 거래 전략 정의: 각 클러스터에 대해 매수, 매도, 보유 전략을 정의하고, 데이터프레임에 추가합니다.
6. 전략 검증
수립한 거래 전략을 검증하여 성과를 평가합니다.
import numpy as np
# 초기 자본 설정
initial_capital = 100000
capital = initial_capital
positions = []
# 포트폴리오 성과 계산
for i in range(len(df)):
if df['Strategy'].iloc[i] == "Buy":
positions.append(df['Close'].iloc[i])
capital -= df['Close'].iloc[i]
elif df['Strategy'].iloc[i] == "Sell" and len(positions) > 0:
capital += df['Close'].iloc[i]
positions.pop()
final_capital = capital + len(positions) * df['Close'].iloc[-1]
print(f'Initial Capital: ${initial_capital}')
print(f'Final Capital: ${final_capital}')
print(f'Return: {(final_capital - initial_capital) / initial_capital * 100:.2f}%')
- 초기 자본 설정: 초기 자본을 설정하고 거래 전략에 따라 매수와 매도를 시뮬레이션합니다.
- 포트폴리오 성과 계산: 전략을 적용한 후의 최종 자본과 수익률을 계산하여 평가합니다.
7. 후행 전략의 한계와 보완 방법
후행 전략의 한계를 보완하기 위해 예측 모델과 리스크 관리 기법을 도입합니다.
- 예측 모델 도입:
- 머신러닝 모델을 사용하여 미래 주가를 예측합니다.
- 예: LSTM(Long Short-Term Memory) 네트워크를 사용한 시계열 예측
- 리스크 관리 기법:
- 손절매(Stop-Loss) 및 이익 실현(Take-Profit) 설정
- 포트폴리오 다변화(Diversification) 전략
예제 코드:
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
# 예측 모델 도입 (단순 예측 모델 예시)
df['Target'] = df['Close'].shift(-1)
train, test = train_test_split(df.dropna(), test_size=0.2, shuffle=False)
model = LinearRegression()
model.fit(train[['Open', 'High', 'Low', 'Close', 'Volume']], train['Target'])
predictions = model.predict(test[['Open', 'High', 'Low', 'Close', 'Volume']])
test['Prediction'] = predictions
# 예측 결과 시각화
plt.figure(figsize=(10, 5))
plt.plot(test.index, test['Close'], label='Actual')
plt.plot(test.index, test['Prediction'], label='Predicted')
plt.title('Stock Price Prediction')
plt.xlabel('Date')
plt.ylabel('Price')
plt.legend()
plt.show()
- 예측 모델: 단순 선형 회귀 모델을 사용하여 다음 날 주가를 예측합니다.
- 리스크 관리: 예측 모델과 함께 리스크 관리 기법을 도입하여 전략을 보완합니다.
결론
이번 주차 강의에서는 종합 예제를 통해 앞서 배운 내용을 실제 데이터에 적용하고, 거래 전략을 수립하고 검증하는 과정을 학습했습니다. 또한, 후행 전략의 한계를 이해하고 예측 모델과 리스크 관리 기법을 통해 이를 보완하는 방법을 배웠습니다.
이 강의를 통해 여러분이 시장 레짐을 정의하고, 이에 맞는 거래 전략을 수립하며, 전략의 효과를 검증하는 과정을 명확히 이해했기를 바랍니다. 여러분이 배운 내용을 토대로 실제 주식 데이터를 분석하고 전략을 최적화해 보세요. 다음 강의에서는 더욱 심화된 주제로 찾아뵙겠습니다!
질문 및 피드백: 강의 내용에 대한 질문이나 피드백이 있으시면 댓글로 남겨주세요. 이 강의가 마음에 드셨다면 ❤️ 한 번 꾹 눌러주세요! Happy coding!
'비트코인 자동매매 프로그램 > [전략개발] 인공지능' 카테고리의 다른 글
[K-means clustering] 3.시장 레짐 정의 및 거래 전략 수립 (2) | 2024.06.18 |
---|---|
[K-means clustering] 2.K-평균 클러스터링 개요 및 적용 (0) | 2024.06.17 |
[K-means clustering] 1. 인공지능을 활용한 주식 시장 레짐 감지 및 거래 전략 수립 (0) | 2024.06.17 |
[K-means clustering] 0. 인공지능을 활용한 주식 시장 레짐 감지 및 거래 전략 수립 (0) | 2024.06.17 |
[LSTM] 8. 주가 변동 방향 예측 (2) | 2024.06.13 |