앞서 공부한 내용을 바탕으로
yfinance를 통해 미국국채의 Data와 코스피 Data를 추출하여 코스피 기대치 함수를 선형회귀분석을 통해 구하고, 각 그래프를 맷플롯립을 통해 구현.
import pandas as pd
import yfinance as yf
from scipy import stats
import matplotlib.pylab as plt
from pandas_datareader import data as pdr
yf.pdr_override()
kospi = pdr.get_data_yahoo('^KS11', '2000-01-04') #코스피 지수 추출
tlt = pdr.get_data_yahoo('TLT', '2002-07-30') #미국국채 데이터 추출
df = pd.DataFrame({'X': tlt['Close'], 'Y': kospi['Close']}) #각 종목의 종가를 DataFrame으로 형성
df = df.fillna(method='ffill') #NaN의 값을 ffill 과 bfill값으로 대체
df = df.fillna(method='bfill')
model = stats.linregress(df.X, df.Y) #선형회귀모델 객체 생성
model_line = f'Y={model.slope:.2f}*X + {model.intercept:.2f}' #fstring 사용해서 중괄호안에 수식 대입하기. Y 기대치 수식
plt.figure(figsize=(7,7)) #그래프 크기 지정
plt.plot(df.X, df.Y, 'x') #메인 그래프 설정 x축은 tlt, y축은 코스피, 점대신 x자 모양으로 나타내기
plt.plot(df.X, model.slope*df.X+model.intercept, 'r') #x축은 tlt, 빨간색 선으로 기대치 수식 그래프화
plt.legend(['TLT X KOSPI', model_line]) #범례를 다음과 같이 설정
plt.title(f'TLT X KOSPI (R={model.rvalue:.2f})') #f string 사용해서 중괄호안에 수식 대입하기. 그래프의 타이틀
plt.xlabel('iShares Barclays 20+ YrTreas.Bond(TLT)') #그래프의 x축 설명
plt.ylabel('KOSPI') #그래프의 y축 설명
plt.show()
그래프 제3사분면의 끝 쪽에 긴 줄 모양이 관측되는데 이는 무엇때문에 생긴 것인지 의문...
'Electronic Engineering > Python data analysis' 카테고리의 다른 글
Python Data 분석 : yfinance와 네이버금융 데이터로 시세조회하기(실패) (0) | 2022.07.19 |
---|---|
Python Data 분석 : 웹 스크레이핑 (0) | 2022.07.14 |
Python Data 분석 : 상관계수에 따른 리스크 완화 (0) | 2022.07.06 |
Python Data 분석 : 선형 회귀분석과 상관관계 (0) | 2022.07.06 |
Python Data 분석 : Kospi MDD (0) | 2022.07.06 |