【コピペで動く!】債券利回り上昇時に株価は落ちるのか?過去の利回り上昇時はどうだったのかGoogle Colabで確認してみた。利回りが上昇すると株価指数は?!

スポンサーリンク
投資

債券利回りが反転上昇の傾向を示しています。その上昇におびえるかのように株価指数は調整の様相ですが、過去の債券利回り上昇時にどのような動きがあったのか、確認してみたいと思います。

2022/03/30追記:現在の米国債券関連のチャートを追加します。

Treasury yield curve flattening/inversion signals/Constant Maturity

VolReturn
VolReturn

米国債10年と2年の利回り差

また、債券についてより基本的なことから知りたいという方には私の記事ではありませんが、以下の記事をご参考にいただければと思います。非常にわかりやすく書かれていると思います。

【債券必須知識】イールドカーブの形状解説と事例|フクロウさん
※当記事は2022年1月14日にMarket Passにて掲載した記事をnoteに投稿したものとなります。 はじめに 「債券は情報がない」 「なんだか小難しい…」 「どういう勉強していいかわからない…」 というご意見をいただきます。興味はあるけど何を頼りにしていいかわからない。そんな方に債券の基礎知識...

追記終了

データの取得

今回のデYahoo! US USのサイトから3種類のデータを取得します。

Treasury Yield 10 Years (^TNX) : アメリカ 10年債券利回り

CBOE Interest Rate 10 Year T No (^TNX) Stock Price, News, Quote & History - Yahoo Finance
Find the latest CBOE Interest Rate 10 Year T No (^TNX) stock quote, history, news and other vital information to help you with your stock trading and investing.

S&P 500 (^GSPC)

S&P 500 (^GSPC) Stock Price, News, Quote & History - Yahoo Finance
Find the latest S&P 500 (^GSPC) stock quote, history, news and other vital information to help you with your stock trading and investing.

NASDAQ Composite (^IXIC)

NASDAQ Composite (^IXIC) Stock Price, News, Quote & History - Yahoo Finance
Find the latest NASDAQ Composite (^IXIC) stock quote, history, news and other vital information to help you with your stock trading and investing.

確認できる範囲では1985年あたりから、データが所得できるようです。それらがどのような値動きをしたのか、過去の債券利回り上昇時にS&P500指数やナスダック指数はどのような値動きをしたのか、確認してみたいと思います。

以前こちらで使用したでデータ取得もとであるセントルイス連銀では株価指数の取得可能期間がS&P500は2012年からと、若干データ数が少ないように感じたいので、今回はYahoo! USのデータソースを利用することにしました。

Pythonによる分析

今回も以前同様使用するツールはGoogle Colaboratoryのpythonを使います。無料で、簡単に行うことができます。Google Colaboratoryについては以前書いた記事をご参照いただければと思います。

実際のコードとやっていること

コードは以下の通りです。

!pip install yfinance --upgrade --no-cache-dir

import datetime
import yfinance as yf
import matplotlib.pyplot as plt
import pandas as pd
pd.options.display.float_format = '{:.4f}'.format

start_D="1985-1-1"
end_D = datetime.date.today()
codelist = ["^IXIC","^GSPC","^TNX"]

data2 = yf.download(codelist, start=start_D, end=end_D)["Adj Close"]
display(data2.head().append(data2.tail()))

display(data2.describe())

fig = plt.figure()
ax1 = fig.add_subplot(111)
ax2 = ax1.twinx()

ax1.plot(data2.index,data2["^IXIC"],label="NASDAQ Composite",color="blue")
ax1.plot(data2.index,data2["^GSPC"],label="SP500",color="orange")
ax2.plot(data2.index,data2["^TNX"],label="Treasury Yield 10 Years",color="red")

h1, l1 = ax1.get_legend_handles_labels()
h2, l2 = ax2.get_legend_handles_labels()
ax1.legend(h1 + h2, l1 + l2,loc='center left', bbox_to_anchor=(1, 0.5), fontsize=18)  
ax3.grid()
plt.show()

データの取得と各列の要約統計量を取得し、まずはそのままの値を右軸に債券利回り、左軸に株価指数のメモリとして、出力します。

まず驚きはS&P500は1985年には165だったものが現在4391と、約26倍になっていることと、ナスダックにいたっては245が14579と約60倍にもなっていることです。

十分、インフレです。それ以上は何も言いますまい。。。
早く始めた方が有利でしたね、、(恐らく今も、有利です。)

アメリカ 10年債券利回りについては12から1.6まで落ちているようです。無リスクの資産運用先としての米国債という物がありますので、運用利回りが下がると、それを補うようにリターンを必要とする資金がいろいろ運用先を求めて動いているという事もあると思います。

データ分析の前処理

