경제분석

2024년 6월 애플 주가 예측(미국 기준금리 기준, 파이썬 sklearn 활용)

치타뱅뱅 2024. 1. 26. 01:08
728x90

안녕하세요. IT 솔루션 사업가 이성용입니다.

 

앞서 포스팅 글은 상관관계 분석에 초점을 두었다면, 이번에는

선형회귀분석을 통해 애플 주가를 예측해보았습니다. 

 

아래 결과값은 참고만 하며, 의사결정 및 판단은 본인이 해야합니다.

 

결론은 R2 score가 1보다 현저히 낮기때문에 신뢰할 수 는 없지만,

금리가 높은(4~5.5)구간에서는 신뢰도가 높다고 해석 할 수도 있을거 같습니다.

 

1. 가정 : 2024년 6월 기준금리 5.0(현재 5.5)로 가정

2. 데이터 : 2014.01.01 ~ 2023.12.31(과거 저금리 data까지 할경우 선형회귀 R2 score가 너무 낮음)

3. 결과 : 2024년 6월 $145.81(현재 $195로 약 20% 하락 예측)

4. 계산결과값 : R2 score가 1보다 현저히 낮아 신뢰도는 낮다.

                       (다만 고금리 구간에서는 MAE,RMSE가 작기에 조심스럽게 금리 하락기에는 정확도가 높다고

                        해석할 수도 있지 않을까 싶다. 앞선 포스팅 글의 금리와의 연관성 참고)

                        

선형 회귀분석
애플 주가

5. 분석 코드

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import yfinance as yf
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import r2_score
from sklearn import metrics

# 애플 주가 데이터 다운로드
apple_data = yf.download('AAPL', start='2014-01-01', end='2023-12-31')['Adj Close']

# 미국 기준금리 데이터 다운로드 (10-Year Treasury Constant Maturity Rate)
interest_rate_data = yf.download('^IRX', start='2014-01-01', end='2023-12-31')['Adj Close']

# 데이터를 데이터프레임으로 결합
df = pd.DataFrame({'AppleStockPrice': apple_data, 'InterestRate': interest_rate_data})

# 결측치 처리
df = df.dropna()

# 독립 변수와 종속 변수 분리
X = df[['InterestRate']]
y = df['AppleStockPrice']

# 훈련 데이터와 테스트 데이터로 분할
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 선형 회귀 모델 훈련
model = LinearRegression()
model.fit(X_train, y_train)

# 테스트 데이터로 예측
y_pred = model.predict(X_test)

# 모델 평가
print('Mean Absolute Error:', metrics.mean_absolute_error(y_test, y_pred))
print('Mean Squared Error:', metrics.mean_squared_error(y_test, y_pred))
print('Root Mean Squared Error:', np.sqrt(metrics.mean_squared_error(y_test, y_pred)))

# r2_score 계산
r2 = r2_score(y_test, y_pred)
print(f'R-squared (R2) Score: {r2}')

# 결과 시각화
plt.scatter(X_test, y_test, color='black')
plt.plot(X_test, y_pred, color='blue', linewidth=3)
plt.title('Linear Regression Model: Apple Stock Price vs. Interest Rate')
plt.xlabel('Interest Rate')
plt.ylabel('Apple Stock Price')
plt.show()

# 예측을 위한 데이터 프레임 생성
prediction_data = pd.DataFrame({'InterestRate': [5.0]})  # 2024년 6월 금리가 3.0이라고 가정

# 애플 주가 예측
apple_price_prediction = model.predict(prediction_data)

print(f'2024년 6월 금리가 5.0이라고 가정할 경우 예상되는 애플 주가: ${apple_price_prediction[0]:.2f}')