matplotlib Pandas

【後編】米金利の低下が米国のグロース銘柄へ与える影響を分析-Pythonコードの解説

目安:この記事は3分で読めます

 

過去2回の記事では、アメリカの長期金利がグロース株へ与える影響について、相関分析で考えてみました。

未読の方は、以下のリンク先へ。

前編
【前編】急速に低下する米金利!米国グロース銘柄へのインパクトをPythonで分析してみよう!

目安:この記事は3分で読めます   アメリカの長期金利(以下では米金利)が急速に低下しています。 下のチャートをみると、レンジの下限として意識されてきた1.5%の水準を完全に割り込んでいます ...

続きを見る

中編
【中編】米金利の低下が米国のグロース銘柄へ与える影響を分析-Pythonコードの紹介

目安:この記事は3分で読めます   前回は、低下基調の米金利がグロース株へ与える影響について、相関分析を用いて分析してみました。 未読の方は、以下のリンク先でご覧ください。   中 ...

続きを見る

 

最終回の後編は、Pythonコードの解説となります。

ぜひ、最後までご覧ください!

 

後編のテーマ

Pythonコードの解説 基本を理解したら自分でコードを書いて見よう!


▼ Pythonを効率的に学ぶなら ▼

Pythonを学ぼう

 

▼ Udemyおすすめの講座 ▼
現役シリコンバレーエンジニアが教えるPython 3 入門 + 応用 +アメリカのシリコンバレー流コードスタイル

ゼロから始めるデータ分析】 ビジネスケースで学ぶPythonデータサイエンス入門


 

この記事の対象となる人

こんな人におすすめ

  • Pythonに興味がある人
  • Pythonを学びたいと思っている人
  • Pythonを使って株価の分析をしたい人

この記事でわかること

わかること

  • Pythonで価格チャートを描画したり相関マトリクスを作成するコードの書き方

 

コードの解説:チャートの描画

 

まずは、チャート画像を描画するためのコードからです。

コードの一覧

#必要なライブラリのインポート
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
import yfinance
import datetime


#最後のデータ取得日を設定
end = datetime.date.today()


#価格データの取得
nasdaq = yfinance.download(tickers='^IXIC',
                           start='2021-04-01',end=end,
                           auto_adjust=True,
               interval='1d')
                           
                           
us10yt = yfinance.download(tickers='^TNX',
                           start='2021-04-01',end=end,
                           auto_adjust=True, 
               interval='1d')
          


#価格データの統合
df = pd.concat([nasdaq.Close,us10yt.Close],axis=1)


#カラムの設定
df.columns = ('Nasdaq','US10YT')


#チャートの描画
fig = plt.figure(figsize=(15,10))

ax1 = fig.add_subplot(111)
ax1.plot(df['Nasdaq'],color='black', lw=3)
ax1.set_ylabel('Nasdaq',fontsize=20)

ax2 = ax1.twinx()
ax2.plot(df['US10YT'],color='green', lw=3)
ax2.set_ylabel('US10YT',fontsize=20)
plt.grid()

 

コードの解説

▶2行目:import pandas as pd
もはやおなじみのPython版エクセルのPandasをインポート

 

▶3~4行目:import matplotlib.pyplot as plt
Pythonのチャート描画ライブラリであるmatplotlibをインポート
『%matplotlib inline』と書くことで、Jupyter Notebook(Lab)上にチャートを描画できます

 

▶5行目:import yfinance
Yahoo!Finance USから価格データを取得するためのライブラリ

 

▶6行目:import datetime
Pythonで日付や日時を設定するライブラリ
今回は、データを取得した日を最終日に設定するために使います

 

▶10行目:end = datetime.date.today()
データを取得した日を最終日に設定するためのコード
『datetime.date.today()』は定型文と考えてください
今回はendという変数に入れました

 

▶14行目以降:yfinance.download()
これがYahoo!Finance USから価格データを取得するコードです
上のコードは定型文です
カッコの中の引数で詳細の設定をします

yfinance.downloadの引数

・start:データを取得する最初の日を設定します
・end:データを取得する最後の日を設定します
・auto_adjust:ここを『True』とすると調整済みの終値が取得できます
・interval:ここで日足や週足といった時間軸を設定します

 

▶28行目: pd.concat( [ ] )
concatを使って、ナスダック指数とアメリカ10年債利回りのデータを統合します
『axis=1』とすることで、横にデータをつなげることができます
ちなみに『axis=0』とすると、データは縦につながります

 