今回は株価指数が非常に大きな変化をしています。基本的には10倍以上になっていたりするので、本来は対数処理など、データ分析の前処理をする必要があります。

データの差分や無次元化、株価などであれば対数正規分布への処理など、いろいろありますが、ここは簡便にパーセント処理した状態での解析とします。

興味がある人、さらに言えば、より精密な分析をしたい方はそのあたり、ご自身で行ってみてください。

今回はデータの空白地帯が終わった1992年以降で日次での変化率で分析を行っていきます。

df1=data2["1992-1-1":].pct_change().copy()
display(df1.describe())

fig = plt.figure()
ax3 = fig.add_subplot(111)
ax4 = ax3.twinx()

ax3.plot(df1.index,(1+df1["^IXIC"]).cumprod(),label="NASDAQ Composite",color="blue")
ax3.plot(df1.index,(1+df1["^GSPC"]).cumprod(),label="SP500",color="orange")
ax4.plot(df1.index,(1+df1["^TNX"]).cumprod(),label="Treasury Yield 10 Years",color="red")


h1, l1 = ax3.get_legend_handles_labels()
h2, l2 = ax4.get_legend_handles_labels()
ax3.legend(h1 + h2, l1 + l2,loc='center left', bbox_to_anchor=(1, 0.5), fontsize=18)  
ax3.grid()
plt.show()

ここでは累積積を算出して実際の価格推移に変更します。累積積とは1番目の要素 * 2番目の要素 * 三番目の要素 * … と和が累積されていく計算のことです。

同じ形のチャートになっていることが見て取れると思います。

クロスプロット

横軸X軸を債券利回りの日次の変化率、縦軸Y軸を株価指数の変化率としてクロスプロットを行います。

import seaborn as sns
sns.set_style('whitegrid')
import warnings
warnings.filterwarnings('ignore')

sns.jointplot('^TNX',"^IXIC",df1,kind='reg')
sns.jointplot('^TNX',"^GSPC",df1,kind='reg')

!?この結果は、”利回りが上昇すると株価指数は上昇する”という結果でしょうか。

たしか、利回りが上昇するので、株価指数の下落に気を付けないといけない、、、というのが最近の動向だったはずで、この結果は全く逆なのですが、良かったのでしょうか?

なにかコードにミスをしているかもしれないので、元のデータに戻って確認してみます。

データチェック

利回りの上昇している区間を二つ指定します。
(1998-9-1から2000-1-1)と(2016-7-1から2018-11-1)

その区間の指数の値動きを見てみます。

Zone1_start = datetime.datetime(2016,7,1)
Zone1_end = datetime.datetime(2018,11,1)

Zone2_start = datetime.datetime(1998,9,1)
Zone2_end = datetime.datetime(2000,1,1)

fig = plt.figure()
ax5 = fig.add_subplot(111)
ax6 = ax5.twinx()

ax5.plot(df1.index,(1+df1["^IXIC"]).cumprod(),label="NASDAQ Composite",color="blue")
ax5.plot(df1.index,(1+df1["^GSPC"]).cumprod(),label="SP500",color="orange")
ax6.plot(df1.index,(1+df1["^TNX"]).cumprod(),label="Treasury Yield 10 Years",color="red")

h1, l1 = ax5.get_legend_handles_labels()
h2, l2 = ax6.get_legend_handles_labels()
ax5.legend(h1 + h2, l1 + l2,loc='center left', bbox_to_anchor=(1, 0.5), fontsize=18)  

ax5.axvspan(Zone1_start,Zone1_end, color = "gray", alpha=0.3)
ax5.axvspan(Zone2_start,Zone2_end, color = "gray", alpha=0.3)

ax6.grid()
plt.show()

確かに利回りが上昇している間、株価指数とくにハイテクが強く上がっているように見えます。

経済理論的には?

経済理論的なものはどうでしょうか?

大和証券:株はインフレに強いが、デフレに弱い

Not Found(404) | 大和証券

企業の売上=数量×単価ですから、インフレの時は、単価が上昇するため利益が大きく増加します

という記事もあれば、

SMBC日興証券:金利が上がると株価はどう動く?

金利や為替と株価の関係 | SMBC日興証券
金利や為替と株価の関係のページです。SMBC日興証券では、投資の基礎を学びたい方から上級者の方まで、資産運用に役立つ情報をご提供いたします。私たちは、「いっしょに、明日のこと。」をブランドスローガンに、チャレンジするすべての人々を応援する三井住友フィナンシャルグループの証券会社です。

継続的に景気が良くなり、金利が上昇する環境下では、(中略)金利上昇と株価上昇が起こります。
反対に、金利上昇が悪い影響を及ぼす場合があります。これは金利が上昇することにより、企業は借入れコストが上昇する為、設備投資の縮小を行います。また、個人消費でも住宅ローン金利が上昇することから、住宅購入を見送ることも考えられ、企業業績低迷への不安が高まり株価は下落する傾向があります。

