본문 바로가기
투자정보

금값의 상관관계가 있는 모든 변수를 활용하여 금값을 예측하는 함수

by aiproductmanager 2025. 3. 16.
728x90
반응형
 
 

금값 예측을 위한 함수는 다양한 거시경제 변수, 금융 시장 지표, 수요와 공급 요인 등을 고려해야 합니다. 다음과 같은 변수들이 금값과 높은 상관관계를 가질 수 있습니다.

금값 예측을 위한 주요 변수:

  1. 미국 달러 인덱스 (DXY): 금값과 역상관 관계
  2. 미국 국채 금리 (10년물, 2년물): 금값과 대체적으로 역상관 관계
  3. 실물 인플레이션 지표 (CPI, PPI): 인플레이션이 오르면 금값 상승 가능성
  4. 금 선물 가격 (COMEX Gold Futures): 시장 기대 반영
  5. 주식 시장 변동성 지수 (VIX): 경제 불확실성이 높을 때 금값 상승 가능성
  6. 중앙은행 금 보유량: 각국의 금 보유 정책 변화
  7. 금 ETF 보유량 (SPDR Gold Trust - GLD): 투자 수요 반영
  8. 원자재 가격 (은, 구리, 원유): 원자재 시장의 전반적인 흐름 반영
  9. 외환시장 (특히 USD/CNY, EUR/USD 등): 글로벌 통화 흐름과 관련
  10. 경기 침체 지표 (PMI, GDP 성장률, 소비심리지수): 경제 불확실성이 커지면 금 수요 증가

금값 예측 함수 (Python)

이제 위 변수들을 활용해 금값을 예측하는 함수를 만들어 보겠습니다. 주요 단계는 다음과 같습니다:

  1. 최신 데이터를 웹에서 가져오기
  2. 데이터를 전처리하여 모델 학습에 적합하게 변환
  3. 머신러닝 모델 (Random Forest, LSTM 등) 학습
  4. 실시간 입력값으로 금값 예측

우선, RandomForestRegressor를 사용한 기본 모델을 만들어 보겠습니다.

 


1. 필요한 라이브러리 설치 및 불러오기

python
복사편집
import numpy as np
import pandas as pd
import yfinance as yf
from sklearn.ensemble import RandomForestRegressor
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_absolute_error
import matplotlib.pyplot as plt

2. 데이터 수집

python
복사편집
# 금 가격 (Gold Futures)
gold_data = yf.download('GC=F', start='2010-01-01', end='2025-01-01')

# 미국 달러 인덱스 (DXY)
dxy_data = yf.download('DX-Y.NYB', start='2010-01-01', end='2025-01-01')

# 미국 10년물 국채 금리
us10y_data = yf.download('^TNX', start='2010-01-01', end='2025-01-01')

# S&P 500 지수 (주식시장 영향 분석)
sp500_data = yf.download('^GSPC', start='2010-01-01', end='2025-01-01')

# VIX 지수 (시장 변동성)
vix_data = yf.download('^VIX', start='2010-01-01', end='2025-01-01')

3. 데이터 전처리

python
복사편집
# 날짜 기준으로 데이터 병합
df = gold_data[['Adj Close']].rename(columns={'Adj Close': 'Gold_Price'})

df['DXY'] = dxy_data['Adj Close']
df['US10Y'] = us10y_data['Adj Close']
df['SP500'] = sp500_data['Adj Close']
df['VIX'] = vix_data['Adj Close']

# 결측치 제거
df = df.dropna()

4. 머신러닝 모델 학습

python
복사편집
# Feature & Target 설정
X = df.drop(columns=['Gold_Price'])
y = df['Gold_Price']

# 데이터 분할 (80% 학습, 20% 테스트)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 랜덤 포레스트 회귀 모델 학습
model = RandomForestRegressor(n_estimators=100, random_state=42)
model.fit(X_train, y_train)

# 예측 및 평가
y_pred = model.predict(X_test)
mae = mean_absolute_error(y_test, y_pred)

print(f'테스트 데이터 MAE: {mae:.2f}')

5. 예측 함수

python
복사편집
def predict_gold_price(dxy, us10y, sp500, vix):
    """
    입력된 경제 변수 값들을 기반으로 금값을 예측하는 함수
    """
    input_data = np.array([[dxy, us10y, sp500, vix]])
    predicted_price = model.predict(input_data)[0]
    return predicted_price

# 예제 사용
predicted_price = predict_gold_price(104.5, 4.2, 4800, 18.5)
print(f'예측된 금 가격: {predicted_price:.2f}')

결과 및 개선 방향

  • 위 모델은 RandomForestRegressor를 활용하여 주요 거시경제 지표를 바탕으로 금값을 예측합니다.
  • 더 높은 예측력을 위해 LSTM, XGBoost, ARIMA 같은 모델을 추가로 적용할 수 있습니다.
  • 외부 데이터를 추가 (중앙은행 금 보유량, ETF 보유량 등)하면 더 정밀한 모델을 만들 수 있습니다.

필요하면 추가적인 변수를 반영한 모델도 구현해 줄 수 있습니다!

 

728x90
반응형