▶32行目: df.columns = ( )
変数名.columns とすることでカラムの名前を設定できます

 

▶36行目: plt.figure()
チャートの枠を設定するコードです
『figsize=(15,10)』で横:縦のチャートサイズを設定できます
今回は横が15、縦が10のチャートサイズで設定しました
最後にfigという変数で設定します

 

▶38行目: plt.fifig.add_subplot()
ひとつめの価格チャートを設定するためのコードです
ax1という変数で設定しています

 

▶39行目:ax1.plot()
ax1変数に.plotとすることで、ひとつめの価格がラインチャートで描画できます
カッコの中は(表示したいデータ:df['Nasdaq']、色:color、ラインの幅:lw)で設定しています

 

▶40行目:ax1.set_ylabel()
set_ylabelが示すとおり、Y軸(縦軸)のラベル名を設定するコードです
39行目でナスダック指数を設定しています
よって『Nasdaq』としました
fontsizeで文字の大きさを指定できます

 

42行目:ax2 = ax1.twinx() ★重要コード!!
ここで、2つ目のY軸を設定します
『変数名.twinx()』とすることで、右側にもうひとつのY軸を設定することができます
こうすることで、ケタの違う価格データを一緒に表示をしてもチャートが崩れることはありません

 

▶43行~44行目:39行~40行目とおなじ

 

▶45行目:plt.grid()
チャート上にグリッドラインを描画するコードです

 

結果

上のコードを実行すると、以下のチャートが描画されます。

Pythonチャート

 

コードの解説:相関マトリクスの作成

次に、相関マトリクスを作成するコードです。

コードの一覧

#必要なライブラリのインポート
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
import yfinance
import datetime

#価格データを取得する期間を設定
from_may = '2021-05-13'
end = datetime.date.today()

#取得する価格のティッカーコードを設定
ticker_list = ['CRWD', 'ZS', 'NCNO', 'ZI', 'U', 'AVLR', ]
us_yield = '^TNX'


#Yahoo!financeから価格データを取得
stock1 = yfinance.download(tickers=ticker_list[0],
                           start=from_may,end=end,
                           auto_adjust=True,
                           interval='1d')
stock2 = yfinance.download(tickers=ticker_list[1],
                           start=from_may,end=end,
                           auto_adjust=True,
                           interval='1d')
stock3 = yfinance.download(tickers=ticker_list[2],
                           start=from_may,end=end,
                           auto_adjust=True,
                           interval='1d')
stock4 = yfinance.download(tickers=ticker_list[3],
                           start=from_may,end=end,
                           auto_adjust=True,
                           interval='1d')
stock5 = yfinance.download(tickers=ticker_list[4],
                           start=from_may,end=end,
                           auto_adjust=True,
                           interval='1d')
stock6 = yfinance.download(tickers=ticker_list[5],
                           start=from_may,end=end,
                           auto_adjust=True,
                           interval='1d')

us_yield = yfinance.download(tickers=us_yield,
                             start=from_may,end=end,
                             auto_adjust=True,
                             treads=True,
                             interval='1d')


#価格データの統合
data = pd.concat([stock1.Close, stock2.Close, 
                  stock3.Close, stock4.Close, 
                  stock5.Close, stock6.Close, 
                 us_yield.Close], axis = 1)


#データカラムの設定(今回はティッカーコード)
data.columns = ('CRWD', 'ZS', 
                'NCNO', 'ZI', 
                'U', 'AVLR', 
                'US10YT')

#相関係数の計算
data.corr()


#米金利をベースに相関係数を並び替え
data.corr().sort_values(by='US10YT')

今回は、ひとつひとつ価格のデータを取得するスタイルにしましたが、関数(def)や繰り返し文(for)を使えば、コードを簡略することができます。

 

コードの解説

▶2行~7行目:上で説明済み

 

▶10行目:from_may = '2021-05-13'
あらかじめデータを取得する最初の日を設定するコード

 

▶11行目:上で説明済み

 

▶14行目:ticker_list = [ ]
あらかじめグロース銘柄のティッカーコードをリスト形式で設定するコード

 

▶15行目:us_yield = '^TNX'
アメリカ10年債利回りを変数『us_yield 』に設定するコード

 

▶19行目以降:価格データを取得するコード(上で説明済み)
ticker_list[番号]がポイント

リストの番号に合わせて変えることで、グロース銘柄の価格データをひとつひとつ取得できます
ちなみにリストの番号はゼロからはじまります★ここ重要!!
なので、ticker_list[0]がクラウドストライク(CRWD)、ticker_list[5]がアバララ(AVLR)となります

 

