目安:この記事は3分で読めます
過去2回の記事では、アメリカの長期金利がグロース株へ与える影響について、相関分析で考えてみました。
未読の方は、以下のリンク先へ。
-
【前編】急速に低下する米金利!米国グロース銘柄へのインパクトをPythonで分析してみよう!
続きを見る
-
【中編】米金利の低下が米国のグロース銘柄へ与える影響を分析-Pythonコードの紹介
続きを見る
最終回の後編は、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()
チャート上にグリッドラインを描画するコードです
結果
上のコードを実行すると、以下のチャートが描画されます。
コードの解説:相関マトリクスの作成
次に、相関マトリクスを作成するコードです。
コードの一覧
#必要なライブラリのインポート 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』をよく使います。
この点については、以下の記事の最後の方をご参考ください。実際にどんなチャートなのか?のイメージがつきます。
-
ナスダックと米金利の関係をPythonとseabornでチェック!
続きを見る
Pythonを学びたい方へ
今やPythonは、あらゆる分野で使われているプログラミング言語です。
Pythonを学んでおけば株式の投資に役立つだけでなく、これからのキャリアを形成する上でも力強い武器となるでしょう。
『私もPythonを学んでみたい!』
という人は以下のリンク先をご覧ください。
▼ Pythonを効率的に学ぶ方法を知りたいなら以下をクリック ▼
Pythonを学ぼう
なぜプログラミングを学ぶ必要があるのか?その理由がわかります。
そして、『これがPythonを効率的に学ぶ方法だ!』と自信をもっておすすめする学習方法について解説しています。
この記事と出会ったのも何かの縁です。
ぜひチャレンジしてみてください!
独学がどうしても苦手な人はメンター制度が充実しているプログラミングスクールをおすすめします。
▼Pythonを学ぶならテックアカデミー▼
▶現役エンジニアのパーソナルメンターからマンツーマンで学べる
▶データサイエンスコース
▲独学が苦手な人におすすめ▲
注記事項
当サイトのコンテンツを参考に投資を行い、その後発生したいかなる結果についても、当サイト並びにブログ運営者は一切責任を負いません。すべての投資行動は『自己責任の原則』のもとで行ってください。