今日の記事でも書いたんですが、昨日は半導体関連の製造メーカー株が軒並み急騰して日経平均を1,000円以上押し上げてました。それを見ながら「自分が持ってる株って、日経が動くとき、だいたいどれくらい大きく動くんだっけ」とふと気になったんです。感覚的には「けっこう連動してる気がする」くらいの理解しかなくて、ちゃんと数字で説明できないことに気づき、統計の教科書を引っ張り出しました。
以前「相関係数の落とし穴」という記事を書いたんですが、あれは「2つの値動きの方向がどれくらい一致してるか」を教えてくれるだけで、「どれくらいの大きさで動くか」までは教えてくれません。そこで出てくるのが、投資の世界でよく聞く「ベータ値(β)」です。名前は知ってても中身をちゃんと説明できていなかったので、今回は数式から追いかけてみます。
ベータ値とは何か
ベータ値は、市場全体(日経平均やTOPIXなど)が1%動いたときに、個別銘柄が理論上どれくらい動くかを表す指標です。数式で書くとこうなります。
β = Cov(株のリターン, 市場のリターン) ÷ Var(市場のリターン)
分子のCov(共分散)は「株と市場が一緒にどれくらい動くか」、分母のVar(分散)は「市場自体がどれくらいバラついているか」です。共分散を市場の分散で割ることで、「市場の動きを基準(1)としたときの、その株の動きの倍率」が求まる、というイメージです。
βの値をどう読むか
β=1なら市場とまったく同じだけ動く銘柄、β=1.5なら市場が1%動いたときに理論上1.5%動く「ハイベータ」銘柄、β=0.5なら市場の半分しか動かない「ディフェンシブ」銘柄です。半導体製造装置のような景気敏感株はβが1を大きく超えることが多く、逆に電力・ガスのようなインフラ株はβが1未満になりやすいと言われています。
実は「単回帰分析の傾き」と同じもの
βの面白いところは、市場のリターンを横軸(説明変数)、個別株のリターンを縦軸(目的変数)にして単回帰分析(y = a + bx の直線を当てはめる)をすると、その回帰直線の傾きbが、まさにβと一致することです。相関係数は−1〜1に正規化された「方向の一致度」でしたが、βは正規化されていない「傾き」なので、1を超えることも普通にあります。この違いを混同していたのが、今まで僕がモヤモヤしていた原因でした。
import pandas as pd
import yfinance as yf
# 日経平均と個別銘柄の日次リターンを取得
nikkei = yf.download("^N225", period="1y")["Close"].pct_change().dropna()
stock = yf.download("6857.T", period="1y")["Close"].pct_change().dropna() # 例:アドバンテスト
df = pd.concat([stock, nikkei], axis=1, join="inner")
df.columns = ["stock", "market"]
cov = df["stock"].cov(df["market"])
var = df["market"].var()
beta = cov / var
print(f"β = {beta:.2f}")
# 検算:numpyのpolyfit(1次の回帰)でも傾きは一致する
import numpy as np
b, a = np.polyfit(df["market"], df["stock"], 1)
print(f"回帰の傾き = {b:.2f}")
投資への応用:ポートフォリオ全体の「振れ幅」を把握する
個別銘柄のβが分かれば、保有比率で加重平均することでポートフォリオ全体のβも計算できます。全体のβが1.4くらいだと分かっていれば、「日経が3%下がったら自分の資産はざっくり4%くらい下がる覚悟をしておこう」という目安が持てます。感覚ではなく数字でリスクの大きさを把握できるのが、βを知る一番のメリットだと思います。ただしβはあくまで過去のデータから計算した「平均的な傾向」なので、暴落時など市場が荒れる局面では、この関係が崩れて実際の下落率がβの予想以上になることもある点は注意が必要です。
まとめ
実際に自分の保有銘柄で計算してみたら、アドバンテストや東京エレクトロン系の銘柄は軒並みβ1.2〜1.6くらいで、やっぱり「日経が急落する日は覚悟しておいたほうがいい」ハイベータ銘柄ばかりでした。次はポートフォリオ全体の加重平均βを実際に出してみて、日々のリスク管理の数字として使えるようにしていきたいと思います。

