From 4459164fd6a088fe81a730515e8d3543c85c9839 Mon Sep 17 00:00:00 2001 From: Ayuriel Date: Mon, 10 Mar 2025 17:53:06 +0900 Subject: [PATCH] =?UTF-8?q?feat:=2013-2-1=20=EB=B2=A0=ED=83=80=20=EA=B3=84?= =?UTF-8?q?=EC=82=B0=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- example/13-2-1-calculate-beta.py | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 example/13-2-1-calculate-beta.py diff --git a/example/13-2-1-calculate-beta.py b/example/13-2-1-calculate-beta.py new file mode 100644 index 0000000..2892fbc --- /dev/null +++ b/example/13-2-1-calculate-beta.py @@ -0,0 +1,28 @@ +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) \ No newline at end of file