카테고리 없음

[Python] 나스닥(NASDAQ)과 코스피(KOSPI) 지수 간 상관 관계 분석: Python을 활용한 데이터 분석 및 시각화

indigenthuman 2024. 9. 1. 15:43

나스닥(NASDAQ)과 코스피(KOSPI) 지수 간 상관 관계 분석: Python을 활용한 데이터 분석 및 시각화

금융 시장에서 서로 다른 국가의 주요 지수 간 상관 관계를 이해하는 것은 글로벌 투자 전략을 세우는 데 매우 중요합니다. 이번 블로그에서는 Python을 사용하여 미국의 나스닥(NASDAQ) 지수와 한국의 코스피(KOSPI) 지수 간의 상관 관계를 분석하고 이를 시각화하는 방법을 살펴보겠습니다.

우리는 yfinance 라이브러리를 사용하여 데이터를 가져오고, scipy를 이용해 상관 관계 분석을 수행하며, matplotlib을 활용해 분석 결과를 시각화할 것입니다.

1. 필요한 라이브러리 설치

먼저, 주식 데이터를 가져오고 분석하기 위해 필요한 라이브러리를 설치해야 합니다. 이 블로그에서는 pandas, yfinance, scipy, matplotlib을 사용합니다. 아래 명령어를 통해 라이브러리를 설치할 수 있습니다.

pip install pandas yfinance scipy matplotlib

2. 나스닥(NASDAQ)과 코스피(KOSPI) 지수 데이터 가져오기

먼저, yfinance 라이브러리를 이용해 나스닥(NASDAQ)과 코스피(KOSPI) 지수의 과거 데이터를 다운로드합니다. 우리는 2000년 1월 4일부터 현재까지의 데이터를 가져올 것입니다.

import pandas as pd
import yfinance as yf

# 나스닥(NASDAQ)과 코스피(KOSPI) 지수 데이터 다운로드
nasdaq = yf.download('^NDX', '2000-01-04')
kospi = yf.download('^KS11', '2000-01-04')

위 코드는 나스닥 100 지수(^NDX)와 코스피 지수(^KS11)의 2000년 1월 4일부터 현재까지의 종가 데이터를 가져옵니다. yfinance는 Yahoo Finance에서 데이터를 손쉽게 가져올 수 있게 해주는 유용한 라이브러리입니다.

3. 데이터 전처리

다운로드한 데이터는 종종 결측치(NaN)를 포함할 수 있습니다. 이러한 결측치는 데이터 분석 결과에 영향을 미칠 수 있으므로 이를 처리해야 합니다.

# 데이터프레임 생성 및 결측치 처리
df = pd.DataFrame({'X': nasdaq['Close'], 'Y': kospi['Close']})
df = df.fillna(method='bfill')  # 결측치를 뒤의 값으로 채움
df = df.fillna(method='ffill')  # 결측치를 앞의 값으로 채움

여기서는 fillna 메서드를 사용하여 결측치를 보간합니다. 먼저 bfill(뒤로 채우기) 방법으로 결측치를 채우고, 그래도 남아 있는 결측치는 ffill(앞으로 채우기) 방법으로 처리합니다.

4. 상관 관계 분석 및 회귀선 그리기

이제 나스닥 지수와 코스피 지수 간의 상관 관계를 분석하고, 선형 회귀선을 그리겠습니다.

from scipy import stats
import matplotlib.pylab as plt

# 회귀 분석 수행
regr = stats.linregress(df.X, df.Y)
regr_line = f'Y = {regr.slope:.2f} * X + {regr.intercept:.2f}'

stats.linregress 함수는 두 변수 간의 선형 회귀 분석을 수행합니다. 이 함수는 기울기(slope), 절편(intercept), 상관 계수(rvalue) 등 다양한 결과를 반환합니다. 여기서 regr_line 변수는 회귀선 방정식을 문자열 형태로 저장합니다.

5. 시각화: 산점도와 회귀선 그리기

마지막으로, 나스닥과 코스피 지수 간의 관계를 시각적으로 확인하기 위해 산점도와 회귀선을 그립니다.

# 산점도와 회귀선 그리기
plt.figure(figsize=(7, 7))
plt.plot(df.X, df.Y, '.')
plt.plot(df.X, regr.slope * df.X + regr.intercept, 'r')
plt.legend(['NASDAQ x KOSPI', regr_line])
plt.title(f'NASDAQ x KOSPI (R = {regr.rvalue:.2f})')
plt.xlabel('NASDAQ Industrial Average')
plt.ylabel('KOSPI')
plt.show()

이 코드는 두 지수 간의 산점도와 함께 선형 회귀선을 그립니다.

  • plt.plot(df.X, df.Y, '.')는 나스닥 지수와 코스피 지수 간의 산점도를 그립니다.
  • plt.plot(df.X, regr.slope * df.X + regr.intercept, 'r')는 선형 회귀선을 빨간색으로 그립니다.
  • plt.legend를 통해 산점도와 회귀선을 설명하는 범례를 추가합니다.
  • plt.title에서는 상관 계수 R값을 포함한 제목을 설정합니다.

이 시각화를 통해 두 지수 간의 관계를 직관적으로 이해할 수 있습니다.

6. 전체 코드 및 결과

마지막으로, 앞서 설명한 모든 내용을 하나로 결합한 전체 코드는 다음과 같습니다.

import pandas as pd
import yfinance as yf
from scipy import stats
import matplotlib.pylab as plt

# 나스닥(NASDAQ)과 코스피(KOSPI) 지수 데이터 다운로드
nasdaq = yf.download('^NDX', '2000-01-04')
kospi = yf.download('^KS11', '2000-01-04')

# 데이터프레임 생성 및 결측치 처리
df = pd.DataFrame({'X': nasdaq['Close'], 'Y': kospi['Close']})
df = df.fillna(method='bfill')  # 결측치를 뒤의 값으로 채움
df = df.fillna(method='ffill')  # 결측치를 앞의 값으로 채움

# 회귀 분석 수행
regr = stats.linregress(df.X, df.Y)
regr_line = f'Y = {regr.slope:.2f} * X + {regr.intercept:.2f}'

# 산점도와 회귀선 그리기
plt.figure(figsize=(7, 7))
plt.plot(df.X, df.Y, '.')
plt.plot(df.X, regr.slope * df.X + regr.intercept, 'r')
plt.legend(['NASDAQ x KOSPI', regr_line])
plt.title(f'NASDAQ x KOSPI (R = {regr.rvalue:.2f})')
plt.xlabel('NASDAQ Industrial Average')
plt.ylabel('KOSPI')
plt.show()

 

결론

이번 블로그에서는 Python을 이용해 나스닥(NASDAQ) 지수와 코스피(KOSPI) 지수 간의 상관 관계를 분석하고, 그 결과를 시각화하는 방법을 알아보았습니다. 이를 통해 글로벌 금융 시장에서 두 주요 지수 간의 관계를 보다 명확히 이해할 수 있습니다.

 

이 방법을 통해 다양한 주식 지수나 금융 데이터를 분석해 볼 수 있으며, 이를 바탕으로 더욱 깊이 있는 금융 인사이트를 얻을 수 있을 것입니다. Python과 데이터 분석 도구를 활용하여 자신만의 분석을 시도해보세요!