見出し画像

米10年国債とS&P500の関係性 python初心者(Ep27)

こんにちわ。スミラです。
今年もpython関連の記事はかける範囲で書いていきますよ~~!!宜しくお願い致します。
前回は、時系列データの可視化から金融的ショックとの関連性を確認することができましたね。いつもスキ❤️を押していただいている皆さん、本当にありがとうございます!励みになります☆

そして、Twitter との連動も始めた事によって、noteの閲覧数が飛躍的に伸びております。それもじっちゃまがちょうど私が検討した部分について、コメントがあった為、嬉しくなって、コメントした結果、そこからのアクセスの方々多かったように思います。さすが、じっちゃまです。ありがとうございます!少しでもpythonに興味を持つ方が増えることを望みます☆

それでは、本日のテーマは、

株価下落と他の要因との関係性

について調べていきたいと思います。この視点は多岐に分かれる可能性が大ですので、一つずつステップを踏むことができればと思います。宜しくお願い致します。

~~~~~~~~~~~【注意文章】~~~~~~~~~~~

株に手を出すことに伴って、損得の感情が発生してしまいますが、あくまでこれは コードの学習 において記載している内容です。一切の不利益が発生したとしても何も保証できません。また、個人の見解であり、投資を行う場合は、ご自身の判断で行うようお願い致します。
ご理解の上、読んで頂けますと幸いです。 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

米10年国債の傾向

米国株を触ったことがある方は、10年国債の値変動について確認をすることをよく聞くと思います。そもそも米国10年国債とは、

10年後に満期が来て現金化ができる国債

のことを意味します。米国における長期金利(ローンなど)は、この国債の値を参考にされているとのことです。とても分かりやすく説明しているサイトがありましたので、共有致します。(ライターの吉田さん。ありがとうございます!)

では、実際に米国債10年の変動を確認してみましょう。

米国債の傾向グラフ

import matplotlib.pyplot as plt
import yfinance as yf
import numpy as np
import datetime as dt
import pandas as pd
#取得した銘柄をリスト化
symbol_list = '^TNX '
#取得の開始したい日付を設定  YYYY-MM-DD
get_start = '1985-01-01'
#取得の終了日付を設定 YYYY-MM-DD
#本日までのデータの場合
get_end  = dt.datetime.today().strftime('%Y-%m-%d')
#取得のタイミング 1m,2m,5m,15m,30m,60m,90m,1h,1d,5d,1wk,1mo,3mo
get_interval = "1d"

#データの取得
data = yf.download(symbol_list, start=get_start, end=get_end, interval = get_interval)
#グラフのタイトル
plt.title('^TNX from 2016.1.1 to 2021.12.27')
#どの範囲で株が変動したのかを表示
plt.fill_between(data.index, data['Low'], data['High'], color="b" , alpha=0.2)
#基準となるオープン価格を表示
data['Open'].plot()
plt.show()
display(data)
10年国債の変動

昔は、利回りが12とかなっていた時代があったのですね。すごく驚きました。前回の時系列同様に変化率が大きかったポイントを確認してみましょう。

日変動の値の傾向グラフ

#日変動の値
oneday_percent_change = data['Adj Close'].pct_change()
oneday_percent_change.plot.hist(bins=100)
plt.xlabel("Adjusted close 1 day percent change")
plt.show()
国債の変動率の分布

最大の変化率のところでは、なんと49.8%増加のポイントがあった様です。
抽出できたのは、2020年3月10日とのことで、確認すると・・

前日のタイミングに、原油価格の急落 と 新型コロナへの景気や企業業績の減速懸念 の影響が発生した様ですね。今後は、

原油価格の急落 

についても今後、調べていきましょう。(次回記事)

米国債の傾向+フラグ付きグラフ

前回同様に、ある値以上の変化率が発生したポイントを抽出したいと思います。

#日変動の値を追加
data ['oneday_percent_change']=oneday_percent_change
#判定パーセント
judge_percent = 0.05
#条件に該当するデータをlarge_percent_change_flag とする
data['large_percent_change_flag']=data.oneday_percent_change>judge_percent
display(data[data.large_percent_change_flag])
#何個の検出か確認
print("検出点:{}".format(len(data[data.large_percent_change_flag])))
#前処理
#bool型からint型に変更し、True=1,False=0 の状態にする
#差分を抽出するために、前後に余白(0)を加えたデータ状態を構築する
diff_pre = pd.Series([0]+list(data['large_percent_change_flag'].astype(int))+[0])
#差分を計算し、Noneは取り除く
diff_pre2 = diff_pre.diff().dropna()
fig, ax = plt.subplots(figsize=(15, 5))
ax.plot(data['Open'])
#start : ilocで行番号を取得、終了する行を-1にすることで後ろの差分で追加分を考慮し、立ち上がり(0から1になった部分)を検出
#end   : ilocで行番号を取得、開始する行を1にすることで前の差分で追加分を考慮し、立下り(1から0になった部分)を検出
for start , end in zip(data['large_percent_change_flag'].index[diff_pre2.iloc[:-1]==1], 
                        data['large_percent_change_flag'].index[diff_pre2.iloc[1:]==-1]):
    ax.axvspan(start,end,color="red",alpha=0.3)

plt.show()
5%以上の変化率が発生したタイミングの追加

このグラフから私の感じた点としては、

・近年の方がやはり回数が多くなっている(市場が不安定?)
・2020年のコロナタイミングは予誰も測ができていなかったか?(市場が大混乱)

個人的感想

と思いました。これからの変動が益々気になりますね。

米10年国債の傾向とS&P500の傾向

では実際に国債の傾向とS&P500の傾向をプロットしてみました。
一つのパラメータをベースに比較した結果がこちらになります。

米10年国債の傾向とS&P500の関係性

傾向としては、負の相関 がありそうですね。

私の主観的感想

こちらは、上の記事で紹介したサイトに記載がある内容と同様の内容を得ることができたと思います。
※seabornで用いてプロットしただけですので、コードは割愛します。

それでは次回は、

移動平均の抽出

を実施してみたいと思います。宜しくお願い致します。

記事を気に入って頂けましたら、コーヒー代のサポートを頂けると励みになります!

想い

ここから先は

0字

¥ 100

よろしければサポート頂けると幸いです!子供へのパパ時間提供の御礼(お菓子)に活用させて頂きます☆