28 lines
890 B
Python
28 lines
890 B
Python
import yfinance as yf
|
|
import pandas as pd
|
|
import statsmodels.api as sm
|
|
|
|
KOSPI_CODE = '^KS11'
|
|
KIIUM = '039490.KS'
|
|
# KOSPI 코드(^KS11), 전통적인 고베타주인 증권주 중 키움증권(039490.KS)
|
|
tickers = [KOSPI_CODE, KIIUM]
|
|
|
|
all_data = {}
|
|
for ticker in tickers:
|
|
all_data[ticker] = yf.download(ticker, start="2020-01-01", end="2024-12-31")
|
|
|
|
# print(all_data)
|
|
# for tic, data in all_data.items():
|
|
# print(f"{tic}: {type(data)} -> {type(data['Close'])}")
|
|
# print(data['Close'])
|
|
|
|
# 종가(Close)에 해당하는 열만 선택해서 데이터프레임으로 가공
|
|
prices = pd.DataFrame({tic: data['Close'].squeeze() for tic, data in all_data.items()})
|
|
# 수익률 계산(pct_change), NA 데이터 삭제(dropna)
|
|
ret = prices.pct_change().dropna()
|
|
|
|
ret['intercept'] = 1
|
|
reg = sm.OLS(ret[[KIIUM]], ret[[KOSPI_CODE, 'intercept']]).fit()
|
|
|
|
print(reg.summary())
|
|
print(reg.params) |