파이썬에서 균주의 개별 주식 베타 값 (β 값) 계산

0. 소개



이번 주는 기사로 하는 재료가 떠오르지 않았기 때문에 주식 관련 기사.
이번에는 도요타 자동차와 TOPIX의 β값을 파이썬으로 산출하는 방법을 2종류 기재합니다.

1. 베타값은··무엇?



β값이란 주식의 개별 종목이 지수에 얼마나 감응도가 있는지를 조사하는 지표로, 주식시장(지수)이 1% 변화했을 때에 임의의 주식의 리턴이 몇% 변화하는지 를 나타내는 계수.
그것은 즉 「리스크」를 측정하는 지표라고 할 수 있다.

즉, β가 1을 초과하는 주식은 보다 지수에 비해 움직이는 종목이 되므로 리스크가 높아진다.

2. 준비



이번에는 도요타 자동차(7203.T)와 TOPIX의 비교를 실시해 기간은 2020/1/1~2020/12/31까지로 한다.
그리고 이번 주가 취득은 간단하기 때문에 pandas_datareader + stooq

※본 기사는 β값의 산출의 해설이므로, 주가 취득 부분은 해설하지 않는다
※stooq는 지수는 있지만, 아래 도요타를 포함한 주가 데이터가 미묘하게 잘못되었을 수 있으므로주의
import numpy as np
import pandas as pd
import datetime
from pandas_datareader import data as wb
import matplotlib.pyplot as plt
%matplotlib inline
from sklearn import linear_model

#Topixとトヨタをstooqからデータフレームとして取得
start = datetime.date(2020,1,1)
end = datetime.date(2020,12,31)
tickers = ['^TPX','7203.JP'] #TOPIXとトヨタ ※stooq経由でのトヨタの株価は微妙におかしい
data = pd.DataFrame()
for t in tickers:
    #終値だけ取得
    data[t] = wb.DataReader(t, data_source='stooq', start=start, end=end)['Close']

data = data.iloc[::-1] #順番並び替え

data.head(2) #2行表示


Date
^TPX
7203.JP


2020-01-06
1697.49
7435.85

2020-01-07
1725.05
7583.29


3. 로그 이익률 계산



전날 대비 얼마나 상승하고 있습니까? 대수 이익률로 계산
log_returns = np.log(data/data.shift(1)) #shift(1)で1日データシフトさせている
log_returns = log_returns.dropna() #1/6は前日がないのでNaN。よって取り除く
log_returns.head(2) #2行表示


Date
^TPX
7203.JP


2020-01-07
0.016105
0.019634

2020-01-08
-0.013805
-0.012784


4. 산포도를 plot하여 베타값을 산출


#共分散plot
X = log_returns.iloc[:,0] #topix
Y = log_returns.iloc[:,1] #toyota

from sklearn import linear_model
clf = linear_model.LinearRegression() #線形モデル
X2 = [[x] for x in X]
clf.fit(X2, Y) # 予測モデルを作成

print("ベータ値(回帰係数,傾き)= ", clf.coef_)
print("切片= ", clf.intercept_)
print("決定係数= ", clf.score(X2, Y))

# 散布図
plt.scatter(X2, Y)

# 回帰直線
plt.title('Linear regression')
plt.plot(X2, clf.predict(X2))
plt.xlabel(log_returns.columns[0])
plt.ylabel(log_returns.columns[1])
plt.grid()
plt.show()



이제 베타 값을 계산할 수있었습니다. 베타 값은 회귀 직선의 기울기 그 자체이며, 1.09이므로 시장이 1% 오르면 도요타는 1.09% 상승한다는 것이다.

5. 선형 회귀를 사용하지 않는 방법



베타 값은 공분산을 구함으로써 산출할 수 있고, 이쪽이 기술이 짧게 끝난다.
참고 : 공분산이란?
cov_matrix = log_returns.cov() #covは共分散を計算
cov_matrix


Date
^TPX
7203.JP


^TPX
0.000204
0.000223

7203.JP
0.000223
0.000342


공분산(마켓·개별):우상, 좌하
분산(마켓):좌상
"""ベータ値 = 共分散(マーケット・個別)/分散(マーケット)"""
toyota_beta = cov_matrix.iloc[0,1] / cov_matrix.iloc[0,0]
print(toyota_beta)

실행 결과
1.0942257680186884 ※線形回帰の傾きと同じ

6. 끝에



이번에는 베타 값을 파이썬으로 계산했다.
높은 베타 값의 종목은 시장이 상승 기조에 있을 때는 보다 크게 상승하는 반면, 반대로 시장이 하락 기조로 변한다는 리스크도 있다. 따라서 이것을 활용하여 예를 들어 인상 시세는 높은 β, 낮추 시세는 낮은 β로 하는 등하여 유명 상표 선택에 도움을 봐 어떻습니까?

좋은 웹페이지 즐겨찾기