続編の告知
この記事には続編があります。以下のリンク先よりご覧ください。
-
【Pythonコード集】爆速で株価のパフォーマンスチャートをつくってみよう!続編
続きを見る
目安:この記事は4分で読めます。
今回は、PythonとYahoo!finace USのデータを使って、株価のパフォーマンスチャーをつくります。
今回のサマリー
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最強のコースです。
ジェイもこのコースで学び、今も復習で使っているコースです。
手順はたったの4つ
結論からいいます。
PythonとYahoo!finance USのデータで株価のパフォーマンスなどを分析する場合、必要な手順は以下の4つだけです。
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コード集】たった数行でラインチャートをつくってみよう!
続きを見る
株価データの取得
ライブラリのインポートが終わったら、次は株価データの取得です。
今回は、ナスダック総合指数(以下ではナスダック)を取り上げます。
ハイテク企業が多く上場するナスダックは、今後も米株のトレンドを考える上で重要な指標となるでしょう。
Pythonコード
df_nsdq = yf.download(tickers='^IXIC', start='2021-01-01', end=datetime.date.today())
yfinanceの解説
ポイントは、『yfinance』の引数にあります。
上の画像を見ればわかりますが、設定できる引数が多くあります。
しかし、初心者の方は以下の3つだけ覚えておけば十分です。
これらを設定することで、あなたが取得したい銘柄やデータの期間を自由に設定できます。
yfinanceの引数
- tickers
- start
- end
1番目の『tickers』で、取得したい銘柄のコードを設定します。
例:アップルならAAPL、アマゾンならAMZN、ネットフリックスならNFLX
2番目の『start』は、株価のデータを取得したい最初の日を設定します。
3番目の『end』は、株価のデータを取得したい最後の日を設定します。
startのように日付を直接入力してもOK。
その場合は文字型になるので、必ず『' '』や『" "』で日付をくくります。
また、endのように『datetime関数』で設定してもOKです。
結果
上のコードを実行すると、以下の結果が表示されます。
たった数行のコードを書くだけで、株価データの基本である四本値ー『始値・高値・安値・終値』だけでなく、出来高や調整後の終値まで一気に取得できました!
価格データが取得できたので、次はいよいよチャートの作成です。
チャートの作成
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コード
normalized = (df_nsdq/df_nsdq.iloc[0]-1)*100 normalized.Close.plot();
チャート作成の解説
▷normalized = (df_nsdq/df_nsdq.iloc[0]-1)*100
ナスダックの価格データを格納した変数同士で割り算し、パフォーマンスを計算するコードです。
ポイントは、分母の『.iloc[0]』です。
.ilocについて
Pandasには、任意のデータをピックアップするコードがあります。
『.iloc』はその一つで、行番号や列番号で単独もしくは複数の要素の値を選択し取得できます。
分母のdf.iloc[0]は、最初のデータだけを取り出すコードです。
カッコの中をゼロにすることで最初のデータを取り出しています。
こうすることで、分子のデータが変わっても分母のデータは最初のデータの値で固定されるので、『基準日=ゼロ%』としてパフォーマンスが計算できる、というわけです。
▷normalized.Close.plot();
ラインチャートを描画するコードです。
パフォーマンスデータを格納した変数『normalized』に『.Close』を追加して終値のみをピックアップしています。
そして最後に、可視化ライブライの『matplotlib』を『.plot()』というシンプルなコードで追記するだけです。
結果
シンプルではありますが、簡単にナスダックの年初来パフォーマンスチャートが作成できました。
ボラティリティチャート
日々の変動幅、つまりナスダックの『ボラティリティ』はどの程度なのか?
もうひとつのパフォーマンスチャートでこの点を確認してみましょう!
Pythonコード
performance = df_nsdq.pct_change(periods=1)
pct_changeの説明
日々のボラティリティ(変動幅)を確認する時は、当日と前日の差分に注目します。
これを計算してくれるのがー
pct_changeについて
pct_change( periods = 日数 )
というコードです。
▷df_nsdq.pct_change(periods=1)
パフォーマンスデータを格納した変数『df_nsdq』に『.pct_change(periods=1)』と書くだけで、差分1日のパフォーマンスを計算してくれます。
『pct_change』は、文字どおりパーセント(%)の変化です。
『periods=1』は、1日分という意味です。
結果
上のコードを実行すると、以下のパフォーマンスチャートが描画されます。
今年の3月にアメリカの長期金利が急上昇する局面がありました。
この動きに連動して、ナスダックのボラティリティ(上下の変動幅)が拡大していることがわかります。
これからアメリカの金融政策は、緩和から正常化に向かいます。
この過程で、今年3月のようにボラティリティが拡大する局面があるとジェイは考えています。
チャートを編集してみよう!
上で描画したチャートは、あまりにもシンプルすぎますね。
なのでここから先は、ラインチャートをもう少しかっこよくしてみましょう!
簡単な流れ
- ゼロラインの追加
- グリッドラインの追加
- 一定のエリアの色付け
年初来パフォーマンスチャート
まずは年初来のパフォーマンスから。
Pythonコード
normalized.Close.plot() plt.axhline(y=0, color='red', ls='--') plt.grid();
axhlineの解説
▷plt.axhline(y=0, color='red', ls='--')
チャート内に水平の線を設定するコードです。
カッコの引数
- y:yの水準を設定
- color:色の設定
- ls:ラインスタイルの設定
最後の『ls:ラインスタイル』には、以下の種類があります。
ラインスタイルの種類
-
'-', '--', '-.', ':'
- 'solid', 'dashed', 'dashdot', 'dotted'
▷plt.grid();
チャート内にグリッドラインを描画するコードです。
結果
たった2行のコードを追記するだけで、格段にわかりやすくなりましたね。
次は、ボラティリティチャートを編集してみましょう!
ボラティリティチャート
Pythonコード
performance.Close.plot() plt.axhline(y=0, color='red', ls='--') plt.axhspan(ymin=-0.03, ymax=0.03, alpha=0.1, color='red') plt.grid();
axhspanの解説
今回のポイントはー
axhspan
axhspan(各引数の設定 )
というコードです。
そして『axhspan』のポイントは、引数の設定です。
カッコの引数
- ymin:yの最小水準を設定
- ymax:yの最大水準を設定
- alpha:色の透明度を設定
- color:エリアの色を設定
上4つの引数を設定すると、以下のチャートが描画されます。
結果
エリアに色をつけることで、今年は最大マイナス3%(-0.03)からプラス3%(+0.03)の間で変動していることがわかります。
±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()) #チャートの型を設定 from matplotlib import rcParams rcParams['font.size']=15 rcParams['figure.figsize']=15,8 #パフォーマンスチャートの作成 normalized.Close.plot() plt.axhline(y=0, color='red', ls='--') plt.grid(); #日々のボラティリティを計算 performance = df_nsdq.pct_change(periods=1) #ボラティリティチャートの作成 performance.Close.plot() plt.axhline(y=0, color='red', ls='--') plt.axhspan(ymin=-0.03, ymax=0.03, alpha=0.1, color='red') plt.grid();
今回は以上です!
注記事項
当サイトのコンテンツを参考に投資を行い、その後発生したいかなる結果についても、当サイト並びにブログ運営者は一切責任を負いません。すべての投資行動は『自己責任の原則』のもとで行ってください。