728x90
반응형
코스피, 달러, 단기채권, 3년물 채권, 10년물 채권 간의 상관관계 분석을 위한 코드입니다.
import pandas_datareader as web
import datetime
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
필요한 라이브러리는 위와 같습니다.
today = datetime.date.today()
kospi_data = web.get_data_yahoo('226490.KS', '2017-01-01', today)
dollar_data = web.get_data_yahoo('261240.KS', '2017-01-01', today)
bond_short = web.get_data_yahoo('214980.KS', '2017-01-01', today)
bond_3 = web.get_data_yahoo('114260.KS', '2017-01-01', today)
bond_10 = web.get_data_yahoo('148070.KS', '2017-01-01', today)
코스피 데이터는 KODEX 코스피 ETF를, 달러 데이터는 KODEX 미국달러선물 ETF를, 단기채권 데이터는 KODEX 단기채권PLUS ETF를, 3년물 채권 데이터는 KODEX 국고채3년 ETF를, 10년물 채권은 데이터는 KOSEF 국고채10년 ETF를 사용합니다.
df = pd.DataFrame({'kospi' : kospi_data['Adj Close'],
'dollar' : dollar_data['Adj Close'],
'bonds' : bond_short['Adj Close'],
'bond3' : bond_3['Adj Close'],
'bond10' : bond_10['Adj Close']
})
각각의 데이터의 수정종가를 한 데이터로 합칩니다.
In[4]: df_corr = df.corr(method = 'pearson')
Out[4]:
kospi dollar bonds bond3 bond10
kospi 1.000000 -0.240366 0.537510 0.333779 -0.253312
dollar -0.240366 1.000000 0.533794 0.733017 0.835703
bonds 0.537510 0.533794 1.000000 0.893493 0.525552
bond3 0.333779 0.733017 0.893493 1.000000 0.760014
bond10 -0.253312 0.835703 0.525552 0.760014 1.000000
df.corr() 함수를 통해 각 데이터의 간의 상관계수를 도출하며, 이때 상관계수는 피어슨 상관계수입니다.
sns.heatmap(df_corr,
cmap = 'Greys', # Greys 색상으로 표시
annot = True, # 상관계수 값을 표시한다
linewidths=.5, # 경계면 구분하기
fmt = '.2f', # 상관계수의 소수점 자리수 2자리로 지정
cbar_kws={"shrink": .5},# 컬러바 크기 절반으로 줄이기
square = True, # True로 설정 시 정사각형, False 설정 시 직사각형으로 설정
vmin = -1,vmax = 1 # 컬러바 범위 -1 ~ 1
)
plt.show()
데이터 간 상관관계를 heatmap으로 시각화합니다. cmap은 heatmap의 색상, annot은 상관계수 값 표시, linewidtfs는 경계선 표시, fmt는 소수점 자리수 설정, cbar_kws는 컬러바 크기 설정, square는 사각형의 모양을 설정합니다. 위를 실행하면 아래와 같은 heatmap이 나옵니다.
<전체 코드>
import pandas_datareader as web
import datetime
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
today = datetime.date.today()
kospi_data = web.get_data_yahoo('226490.KS', '2017-01-01', today)
dollar_data = web.get_data_yahoo('261240.KS', '2017-01-01', today)
bond_short = web.get_data_yahoo('214980.KS', '2017-01-01', today)
bond_3 = web.get_data_yahoo('114260.KS', '2017-01-01', today)
bond_10 = web.get_data_yahoo('148070.KS', '2017-01-01', today)
df = pd.DataFrame({'kospi' : kospi_data['Adj Close'],
'dollar' : dollar_data['Adj Close'],
'bonds' : bond_short['Adj Close'],
'bond3' : bond_3['Adj Close'],
'bond10' : bond_10['Adj Close']
})
df_corr = df.corr(method = 'pearson')
sns.heatmap(df_corr,
cmap = 'Greys',
annot = True,
linewidths=.5,
fmt = '.2f',
cbar_kws={"shrink": .5},
square = True,
vmin = -1,vmax = 1
)
plt.show()
seaborn.heatmap에 사용할 수 있는 색상은 아래와 같습니다.
728x90
반응형
'코딩 갤러리 > 데이터분석' 카테고리의 다른 글
[파이썬] MACD 매매기법 백테스팅하고 그래프로 만들기 (0) | 2022.03.20 |
---|---|
[파이썬] 캔들 스틱 차트(Candlestick Chart) 그리기 (0) | 2021.09.17 |
[파이썬] 20일 이평선을 돌파한 주식종목 찾기 (2) | 2021.09.17 |
[파이썬] 코스피와 코스닥 종목코드 가져오기 (0) | 2021.09.17 |
손실을 줄이는 자산 배분을 위한 상관분석(주식, 달러, 채권) (0) | 2021.09.13 |