目安:この記事は4分で読めます。
今回は、前回の記事でご紹介した『爆速で株価のパフォーマンスチャートをつくってみよう!』の続編です。
-
【Pythonコード集】爆速で株価のパフォーマンスチャートをつくってみよう!
続きを見る
続編となる今回は、ナスダック総合指数(以下ナスダック)とダウ平均の年初来パフォーマンスを比較するチャートをつくります!
今回のサマリー
・Pythonを使えば、簡単に株価のパフォーマンスチャートが作れます
・ナスダックとダウ平均の年初来パフォーマンスを比較するチャートを作ります
・最後のまとめでは、今回紹介したコードを一気に紹介します
ぜひ、最後までお付き合いください!
この記事の対象となる人
こんな人におすすめ
- Pythonでチャートを作成したい人
- Pythonで株価の分析がしたい人
- Pythonを学びたいと思っている人
この記事でわかること
わかること
- PythonとYahoo!finance USのデータで株価のパフォーマンスチャートをつくる方法
▼ Udemyおすすめの講座 ▼
・Pythonの基礎から応用まで一気に学ぶならこのコース おすすめ度
▶現役シリコンバレーエンジニアが教えるPython 3 入門 + 応用 +アメリカのシリコンバレー流コードスタイル
・データサイエンスを学ぶならこの2コース 2コースのおすすめ度
▶【世界で37万人が受講】データサイエンティストを目指すあなたへ〜データサイエンス25時間ブートキャンプ〜
▶【ゼロから始めるデータ分析】 ビジネスケースで学ぶPythonデータサイエンス入門
・Python、ファイナンス、英語を一気に学ぶ ”欲張りコース” おすすめ度
▶Python for Finance: Investment Fundamentals & Data Analytics
※このコースには日本語の字幕がついています。
Python、ファイナンスそして英語の力を同時にレベルアップするコースとしては、Udemy最強のコースです。
ジェイもこのコースで学び、今も復習で使っているコースです。
やることは前回と同じ
結論から言いますと、やることは前回と同じです。
3つのライブラリ
- ライブラリのインポート
- 価格データの取得
- チャートの型を設定
- チャートの描画
上の順にそって、コードをひとつひとつ書いていきます。
実際にPythonコードをみてみましょう!
Pythonコード
まずは、いつも通り必要なライブラリからインポートします。
ライブラリのインポート
Pythonコード
import pandas as pd import matplotlib.pyplot as plt %matplotlib inline import datetime import yfinance as yf
ライブラリの解説(前回と同じ)
使うライブラリはたったの4つです。
4つのライブラリ
- pandas
- matplotlib
- datetime
- yfinance
1番目の『pandas』は、Python版のエクセルと思ってください。
これは、Pythonの分析で必ずといって良いほど使うライブラリです。
2番目の『matplotlib』は、Pythonでチャートやグラフを作成するためのライブラリです。
コードの書き方は色々ありますが、今回のようにー
コード書き方
import matplotlib.pyplot as plt
と書くのが、一番シンプルです。
3番目の『datetime』は、日付や日時を設定するライブラリです。
今回は、データの最終取得日を設定するためにインポートしました。
4番目の『yfinance』は、Yahoo!finance USから株価のデータを取得するためのライブラリです。
『pandas_datareader』というライブラリもあります。コードの書き方については、以下の記事をご覧ください。
-
【Pythonコード集】たった数行でラインチャートをつくってみよう!
続きを見る
どのライブラリを使うかは好みですね。
株価データの取得
ライブラリのインポートが終わったら、次は株価データの取得です。
今回はナスダックに加えて、ダウ平均(ティッカーコード:^DJI)の価格を取得するコードも書きます。
Pythonコード
#ナスダックのデータを取得 df_nsdq = yf.download(tickers='^IXIC', start='2021-01-01', end=datetime.date.today()) #ナスダックのデータを取得 df_dji = yf.download('^dji', start='2021-01-01', end=datetime.date.today())
yfinanceの解説(前回と同じ)
ポイントは、『yfinance』の引数にあります。
上の画像を見ればわかりますが、設定できる引数が多くあります。
しかし、初心者の方は以下の3つだけ覚えておけば十分です。
これらを設定することで、あなたが取得したい銘柄やデータの期間を自由に設定できます。
yfinanceの引数
- tickers
- start
- end
1番目の『tickers』で、取得したい銘柄のコードを設定します。
例:アップルならAAPL、アマゾンならAMZN、ネットフリックスならNFLX
今回は、ナスダックのティッカーコード『^IXIC』とダウ平均のティッカーコード『^DJI』を設定します。
2番目の『start』は、株価のデータを取得したい最初の日を設定します。
3番目の『end』は、株価のデータを取得したい最後の日を設定します。
startのように日付を直接入力してもOK。
その場合は文字型になるので、必ず『' '』や『" "』で日付の箇所をくくります。
また、今回のendのように『datetime関数』で設定してもOKです。
☆印価格データの統合
ここで、前回とは違い☆新しいコードを書きます。
それはー
新しいコード
2つの価格データを統合するコード
です。
Python(Pandas)で2つのデータフレームと統合する場合はー
新しいコード
concat関数
を使います。
実際にPythonコードをみてみましょう。
Pythonコード
#concat関数でナスダックとダウのデータフレームを統合 df_all = pd.concat([df_nsdq.Close, df_dji.Close], axis=1) #カラム名を変更 df_all.columns = ('NSDQ', 'DJI')
concat関数の解説
concat関数の書き方は簡単です。
新しいコード
concat( [ データフレーム1, データフレーム2 ], axis=0 or 1 )
と書くだけです。
[ ]の中に統合したいデータフレームを設定します。
その後、縦に統合するのか?横に統合するのか?を『axis(軸)』で設定します。
axis
- axis=0 :データを縦に統合
- axis=1 :データを横に統合
今回は『axis=1 』としたので、ナスダックの終値データ『df_nsdq.Close』に、ダウ平均の終値データ『df_dji.Close』を横に統合しました。
統合した後は、前回と同じく『変数名.columns』で、カラム名をわかりやすく編集します。
結果
上のコードを実行してみましょう。
ナスダックの横にダウ平均の株価データが追加されました。
カラム名もわかりやすく編集されています。
チャートの型を設定(前回と同じ)
さて、データがそろったので、最後はいつもどおりPythonでチャートを作成します。
今回も可視化ライブラリ『matplotlib』を使います。
前回と同じく、初めに『チャートの型』を設定します。
ポイントはー
今回のポイント
rcParams
というコードです。
Pythonコード
from matplotlib import rcParams rcParams['font.size']=15 rcParams['figure.figsize']=15,8
rcParamsの解説
『rcParams』を使えば、チャートのサイズやフォントを自在に設定できます。
書き方はー
rcParams
rcParams[ ' 設定したこと' ] = 設定したい数値
というシンプルなものです。
▷rcParams['font.size']=設定したい数値
font.sizeとあるとおり、こちらはフォントサイズを指定するコードです。
▷rcParams['figure.figsize']=横のサイズ、縦のサイズ
figure.figsizeとあるとおり、こちらはチャートのサイズ全体を指定するコードです。
今回は横15、縦8の横長サイズとしました。
チャートの作成
チャートの型を決めたら、次はいよいよチャートの作成です。
今回もシンプルにラインチャートを作成します。
Pythonコード
(df_all/df_all.iloc[0]).plot() plt.axhline(y=1, color='red', ls='--') plt.grid()
チャート作成の解説
▷df_all/df_all.iloc[0]
株価データを格納した変数同士で割り算し、パフォーマンスを計算するコードです。
ポイントは、分母の『.iloc[0]』です。
.ilocについて
Pandasには、任意のデータをピックアップするコードがあります。
『.iloc』はその一つで、行番号や列番号で単独もしくは複数の要素の値を選択し取得できます。
分母のdf_all.iloc[0]は、最初のデータだけを取り出すコードです。
カッコの中をゼロにすることで最初のデータを取り出しています。
こうすることで、分子のデータが変わっても分母のデータは最初のデータの値で固定されるので、『基準日=ゼロ%』としてパフォーマンスが計算できる、というわけです。
▷(df_all/df_all.iloc[0]).plot()
上のコードに可視化ライブライの『matplotlib』を『.plot()』というシンプルなコードで追記するだけで、チャートが作成されます。
▷plt.axhline(y=0, color='red', ls='--')
チャート内に水平の線を設定するコードです。
カッコの引数
- y:yの水準を設定
- color:色の設定
- ls:ラインスタイルの設定
最後の『ls:ラインスタイル』には、以下の種類があります。
ラインスタイルの種類
-
'-', '--', '-.', ':'
- 'solid', 'dashed', 'dashdot', 'dotted'
▷plt.grid();
チャート内にグリッドラインを描画するコードです。
結果
これまでのコードを実行すると、以下のパフォーマンス比較チャートが描画されます。
分析コメント
・ナスダック
上のチャートを見ればわかるとおり、今年の前半は、ナスダックのパフォーマンスが上下に大きく振れていることがわかります。
これはアメリカの長期金利が1.0%を突破した後、1.7%まで急激に上昇したためです。
ハイテク企業が多く上場するナスダックは、グロース株のトレンドを示す指標と言えます。
それゆえ、アメリカ金利の上昇時にはボラティリティが大きくなりやすいのです。
・ダウ平均
一方、ダウ平均は調整の反落を挟みながら、上昇トレンドを維持していることがわかります。
グロース株と比べて、PERやPBRの面で割安とされる『バリュー株』に資金が流れ続けていることが上のチャートから読み取れます。
おまけ
ここからは、おまけのセクションです。
前回つくった日々の変動幅をチェックするボラティリティチャートを色分けすると、ナスダックとダウ平均の違いが、より分かるようになります。
Pythonコード
df_all.pct_change(periods=1).plot() plt.axhline(y=0, color='red', ls='--') plt.axhspan(ymin=-0.03, ymax=0.03, alpha=0.1) plt.axhspan(ymin=-0.02, ymax=0.02, alpha=0.1, color='orange') plt.grid()
pct_changeの説明(前回と同じ)
日々のボラティリティ(変動幅)をチェックする時は、当日と前日の差分に注目します。
これを計算してくれるのがー
pct_changeについて
pct_change( periods = 日数 )
というコードです。
▷df_all.pct_change(periods=1).plot()
パフォーマンスデータを格納した変数『df_all』に『.pct_change(periods=1)』と書くだけで、差分1日のパフォーマンスを計算してくれます。
『pct_change』は、文字どおりパーセント(%)の変化です。
『periods=1』は、1日分という意味です。
最後に、可視化ライブライの『matplotlib』を『.plot()』というシンプルなコードで追記するだけで、チャートが描画されます。
axhlineの説明
▷plt.axhspan
一定のエリアに色を付けたい時に使うコードです。
『axhspan』は、最小値と最大値を設定してY軸のエリアに色付けするコードです。
カッコの引数
- ymin:yの最小値を設定
- ymax:yの最大値を設定
- alpha:透明度を設定
- color:エリアの色を設定
結果
上のコードを実行すると、以下のチャートが描画されます。
ナスダックをデフォルト色の青、ダウ平均をオレンジで色分けすると、ナスダックの方が日々のボラティリティ(変動幅)が大きいことがわかります。
今年の9月には、パウエルFRBが金融緩和政策の変更を公式に表明する可能性が高いです。
よって、ナスダックは今年3月のようなボラティリティの拡大局面があり得るでしょう。
あなたもPythonに挑戦してみよう!
このようにPythonを使えば、簡単に株価のデータを取得できます。
Pythonを使えば、数値のデータを可視化して株価の分析もできます。
今回紹介した方法は、いずれも基本的なコードです。
しかし、シンプルなコードを見ただけでも『プログラミングって難しそう...』と感じてしまう初心者の方を多く見かけます。
ジェイも最初はそうでした。
しかし、プログラミングは『習うより慣れろ』です。
今回の記事を読んで『よし!自分もPythonに挑戦してみよう!』と思った方は、以下のリンク先をご覧ください。
ジェイが考える『Pythonを効率良く学習する方法』について解説しています。
▼ Pythonを効率的に学ぶ方法を知りたいなら以下をクリック ▼
Pythonを学ぼう
このブログと出会ったのも何かの縁です。
ぜひ挑戦してみてください!!
まとめ
今回は、PythonとYahoo!financeのデータを使ってナスダックとダウ平均の年初来パフォーマンスチャートを作成しました。
また、ジェイが考える効率的なPythonの学習方法については、上のリンク先からご覧いただけます。
最後に今回のコード一覧をご紹介します。
コピペして遊んでみてください!
今回のPythonコード一覧
#ライブラリのインポート import pandas as pd import matplotlib.pyplot as plt %matplotlib inline import datetime import yfinance as yf #株価データの取得 df_nsdq = yf.download(tickers='^IXIC', start='2021-01-01', end=datetime.date.today()) df_dji = yf.download('^dji', start='2021-01-01', end=datetime.date.today()) #ナスダックとダウ平均のデータフレームを統合 df_all = pd.concat([df_nsdq.Close, df_dji.Close], axis=1) df_all.columns = ('NSDQ', 'DJI') #年初来パフォーマンスチャートを描画 (df_all/df_all.iloc[0]).plot() plt.axhline(y=1, color='red', ls='--') plt.grid() #年初来ボラティリティチャートを描画 df_all.pct_change(periods=1).plot() plt.axhline(y=0, color='red', ls='--') plt.axhspan(ymin=-0.03, ymax=0.03, alpha=0.1) plt.axhspan(ymin=-0.02, ymax=0.02, alpha=0.1, color='orange') plt.grid()
今回は以上です!
注記事項
当サイトのコンテンツを参考に投資を行い、その後発生したいかなる結果についても、当サイト並びにブログ運営者は一切責任を負いません。すべての投資行動は『自己責任の原則』のもとで行ってください。