datascience/Finanace

yfinance를 활용한 코스피와 S&P500지수 비교

patrck_jjh 2021. 4. 16. 22:44

 

 한국의 대표 주가지수인 KOSPI와 미국의 대표 주가지수인 S&P500 지수 데이터를 불러와서 비교해보자

 

 

 


 

 

yfinance모듈을 활용해서 데이터를 불러오자. 기간은 2011년 4월 18일부터 현재까지 약 10년 동안의 데이터를 불러왔다. 기준은 종가(Close)이다.

 

from pandas_datareader import data as pdr
import yfinance as yf
yf.pdr_override()

sp = pdr.get_data_yahoo('^GSPC', '2011-04-18')
kospi = pdr.get_data_yahoo('^KS11', '2011-04-18')

import pandas as pd
df = pd.DataFrame({'SP500':sp['Close'], 'KOSPI':kospi['Close']})
df.head()

 

 

yahoo finance에서 S&P500를 불러오는 코드는 ^GSPC이고 KOSOI는 ^KS11이다.

각각의 변수를 sp, kospi에 대입하고 pandas 데이터프레임 형태로 만들어 df에 저장한다.

 

 

 

 

 

다음으로 matplotlib을 활용하여 두 지수를 시각화 해보자.

import matplotlib.pyplot as plt
import matplotlib as mpl
import matplotlib.pyplot as plt
import matplotlib.font_manager as fm

#한글폰트 적용
path = 'C:/Windows/Fonts/gulim.ttc'
font_name = fm.FontProperties(fname=path, size=50).get_name()
plt.rc('font', family=font_name)

plt.figure(figsize=(9,5))
plt.plot(sp.index, sp.Close, 'r--', label='S&P500')
plt.plot(kospi.index, kospi.Close, 'b', label='코스피')
plt.grid(True)
plt.legend(loc='best')
plt.show()

 KOSPI의 경우 2017년 까지 횡보하는 모습을 보이다가 2500선까지 증가 후 코로나 영향으로 1500선까지 급감 그리고 주식 열풍에 힘입어 3000대에서 머무르는 모습을 보인다. S&P500지수는 처음부터 꾸준히 상승하다가 코로나 영향을 받은 시기에 급감하고 현재 4000대까지 상승한 모습을 보인다. 두 주가지수는 단기적인 변동성 및 장기적 추세를 고려해봤을 때 비교적 같은 방향으로 움직임을 알 수 있다.  또한 코로나 사태의 영향이 두드러지게 나타난다.

더보기

2018년 및 2019년에 주식이 하락한 이유로 미・중 무역갈등 심화 및 한일 무역 분쟁을 고려해 볼 수 있다.

 

 

 

 한국과 미국의 주식시장 휴장일은 다르므로 결측치의 위치가 다르게 나타난다. 그러므로 fillna명령어를 활용하여 결측치(휴장일 부분)를 모두 제거하거자 한다. bfill로 뒷방향(과거 데이터 방향)으로 한번 채워주고 ffill로 앞방향으로 한번 더 채워준다.(데이터의 마지막 날이 휴장일일 수도 있으므로) 

 

df=df.fillna(method='bfill')
df=df.fillna(method='ffill')
print(df.head())

 

 

 

 

scipy모듈을 활용하여 회귀분석을 시행한 뒤 각 지수의 상관관계를 구해보자

 

# pip install scipy
from scipy import stats
regr = stats.linregress(df['SP500'],df['KOSPI'])

print(regr)
df.corr()

 

 

두 지수의 상관 계수(correlation)는 0.73정도로 나타난다. 상관 계수가 1일 때 완벽하게 같이 움직임을 고려해봤을 때 두 주가 지수는 같은 방향으로 움직이는 경향이 있다고 판단할 수 있다.

 

 

 

 

 각 지수의 scatter plot과 회귀선을 시각화 해보자.

 

plt.figure(figsize=(7,7))

plt.plot(df.SP500, df.KOSPI, '.')
plt.plot(df.SP500, regr.slope * df.SP500 + regr.intercept, 'r')

plt.legend(['S&P500 x KOSPI', regr_line])
plt.title(f'S&P500 x KOSPI (R = {regr.rvalue:.2f})')
plt.xlabel('S&P500')
plt.ylabel('코스피')
plt.show()

 

 

 

 

 

 

■참고자료

-파이썬 증권 데이터 분석(www.hanbit.co.kr/store/books/look.php?p_code=B7026921929)