▶52行目以降:pd.concat( [ ] )
concatをつかって、グロース銘柄とアメリカ10年債利回りのデータを統合します

 

▶59行目以降:data.columns
変数名.columns とすることで統合したデータのカラム名を設定できます

 

▶65行目:data.corr() ★ここ重要!!
変数.corr()とすることで簡単に相関係数がマトリクス形式で計算されます

 

▶69行目:sort_values(by='US10YT')
『sort_values(by=' ')』であるカラムの値を軸に、昇順や降順で並び替えができます
今回はアメリカ10年債利回り(US10YT)を軸に降順で設定しました

 

結果

上のコードを実行すると、以下の結果が得られます。

相関マトリクス

 


次は『騰落率ベース』の相関マトリクスを作成するコードです。

上のコード一覧との違いは、騰落率を計算するコードを書くことだけです。

 

コードの一覧

#騰落率を計算する
diff_data = data.pct_change()*100

#騰落率を計算すると最初のデータが空になる
#その空のデータを削除する
diff_data.dropna(inplace=True)


#相関係数を計算
#米金利をベースに相関係数を並び替える
diff_data.corr().sort_values('US10YT')

コードの解説

▶2行目:.pct_change()
これが騰落率を計算するコードです
パーセンテージの変化率(pct_change)が計算されます
最後に100を掛けてください
今回はdiff_data(差分データ)という変数を設定しました

 

▶2行目:.dropna(inplace=True)
騰落率を計算すると最初のデータが空欄になります
データの空欄を削除するコードが『変数名.dropna』です
『inplace=True』と書くと変更箇所が自動的に保存されます

 

▶11行目:上で説明済み

 

結果

上のコードを実行すると、騰落率ベースの相関マトリクスが表示されます。

相関マトリクス

 

何回も言って恐縮ですが、単に価格で計算される相関係数と騰落率で計算されるそれは、違う値になります。

重要なのは『アメリカ金利がどれくらい上下に動いたら、グロース銘柄はどのくらい上下に動くのか?』この点を常に考えることです。

よって、相関係数は騰落率ベースでみるのがベターだとジェイは考えています。

また、相関分析では数字だけでなくチャートで見る事も大事です。

その際は、線形回帰のチャートで見るのが一般的です。

Pythonでは、seabornの『regplot』『jointplot』をよく使います。

この点については、以下の記事の最後の方をご参考ください。実際にどんなチャートなのか?のイメージがつきます。

seaborn
ナスダックと米金利の関係をPythonとseabornでチェック!

投資家さん前回に続いて今回もPythonでのチャート分析がテーマですね   前回の記事ではPythonで作成したチャートを使って、米金利とナスダックの関係についてチェックしました。 &nbs ...

続きを見る

 

 

Pythonを学びたい方へ

今やPythonは、あらゆる分野で使われているプログラミング言語です。

Pythonを学んでおけば株式の投資に役立つだけでなく、これからのキャリアを形成する上でも力強い武器となるでしょう。

『私もPythonを学んでみたい!』

という人は以下のリンク先をご覧ください。

▼ Pythonを効率的に学ぶ方法を知りたいなら以下をクリック ▼

Pythonを学ぼう

 

なぜプログラミングを学ぶ必要があるのか?その理由がわかります。

そして、『これがPythonを効率的に学ぶ方法だ!』と自信をもっておすすめする学習方法について解説しています。

この記事と出会ったのも何かの縁です。
ぜひチャレンジしてみてください!

 

独学がどうしても苦手な人はメンター制度が充実しているプログラミングスクールをおすすめします。


▼Pythonを学ぶならテックアカデミー▼

▶現役エンジニアのパーソナルメンターからマンツーマンで学べる

▶データサイエンスコース

▲独学が苦手な人におすすめ▲


注記事項

ジェイの米国株投資ブログ(以下当サイト)に掲載されている記事は、投資の助言を目的としたものではありません。当サイトに掲載されたコンテンツの正確性については、可能な限り注意を払っています。しかし、意図せず誤情報が紛れ込む可能性や情報そのものが古くなっている可能性があり、その正確性を完全に保証するものではありません。
当サイトのコンテンツを参考に投資を行い、その後発生したいかなる結果についても、当サイト並びにブログ運営者は一切責任を負いません。すべての投資行動は『自己責任の原則』のもとで行ってください

スポンサーリンク

-matplotlib, Pandas

© 2021 ジェイの米国株投資ブログ