안녕하세요. 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}')
'경제분석' 카테고리의 다른 글
금리, 물가 중 어떤게 선행변수인가?("닭이먼저냐 알이먼저냐") (0) | 2024.02.01 |
---|---|
기준금리 및 실업률을 기반으로 S&P 500 예측하기 (0) | 2024.01.28 |
미국 물가와 주가간 상관관계 분석(feat. 파이썬&yfinance) (0) | 2024.01.25 |
미국 기준금리와 애플/테슬라 주가간 상관관계 분석(feat. 파이썬&yfinance) (0) | 2024.01.16 |
주식 배당의 용어 정리 (0) | 2023.06.26 |