경제분석

미국 물가와 주가간 상관관계 분석(feat. 파이썬&yfinance)

치타뱅뱅 2024. 1. 25. 21:23
728x90

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

 

오늘은 미국 물가와 주가간 상관관계 분석하는 글을 포스팅 하겠습니다.

물가는 CPI, 주가는 S&P 500지수를 data로 설정하여 분석하였습니다.

 

이전 포스팅 글에서는 상관관계가 0.5를 넘기가 힘들었는데, 이번 분석건은 결과부터보면

 

1. 물가와 S&P 500지수간 분석

물가(CPI)와 S&P 500지수간에는 상당히 큰 상관관계(상관관계 지수 0.89, p-value : 3.307)을

가졌습니다.

 

CPI 및 S&P 500지수

 

상관관계표

 

마지막 상관관계 표에서도 알 수 있듯이 CPI의 방향성을 예측할 수 있다면 주가의 방향성 역시 예측할 수 있습니다.

올해들어 Macro경제 가장 큰 관심은 미연준 기준금리일 것입니다.

 

2. 금리와 물가와의 연관성 분석

CPI의 방향성을 예측하기위해 아래와 같이 미연준 금리와 CPI의 연관성을 분석해 본 결과,

아래는 미연준 금리와 CPI와의 연관관계로 음의 상관관계(-0.24)를 갖습니다.

p-value값이 0.05보다 작아 유의적입니다. 다만 절대값이 0.5보다 작아 두 지표가 서로 즉시 반응하는 강한 상관관계는 아닙니다. 

미연준 기준금리와 CPI지수
상관관계표

 

3. 결론

올해 Macro경제학자 대다수가 예측하는 CPI가 완화되어 미국 기준금리를 완화할 경우,

S&P500지수가 다시 올라갈 가능성이 높습니다.

하지만 주의할 점은 최근 S&P 500지수가 급등하여, 아래와같이 CPI가 꺾이는 시점에 2008 금융위기떄처럼

급격히 주가가 빠질 수 있습니다. 장기적으로는 CPI, S&P500지수가 우상향하지만 단기적으로는 최고 금리에서 낮추는 시점에 시점에 CPI 및 S&P500지수가 급격히 빠지는 점을 주의 할 필요가 있습니다.

 

위의 주의점을 보며, 금리를 낮추는 시점(단기적으로는)에 CPI가 꺾이는 의미를 재해석하여

투자에 참고하시면 좋을거같습니다.

 

감사합니다.

경제위기시의 CPI 및 S&P 500 지수 금리
경제위기시 금리와 CPI지수

 

제가 만든 코드 첨부드립니다. 이번에는 pandas_datareader 설치하여 분석한점 참고하시기 바랍니다.

 

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import yfinance as yf
from pandas_datareader import data as pdr
from scipy.stats import pearsonr

# yfinance를 사용하기 전에 pandas_datareader를 초기화합니다.
yf.pdr_override()

# 미국 물가지수 데이터 다운로드 (CPIAUCNS)
cpi_data = pdr.get_data_fred('CPIAUCNS', start='2000-01-01', end='2023-12-31')['CPIAUCNS']

# S&P 500 지수 데이터 다운로드
sp500_data = yf.download('^GSPC', start='2000-01-01', end='2023-12-31')['Adj Close']

# 데이터를 데이터프레임으로 결합
df = pd.DataFrame({'CPI': cpi_data, 'SP500': sp500_data})

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

# 데이터 시각화
plt.figure(figsize=(12, 6))

plt.subplot(2, 1, 1)
plt.plot(df['CPI'], label='CPI', color='orange')
plt.title('Consumer Price Index over Time')
plt.legend()

plt.subplot(2, 1, 2)
plt.plot(df['SP500'], label='S&P 500')
plt.title('S&P 500 Index over Time')
plt.legend()

plt.tight_layout()
plt.show()

# 상관관계 및 p-value 계산
correlation, p_value = pearsonr(df['CPI'], df['SP500'])
print(f'상관관계: {correlation}')
print(f'p-value: {p_value}')

# 상관관계 시각화
plt.figure(figsize=(8, 6))
plt.scatter(df['CPI'], df['SP500'])
plt.title('Correlation between Consumer Price Index and S&P 500 Index')
plt.xlabel('Consumer Price Index')
plt.ylabel('S&P 500 Index')
plt.show()

 

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from pandas_datareader import data as pdr
from scipy.stats import pearsonr

# yfinance를 사용하기 전에 pandas_datareader를 초기화합니다.
yf.pdr_override()

# 미국 기준금리 데이터 다운로드 (Federal Funds Rate)
interest_rate_data = pdr.get_data_fred('FEDFUNDS', start='2000-01-01', end='2023-12-31')['FEDFUNDS']

# 미국 물가지수 데이터 다운로드 (CPIAUCNS)
cpi_data = pdr.get_data_fred('CPIAUCNS', start='2000-01-01', end='2023-12-31')['CPIAUCNS']

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

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

# 데이터 시각화
plt.figure(figsize=(12, 6))

plt.subplot(2, 1, 1)
plt.plot(df['InterestRate'], label='Interest Rate', color='orange')
plt.title('Federal Funds Rate over Time')
plt.legend()

plt.subplot(2, 1, 2)
plt.plot(df['CPI'], label='CPI', color='blue')
plt.title('Consumer Price Index over Time')
plt.legend()

plt.tight_layout()
plt.show()

# 상관관계 및 p-value 계산
correlation, p_value = pearsonr(df['InterestRate'], df['CPI'])
print(f'상관관계: {correlation}')
print(f'p-value: {p_value}')

# 상관관계 시각화
plt.figure(figsize=(8, 6))
plt.scatter(df['InterestRate'], df['CPI'])
plt.title('Correlation between Federal Funds Rate and Consumer Price Index')
plt.xlabel('Federal Funds Rate')
plt.ylabel('Consumer Price Index')
plt.show()