【Python】金利が上がるとグロース株は下がるのか?
我こそは混沌の覇者なり!
馬龍・愚弄衆の戦いに終止符を打つべく、
今こそ包帯(テーパリング)を外し、右手の力を解放するのだ!
くらえっ、テーパータントラム!!
なにっ!跳ね返された!
キンユウ・リテラシーだとっ!
仮想の敵に独り言を言い出したら、そろそろやばいので、中二病は、ほどほどにして、本題に入ろう。
一般的に、金利が上がるとグロース株が下がると言われるし、体感としても妥当性があるように感じている人が多いのではないだろうか?
そんな、金利とグロース株・バリュー株の相関関係について、検証してみようと思う。
検証は、以前作成した「トレンド」を確認する下記のツールを少し改変して使用する。
そして、今回はもう1つ、こちらも以前作成した「相関関係」を調べる下記のツールで定量的に、相関関係を調べてみよう。
検証で使用する株価・金利、パラメータは下記の通り。
使用する株価・金利は下記の通り。
VOOG:グロース株のETF
VOOV:バリュー株のETF
^TNX:10年国債の金利
VOOG - VOOV:グロース - バリュー(変動率の差)
検証で変更するパラメータ
#期間変動率の設定(60営業日:3か月)
df_all=(data.pct_change(60))
相関関係を見るために、この「変動率を出す期間」を変更しながら、2011年から現在までのデータで検証をしてみたいと思う。
下記のコードをコピペしてライブラリをインストール。
pip install yfinance
変動率を取得するソースは、下記の通り。
(プログラム内にコメントを記載したので、説明は割愛。)
# !pip install yfinance
import datetime
import yfinance as yf
import matplotlib.pyplot as plt
import pandas as pd
import japanize_matplotlib #日本語化matplotlib
# sns.set(font="IPAexGothic") #日本語フォント設定
%matplotlib inline
#開始・終了日の設定
start = datetime.date(2011,1,1)
end = datetime.date.today()
#取得対象銘柄の指定
codelist = ["VOOG","VOOV","^TNX"]
data = yf.download(codelist, start=start, end=end)["Adj Close"]
#期間変動率の設定(60営業日:3か月)
df_all=(data.pct_change(60))
#取得データを作業用にコピーして変化率を比較
df_all2 =df_all.copy()
df_all2['グロース - バリュー']=pd.DataFrame(df_all['VOOG']-df_all['VOOV'])
#カラム名を変更
df_all2.rename(columns={'^TNX':'10y 金利(トレンド)',
"VOOV":"バリュー","VOOG":"グロース"},inplace=True)
data.rename(columns={'^TNX':'10y 金利(加工なし)'},inplace=True)
#加工なしデータを結合
df_all2=df_all2.join(data["10y 金利(加工なし)"])
######図の作成パターン1
fig, ax1 = plt.subplots(figsize=(8, 4),facecolor="white")
# ax1とax2を関連させる
ax2 = ax1.twinx()
# 株価と金利のグラフ作成
ax1.plot(df_all2["グロース - バリュー"],color="blue",
label="グロース - バリュー",linewidth=2,alpha=0.5)
ax2.plot(df_all2["10y 金利(加工なし)"],color="red",
label="10y 金利(加工なし)",linewidth=2,alpha=0.5)
# 凡例
handler1, label1 = ax1.get_legend_handles_labels()
handler2, label2 = ax2.get_legend_handles_labels()
# 凡例をまとめて出力
ax1.legend(handler2 + handler1, label2 + label1, loc="upper left", borderaxespad=0.5)
# それぞれの軸の0に横線を引く処理
ax1.axhline(y=0,color='blue',linewidth=2,alpha=0.2 )
ax2.axhline(y=0,color='red',linewidth=2,alpha=0.2 )
# チャートが上下で分かれる様に軸の上限下限調整
ax1.set_ylim(-0.15, 0.60)
ax2.set_ylim(-4, 5)
plt.show()
#####図の作成パターン2
fig, ax1 = plt.subplots(figsize=(8, 4),facecolor="white")
# ax1とax2を関連させる
ax2 = ax1.twinx()
# 株価と金利のグラフ作成
ax1.plot(df_all2["グロース - バリュー"],color="blue", label="グロース - バリュー",linewidth=2,alpha=0.5)
ax2.plot(df_all2["10y 金利(トレンド)"],color="red", label="10y 金利(トレンド)",linewidth=2,alpha=0.5)
# 凡例
handler1, label1 = ax1.get_legend_handles_labels()
handler2, label2 = ax2.get_legend_handles_labels()
# 凡例をまとめて出力
ax1.legend(handler2 + handler1, label2 + label1, loc="upper left", borderaxespad=0.5)
# それぞれの軸の0に横線を引く処理
ax1.axhline(y=0,color='blue',linewidth=2,alpha=0.2 )
ax2.axhline(y=0,color='red',linewidth=2,alpha=0.2 )
ax1.axhline(y=0,color='blue',linewidth=2,alpha=0.2 )
ax2.axhline(y=0,color='red',linewidth=2,alpha=0.2 )
# チャートが上下で分かれる様に軸の上限下限調整
ax1.set_ylim(-0.2, 0.7)
ax2.set_ylim(-2.0, 0.9)
# 利上げ等のイベント(コメントアウト)
# ax1.axvline(x=datetime.date(2013,5,22),color='gray',linewidth=2,alpha=0.9)
# ax1.axvline(x=datetime.date(2013,12,30),color='gray',linewidth=2,alpha=0.9)
# ax1.axvline(x=datetime.date(2014,9,25),color='gray',linewidth=2,alpha=0.9)
# ax1.axvline(x=datetime.date(2015,6,24),color='gray',linewidth=2,alpha=0.9)
# ax1.axvline(x=datetime.date(2015,12,16),color='gray',linewidth=2,alpha=0.9)
# ax1.axvline(x=datetime.date(2016,12,14),color='gray',linewidth=2,alpha=0.9)
# ax1.axvline(x=datetime.date(2017,3,15),color='gray',linewidth=2,alpha=0.9)
# ax1.axvline(x=datetime.date(2017,6,14),color='gray',linewidth=2,alpha=0.9)
# ax1.axvline(x=datetime.date(2017,12,13),color='gray',linewidth=2,alpha=0.9)
plt.show()
# ここまで
そして、相関関係を調べるコードは下記の通り。
import seaborn as sns
corr_mat = df_all2.dropna().corr(method='pearson')
# 配色パターン設定
cmap = sns.color_palette("coolwarm", 100)
# 日本語フォント設定
sns.set(font="IPAexGothic")
# クラスタ化して相関係数を可視化
sns.clustermap(corr_mat, cmap=cmap,figsize=(6,6),
vmin=-1.0,vmax=1.0,center=0,annot=True,
fmt='.1f',
xticklabels=corr_mat.columns.values,
yticklabels=corr_mat.columns.values)
plt.show()
では、実際にプログラムを実行してみよう。
「1日」の変動率を設定すると、下記の様なグラフが取得できる。
上:「10年金利(加工なし)」と「グロース - バリューの変動率」
下:「10年金利の変動率」と「グロース - バリューの変動率」
目で見ても、相関関係が良く分からないので、このデータに対して相関関係を調べるツールを実行すると、下記の結果が出力される。
これを見ると、「1日」の変動率で見た場合、赤の下枠のように、「加工なしの10年金利」と相関関係があるものはないことが分かる。
また、赤の上枠で「10年金利の変動率」をみると、グロース株とバリュー株は金利に対して、正の相関になっている。これだけを見ると、金利が上がっても株価は上がる(逆もしかり)と言っているように見える。
では次に、20日の変動率で相関を見てみよう。
ある程度、トレンドが現れているようにも見えるが、それでも目視で相関関係を確認するのは困難だ。このデータに対して相関関係を調べるツールを実行すると、下記の結果が出力される。
これを見ると、「20日」の変動率で見た場合、赤の下枠のように、「加工なしの10年金利」と相関関係があるものはないが、赤の上枠のように、「10年金利の変動率」をみると、「グロース - バリュー」の相関係数は-0.4となっており、金利に対して、逆相関になっている事がわかる。(バリューは0.5の相関、グロースは0.3の相関)
次に、「60日」の変動率を設定して実施してみよう。
60日の変動率になると、目視でも、ある程度の逆相関がありそうにみえる。加工なしの10年金利(上のグラフ)で見ても逆相関がありそうにも見えるが、10年金利の変動率(下のグラフ)で見た方が、相関関係が分かり易いように見える。
これを相関関係の確認ツールで確認してみよう。
赤の上枠を見ると、加工なしの金利と強い相関関係があるものはない。一方で、赤の下枠をみると、「10年金利の変動率」と「グロース - バリュー」の相関係数は-0.5となっており、金利に対して、逆相関になっている事がわかる。(バリューは0.6の相関、グロースは0.3の相関)
結果
短期では判別できない相関関係があるため、相関関係を調べるときは、ある程度の長さの期間の変動率で評価すると良い。
「10年金利の変動率」と「グロース - バリューの変動率」は逆相関になっている。つまり、10年国債の金利が変動している(上昇・下落)時は、その金利の動きに対して、「グロース - バリュー」の優位性は逆の動きをし易い。
ここで注意すべきは、変動率・トレンドに対しての逆相関という点である。単純に考えると下記のパターンがイメージされるが、
金利上昇中 → バリュー優位
金利下落中 → グロース優位
下記の様な変動率が低下するパターン(金利が横這いするパターン)も逆相関するという事である。
上昇していた金利が横這いで安定(変動率が0へ向けて低下)
→バリュー優位からグロース優位へ移行。
下落していた金利が横這いで安定(変動率が0へ向けて上昇)
→グロース優位からバリュー優位へ移行。
つまり、グロース株に投資をする際は、「金利の高さを意識するよりは、金利上昇トレンドの継続性に注意を払った方が良い。」というところだろうか。
ちなみに、今回の検証結果では、金利上昇トレンドが落ち着くと、バリュー株のグロース株に対する優位性はなくなることを示しているので、「金利が上がると、割引率が大きくなり、理論株価が下がるため、株価が下がりやすく、その影響をPERが高くなっているグロース株が受けやすい。」という話とはマッチしないように思われる。
最後に
最近の状況は、米10年国債の金利が横這いになり、10年国債の金利の変動率は下がってきている。それを受けて、グロース株がすこし反発している状況である。しかし、6月の初旬には、改善が見込まれる雇用統計等が控えており、確かな事は分からないが、金利が上昇する可能性もあるので少し警戒が必要かも知れない。
私見ではあるが、もう少し大局的な事を言うと、金利上昇局面というのは、経済再開銘柄の収益が改善する局面である。今は、資金が割安な経済再開銘柄に流れていて、その結果、バリュー株が買われ、グロース株が売られている状態のように思われる。しかし、その流れが一巡すれば、魅力的な割安な銘柄が無くなり、結局は、強い収益を継続できる銘柄に資金が集まってくると思われる。
個人的には、どこまで、金利が上がるのか、金利・インフレを注視しながら、持続的に良い業績を上げそうな企業を見つけて投資したいと思う。
おまけ
最近、テーパリングだとか、テーパータントラムだとか、金融リテラシーだとか、横文字に胸やけ気味です。今後、そのような言葉を使う人は、個人的に中二病と認定したいと思います。
まぁ、その理屈でいうと、FRBのパウエルさんが危ない立場ではあるのですが・・・
冷静になって考えて見ると、そもそもこんな中二病の導入で記事を書いていたら検索にヒットしないし、検索の流入が全く期待できない。「米国株 中二病」で検索する人なんていないのだ。しかし、疑問なのは、このキーワードで検索しても、上位に私の記事が表示されないのだ。圧倒的に上位を占めてもおかしくないはずなのに、疑問である。
何かの役に立てば幸いです。グッドラック!(中二病かよっ!)
おつかれさん「缶コーヒー一杯ぐらい、ご馳走してあげよう」という太っ腹な方がいれば、よろしくお願いします!
課金しなくても、参考になったら、「ハートボタン」をクリックしたり、「リツイート」してくれると読まれる可能性があがるので嬉しいです。やる気が出ます。よろしくお願いします!
追記(2021/12/30):上記とほぼ同じですが、自分で使うツール用に下記の3点を修正したので、おまけでつけておきます。
1.金利10年 → 金利5年
2.「グロース - バリュー」 → 「バリュー - グロース」
3.グラフの表示範囲を変更。
ここから先は
¥ 100
この記事が気に入ったらチップで応援してみませんか?