いったい、どっちでしょうか??

auカブコム証券:逆相関の関係

米国債利回りと日経平均のトレンドを再確認/チャートで読み解く相場分析! | 株のことならネット証券会社【auカブコム】
米国債利回りと日経平均のトレンドを再確認/チャートで読み解く相場分析!のページです。「株」や投資信託を始めたい初心者の方に最適なネット証券会社なら、安心のMUFGグループの「auカブコム証券」へ。

株式市場と国債市場の関係はシーソーの関係になります。つまり、逆相関の関係ということです。

相関的には順にも逆にもなりそうというあたりさわりのない答えになりそうです。

企業業績に悪影響を与えない程度の金利上昇であれば、株価指数は上がる可能性はあるし、特に会社内に固定資産を持ってないようなハイテク企業については価格の値上げ交渉力があれば、そのまま利益の増加という果実を受け取れるという可能性がありそうです。

先行きの見える水晶玉を持っているわけではないので、あまり断定的なことは言えませんが、
利回り上昇=株価下落
と思考停止的に考える必要はないのではないでしょうか。

ディスクレーマー

投資に関する免責事項情報の提供・作業代行を目的としており、投資勧誘を目的とするものではありません。

---

関連記事を紹介します。

【コピペで動く!】日本株、米国株で個別銘柄ベータ値(β値)を簡単に調べる方法 Python 米国株 Webサービス&コード 【Google Colabで違いをみつけろ!】
【コピペで動く!】Pythonで1.5GBのcsvファイル読み込み高速化:1分5秒⇒4秒程度 DASK , pickle (Pythonコードあり)
【コピペで動く!】Google ColabでPython を用いての 効率的フロンティア と ポートフォリオの最適化 Efficient Frontier & Portfolio Optimization with Python [Part 2/2]
【コピペで動く!】20行で資産運用モデル作成 Google ColabのPythonで 米国株の株価を取得し、グラフ・チャートを表示
【解決】スクレイピングでHTTP Error 403: Forbiddenでアクセスできないときに試すべき方法【コピペで動く!】【Google Colab:Python:pd.read_html,selenium】
米国債のゼロクーポン債STRIPSについてのメモ
過去50年間のS&P500の季節性の値動きから負けにくいポジション構築はできるのか考える・大統領選挙のアノマリー対応!【コピペで動く!】Google ColabのPythonで自分で調べてみよう!
曜日による米国株指数(S&P500)のパフォーマンスに違いはあるのか?有利なポジション取りはできるのか?【Google ColabのPython:コピペで動く!】Twitterで出てくる知見は本当か自分で調べてみよう。
自動化・効率化でなにができるのか!Google FinanceやYahoo Financeからデータ取得して年初来パフォーマンスや週次騰落率のファクターチェック
自動化・効率化できます!金融向けGoogle スプレッドシートのすぐ使える簡単な使い方4選!(Google Finance,セントルイス連銀,アメリカ合衆国財務省,スクレイピング)【コピペで動く!】
ボラティリティ クラスタリング(Volatility Clustering)について:Google ColabのPythonでの相場環境分析
【コピペで動く!】IB証券(インタラクティブ・ブローカーズ証券 )へのPythonでのAPI接続 ib_insync [自分が使っているPythonコード]
【コピペで動く!】レイ・ダリオ推奨「オール・ウェザー戦略」をETFで構築するには? ETFの手軽さとそのパフォーマンスの高さとは!【違いをみつけろ!】
【違いをみつけろ!】StockChartsの使い方を紹介します!12枚のミニチャート表示や、 米国株配当分考慮パフォーマンスや配当・逆イールド・相対比較が可能です!
株価時系列データを分析する上で正規化を行う事の重要性について紹介する【違いをみつけろ!】
IB証券(インタラクティブ・ブローカーズ証券)に マイクロ E-mini 先物が登場 その驚きの手数料の安さ と 建玉に必要とされる証拠金は?
TradingViewを使ってポートフォリオ運用(複数銘柄運用) 米国株 2019/10/01に10万ドル(約1000万円)投資していたらどうなった?TradingViewのミニチャートウィジェットで簡単確認!
【コピペで動く!】20行で資産運用モデル作成 長期、中期、短期の3区分の期間チャートをGoogle ColabのPythonで作成 【違いをみつけろ!】
あなたの持っている銘柄の高値からの下落率を把握していますか?人気のETF銘柄で過去の下落幅・ドローダウンをGoogle ColabのPythonウェブアプリで分析・可視化・表示!【コピペで動く!】
2024年M&A関係 SynopsysがAnsys買収を計画
TradingViewを使ってポートフォリオ運用(複数銘柄運用・配当込み) 日本株 2019年末に約1000万円投資していたらどうなった?【コピペで動く!】Google ColabのPythonで自分で調べてみよう!
【コピペで動く!】VIXと米国株指数の関係 コロナ前・コロナ後 Google ColabのPythonコードあり【違いをみつけろ!】
IB証券(インタラクティブ・ブローカーズ証券)のAPIを利用してVIXオプションの各限月の特定の権利行使価格で、CALL,PUTで日足ベース引け値のヒストリカルデータ出力するJupyter notebookファイルの提供やメンテナンス・補修サービス、Windows10での環境構築をさせていただきました。
IB証券(インタラクティブ・ブローカーズ証券) TWSへの銘柄の読み込み方法教えます
IB証券(インタラクティブ・ブローカーズ証券)のAPIを利用して個別株、ETF、先物のヒストリカルデータの出力できるJupyter notebookファイルの提供
Webスクレイピングについて、ヘッダーがピボットテーブルのようになっている場合の扱いについて【Google Colab:Python:pd.read_html】
pyfolioで米国株ETFの分析をWebアプリでできるようにしてみた!月ごとのリターンの分布やドローダウンの時期・深さなど可視化できます!
【コピペで動く!】セルインメイ(SELL IN MAY)数十年分をウェブサービスstockchartsとGoogle ColabのPythonとで確認・解析 (Pythonコードあり)Twitterで出てくる知見は本当か自分で調べてみよう
で、次の四半期はどれがいいんだ?ファクター、スタイル、サイズなどの視点でバンガードのETF(配当分込み)を使って3年分調べてみました【ETFreplay.com】【違いをみつけろ!】
IB証券でのオプション売り、ショートストラングルの実際(GLDでの例)”プットを売って、原資産が下がる”とどうなるか?!
ビジネスパーソンこそGoogle ColabでPython!インサイドセールスでのセールスファネルや財務諸表分析(PL/BS:ウォーターフォールチャート)、構成比率チャートのデータ分析可視化【コピペで動く!】
米国株のティッカー(Symbol)のスクレイピングによる取得、APIによるヒストリカルデータやファンダメンタルズデータ取得について【コピペで動く!】Python,Quandl,無料枠あり
SBIのNISA週間買付金額ランキングを自動更新する
Capula(キャプラ) Investment Management浅井将雄氏の2023/09/08時点でのインタビュー
プログラム環境構築初心者用におすすめ!Windows10にPython3.9.2をインストールしてIB証券のTWS経由でAPI接続してみた!
【コピペで動く!】株式投資での時間帯における投資行動の違いは大きい Twitterで出てくる知見は本当か自分で調べてみよう。【Google Colabで違いをみつけろ!】
2024年上半期、あのアセットクラスが爆上げ!ETFパフォーマンス可視化で徹底分析
一ヶ月後に見直してみましょう!ネタ【2024年1月】
一ヶ月後に見直してみましょう!ネタ【2023年9月】
一ヶ月後に見直してみましょう!ネタ【2023年12月】
ダウの犬戦略騰落率ダッシュボード!米国株の利回り配当生活好きな人、配当月を意識してますか?【違いをみつけろ!】
【コピペで動く!】株価の分布、銘柄の比較など、Pythonの数理統計関数(標準偏差、中央値など)による分析 【Google Colabで違いをみつけろ!】
KRE - SPDR S&P地方銀行ETF 投資信託(ファンド)情報の分析
米国株式に変調の兆し?資金に安全な避難場所はあるのか? 【コピペで動く!】米国株式と債券、ゴールドの相関をGoogle ColabのPythonで確認
「1月の相場が高ければ、その年の相場は高くなる」は本当か?Google ColabのPythonで自分で調べてみよう!(Python コードあり)【コピペで動く!】Twitterで出てくる知見は本当か自分で調べてみようシリーズ
S&P500年初からだと-17%なのにFOMCの利上げの3日だけ保有していたら+7%!これって本当?!【コピペで動く!】Google ColabのPythonで自分で調べてみよう!
日本株の個別株のアノマリーを調べてみよう!ビール会社の株は何月が一番上がりやすの?PythonのWebアプリStreamlitで調べてみよう!
【違いをみつけろ!】Googleトレンドで株式市場のセンチメント調査 ”VIX”で先行きは予想できるのか?! 
株価のトレンド判定!様々な資産クラス18種類のETF銘柄を特定の調査期間でのトレンドをウェブアプリで分析・可視化・表示します。あの銘柄は買いに転換した?!売りで仕掛けられる?!
【コピペで動く!】人間の極端なセンチメントを利用して日経平均の週次でのトレードは可能なのか?(Google Colab,順張り・逆張り)【2021/12月の結果を追記】

コメント

タイトルとURLをコピーしました