目安:この記事は3分で読めます
今回は、『【Pythonで分析】3つの米銀株とアメリカ金利の興味深い関係』の後編となります。
前編は、以下のリンク先からご覧ください。
-
【Pythonで分析】3つの米銀株とアメリカ金利の興味深い関係 前編
続きを見る
後編は、Pythonコードの解説となります。
今回のテーマ
Pythonコードの解説、実際に手を動かしてコードを書いてみよう!
▼Pythonを学ぶならテックアカデミー▼
▶現役エンジニアのパーソナルメンターからマンツーマンで学べる
▶データサイエンスコース
▲独学が苦手な人におすすめ▲
この記事の対象となる人
こんな人におすすめ
- 米国株の投資に興味がある人
- Pythonを使って分析をしたい人
- Pythonを学びたいと思っている人
この記事でわかること
わかること
- 基本的なPythonコードの書き方
- 効率的にPythonを学ぶ方法
コード:ライブラリ
まずは、必要なライブラリのインポートからです。
コードの一覧
import pandas as pd import yfinance as yf import numpy as np import matplotlib.pyplot as plt %matplotlib inline from matplotlib import rcParams rcParams['figure.figsize'] = 15,9 rcParams['font.size'] =20 import datetime import seaborn as sns sns.set_style('whitegrid')
コードの解説
最初に言っておきます。
『□□as 〇〇』と書くスタイルは、□□の長ったらしいコードを〇〇というカタチに簡略するための表現です。
このことを踏まえた上で、コードの解説をみてください。
▷import pandas as pd
Python版のエクセルーPandasをインポートするコード。pdで簡略。
▷import yfinance as yf
yfinanceでYahoo!finance USから価格データを取得するコード。yfで簡略。
▷import numpy as np
numpyは数学の計算モジュール。npで簡略。
▷import matplotlib.pyplot as plt
matplotlibはデータの可視化ライブラリ。pltで簡略。
▷from matplotlib import rcParams
rcParamsでチャートの大きさやフォントのサイズを決める
・rcParams['figure.figsize'] = 15,9
figure.figsize'は、チャートの横と縦のサイズを決めるコード
今回は横15、縦9としました
・rcParams['font.size'] =20
'font.size'は、フォントサイズを決めるコード
▷import datetime
日付を設定するコード
▷import seaborn as sns
seabornはmatplotlibをカッコよくするためのライブラリ。snsで簡略。
・sns.set_style('whitegrid')
set_styleはチャート全体の色彩を決めるコード
カッコ内の'whitegrid'は、バックグラウンドが白ベースでグリッドラインが描画される設定ということ
コード:データの取得
ライブラリのインポートが終わったら、次は価格データを取得してみましょう。
コードの一覧
stock_list = ['C','WFC','BAC', '^TNX'] df = pd.DataFrame() for i in stock_list: df[i] = yf.download(tickers=i, start = '2021-01-01', end=datetime.date.today(), interval='1d')['Close']
コードの解説
▷stock_list = ['C','WFC','BAC', '^TNX']
取得したい価格のティッカーコードをリスト形式で取得
ティッカーコードはYahoo!finance USが指定するコードとなります
今回は、リスト形式のティッカーコードを変数stock_listに格納します
▷df = pd.DataFrame()
空のデータフレームをpandasで作成
dfという変数に格納するよう設定
▷for i in stock_list:
df[i] = yf.download(tickers=i, start = '2021-01-01', end=datetime.date.today(), interval='1d')['Close']
for文を使ってひとつひとつのデータを変数dfに入れるコード
yf.downloadは定型のコードです。こう書くんだ、と思ってください。
引数で細かい設定ができます。
yf.downloadの引数について
・tickers
ここに取得したいティッカーコードを入れます。
今回はリストでまとめたティッカーコードをカウント変数『i』でひとつひとつ取得するかたちになります。なので、今回はiを設定します。
・start / end
ここで最初と最後のデータ取得日を設定します。
今回endは、datetime.date.today()とし、コードを実行した日を最終日に設定しました。
・interval
ここでデータの時間軸を設定します。今回は1日分のデータを取得するので『1d』とします。
データの確認
では、データが取得できているかどうかの確認をしてみましょう。
df.head() df.tail()
▷df.head()
最初の5つのデータを確認するコード
▷df.tail()
最後の5つのデータを確認するコード
ちゃんとデータが取得できていることが確認できました。
次はチャートの作成です。
コード:チャート作成
以下の順で作成します。
チャートの作成
- 米金利のチャート
- 米銀株のパフォーマンスチャート
- 5月12日以降の米銀株のパフォーマンスチャート
コード:米金利のチャート
df.columns = ( 'CITI','WFC','BAC', 'US_10YT') #米金利のチャート df.US_10YT.plot(color = 'black', lw =3) plt.axvline(x = '2021-05-12',lw=2,color='red')
コードの解説
▷df.columns = ()
データフレームのカラム名をわかりやすく設定するコード
▷df.US_10YT.plot()
変数名.カラム名.plotとすることで、特定のカラムのデータをチャート化するコード
ここではカラム名『US_10YT』と設定しているので、米金利のチャートを表示するコードになります
plotの引数について
・color
色を設定します。今回は黒(black)としました。
・lw
line widthの略です。ここではラインの太さを設定できます。
▷plt.axvline()
チャート上に縦線を引くコードです。vlineの『v』は垂直(vertical)、という意味です。
横線を引く場合は『axhline』となります。hlineの『h』は水平(horizen)、という意味です。
axvlineの引数について
・x
x軸のどの地点に縦線を引くのか?を設定します。
今回は”2021年5月12日”としました。
lwとcolorは上と同じです。
上のコードを実行すると、以下のチャートが表示されます。
米金利のチャート
コード:米銀のパフォーマンスチャート
#米銀株のパフォーマンスを計算 performance = (df/df.iloc[0]-1)*100 #米銀株のパフォーマンスチャート performance[['WFC','BAC','CITI']].plot(lw=3) plt.axvline(x = '2021-05-12',lw=2,color='red') #5月12日以降のデータのみのピックアップ df_may = df.loc['2021-05-12':] #5月12日以降のパフォーマンスを計算 performance_may = (df_may/df_may.iloc[0]-1)*100 #米銀株のパフォーマンスチャート(5/12以降) performance_may[['WFC','BAC','CITI']].plot(lw=3);
コードの解説:ilocとlocについて
▷performance = (df/df.iloc[0]-1)*100
最初のデータ取得日を基準日として、パフォーマンスを計算するコードです。
.ilocについて
Pandasには任意のデータをピックアップするコードがあります。
『.iloc』はその一つで、単独および複数の要素の値を選択し取得できます。
分母のdf.iloc[0]は、最初のデータだけを取り出すコードです。
カッコの中をゼロにすることで最初のデータを取り出しています。
こうすることで、分子のデータが変わっても分母のデータは最初のデータの値で固定されるので、基準日=ゼロ%としてパフォーマンスが計算できる、というわけです。
▷df_may = df.loc['2021-05-12':]
5月12日以降のデータを取得するコード
.locについて
Pandasには任意のデータをピックアップするコードがあります。
『.loc』はその一つで、単独および複数の要素の値を選択し取得できます。
今度は『.loc』です。
ラベル名を指定することで、ピックアップしたいデータを選択し取得できるコードです。
日付の後が『:』となっています。このコロンは『最後までデータを取得して』という意味です。
なので『'2021-05-12':』は、『今年の5月12日から最後の日のデータまで取得して』というコードになります。
▷performance[['WFC','BAC','CITI']].plot(lw=3)
▷performance_may[['WFC','BAC','CITI']].plot(lw=3)
上2つのコードは、チャートを描画するコードです。
実行すると以下のチャートが描画されます。
年初来パフォーマンスのチャート
5月12日以降のパフォーマンスチャート
▼ Udemyおすすめの講座 ▼
▶現役シリコンバレーエンジニアが教えるPython 3 入門 + 応用 +アメリカのシリコンバレー流コードスタイル
▶ゼロから始めるデータ分析】 ビジネスケースで学ぶPythonデータサイエンス入門
さて、いよいよPythonによる分析です。
コード:ボラティリティの分析
まずは、価格の変動幅ーいわゆるボラティリティを視覚で確認するときによく使われるボックスプロット(箱ヒゲ図)のチャートを描画してみます。
コードの一覧:相関分析
#シティ・グループのチャート sns.boxplot(x = 'CITI', data=performance_may, palette='gist_heat') #ウェルズファーゴのチャート sns.boxplot(x = 'WFC', data=performance_may, palette='Dark2') #バンク・オブ・アメリカのチャート sns.boxplot(x = 'BAC', data=performance_may, palette='terrain')
コードの解説
▷sns.boxplot()
共通しているのは『sns.boxplot』です。
このコードを書くだけで、ボックスプロットのチャートが描画できます。
引数で詳細な設定ができます。
boxplotの引数について
・x
ここにチャートで表示したいデータのカラム名を入れます。
・data
ここにチャートで表示したいデータセットを入れます。
・palette
ここでチャートの色彩を設定します。いくつかの色彩パターンがあります。
上のコードを実行すると、以下のチャートがそれぞれ描画されます。
最後は相関分析のコードです。
コード:相関分析
上のパフォーマンスデータを使っても良いのですが、今回はnumpyの紹介をしたいので収益率にあたる『対数差分』で分析してみました。
コードの一覧:相関分析
#対数差分(収益率)を計算するコード diff_log = np.log(df_may).diff(1) #ヒートマップチャートで相関チャートを作成 sns.heatmap(data=diff_log.corr() ,annot=True, cmap='Greys')
コードの解説
▷diff_log = np.log(df_may).diff(1)
numpyは、複雑な数学の計算をPythonでする時に必ず必要となるモジュールです。
『np.log』は対数を計算するコードです。カッコの中に対数にしたいデータを入れます。
『.diff(1)』は差分を取るコードです。前の日と比べたパフォーマンスを計算するので、今回は1日分の差ということで『1』としました。
対数差分のデータを変数diff_log に入れます。
▷sns.heatmap()
seabornでヒートマップのチャートを作成するコード。
引数で詳細な設定ができます。
heatmapの引数について
・data
ここに相関関係を分析したデータセットを設定します。
相関係数は『データセットの変数名.corr()』で簡単に計算できます。
・annot
ここを『True』にすると、相関係数の数値がチャート上に表示されます
・cmap
ここでチャートの色彩を設定します。いくつかの色彩パターンがあります。
上のコードを実行すると、ヒートマップの相関チャートが描画されます。
米金利と米銀株の相関チャート
Pythonを学びたい方へ
今やPythonは、あらゆる分野で使われているプログラミング言語です。
Pythonを学んでおけば株式の投資に役立つだけでなく、これからのキャリアを形成する上でも力強い武器となるでしょう。
『私もPythonを学んでみたい!』
という人は以下のリンク先をご覧ください。
▼ Pythonを効率的に学ぶ方法を知りたいなら以下をクリック ▼
Pythonを学ぼう
なぜプログラミングを学ぶ必要があるのか?その理由がわかります。
そして、『これがPythonを効率的に学ぶ方法だ!』と自信をもっておすすめする学習方法について解説しています。
この記事と出会ったのも何かの縁です。
ぜひチャレンジしてみてください!
注記事項
当サイトのコンテンツを参考に投資を行い、その後発生したいかなる結果についても、当サイト並びにブログ運営者は一切責任を負いません。すべての投資行動は『自己責任の原則』のもとで行ってください。