노벨경제학상을 수상한 해리 마코위츠(Harry Markowitz) 박사가 체계화한 현대 포트폴리오 이론(Modern Portfolio Theory, MPT)이 있습니다.
투자에 대한 수익과 위험은 평균과 분산으로 나타낼 수 있으며, 상관관계가 낮은 자산을 대상으로 분산 투자하면 위험을 감소시킬 수 있다는 이론입니다.
이 이론을 바탕으로 주식, ETF, 채권 간 상관관계를 분석할 수 있는 툴을 파이썬으로 만들어 보도록 하겠습니다.
데이터프레임을 만들기 위해 pandas를 import 하고, pandas_datareader와 yfinance 를 이용하여 주식정보(종가)를 가져오도록 하겠습니다.
주식(ETF) 간 상관관계를 확인하기 위해서는 scipy 모듈을 사용하며, 이를 그래프로 나타내기 위해 matplotlib을 가져왔습니다.
야후파이낸스에서 2000년 1월 4일을 시작으로 해서 관련 데이터를 가져오겠습니다.
다우존스지수의 티커는 '^DJI"이며, 우리나라 KOSPI 지수는 '^KS11'롤 표현합니다.
다우존스지수와 코스피지수의 종가를 데이터프레임 형태로 가져옵니다.
데이터가 빈 곳은 뒤의 데이터나 앞의 데이터로 채웁니다.
상관관계의 1차 그래프의 직선을 만들기 위해서 'stats.linregress'를 사용했습니다.
matplotlib를 이용해서 그래프를 그립니다.
아래는 전체 코드입니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
import pandas as pd
from pandas_datareader import data as pdr
import yfinance as yf
yf.pdr_override()
from scipy import stats
import matplotlib.pylab as plt
dow = pdr.get_data_yahoo('^DJI','2000-01-04')
kospi = pdr.get_data_yahoo('^KS11','2000-01-04')
df = pd.DataFrame({'X':dow['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(['DOW X KOSPI', regr_line])
plt.title(f'DOW X KOSPI (R = {regr.rvalue:.2f})')
plt.xlabel('Dow Jones Industrial Average')
plt.ylabel('KOSPI')
plt.show()
|
cs |
728x90
'파이썬(Python) > 파이썬으로 투자실험' 카테고리의 다른 글
파이썬으로 변동성 돌파 백테스트 (1) | 2024.01.29 |
---|---|
원-달러 환율과 KOSPI 지수 상관관계 분석 (11) | 2023.02.06 |
KOSPI 와 환율 비교(With python) (0) | 2022.11.09 |
미국 장단기 금리차와 KOSPI 지수 비교 (With Python) (0) | 2022.11.06 |
파이썬을 이용해서 주식/ETF의 누적 수익률 비교하기 (0) | 2021.01.05 |
댓글