未分類

Pythonでのリアルタイムな株価の折れ線グラフ作成方法

目的

今回は、Pythonで株価の折れ線グラフの作成を実施します。
この記事を読むことで、Pythonでの株価取得方法やグラフ作成の基礎を学ぶことができます。
また、任意のリアルタイムな株価を簡単に確認できるようになります。是非、オリジナルの株価グラフを作成してみて下さい。

期間:2019年12月1日~ 2021年11月30日

取得データ

SPY(SPDR S&P 500 ETF):アメリアの代表的な株価指数であるS&Pに値動きが連動するETF

VWO(バンガード FTSE エマージング・マーケッツETF):途上国株式の米ドル建てのETF

TLT(iシェアーズ米国国債20年超 ETF):期間20年以上の米国債券

HYG(iシェアーズiBoxx ハイイールド社債ETF):米ドル建てハイイールド社債に連動するETF

GLD( SPDR ゴールド・シェア):金に投資するETF

SLV( iシェアーズ・シルバー・トラスト):銀に投資するETF

環境構築

下記の記事を参考にして、グラフを簡単に表示できるJupyterLabをインストールしてみて下さい。
インストール済みの方は、次の項目から実施をお願いします。

JupyterLabでの実行結果

ライブラリインストール

ターミナルやコマンドプロンプトで下記のライブラリをインストールします。

pip install pandas
pip install pandas_datareader
pip install matplotlib

ライブラリインポート

ここからはJupyterLabへ記載するソースコードになります。

#データ構造を作成するライブラリ
import pandas as pd
#日付を指定するライブラリ
import datetime as dt
#経済データや金融商品の価格データを取得できるライブラリ
import pandas_datareader.data as web
#グラフを作成するライブラリ
import matplotlib.pyplot as plt

株価取得設定

下記の期間を変更することで、任意の期間を設定することができます。
今回、取得するデータはETFになります。

#期間設定
start = dt.date(2019,12,1)
end = dt.date(2021,11,30)

#リスト作成
ETF_LIST = ["SPY","GLD","TLT","VWO","SLV","HYG"]

#データ取得
ETF = web.DataReader(ETF_LIST,'stooq',start,end)

ETFについて、下記にわかりやすい記事のリンクを記載しておきます。

https://www.simplexasset.com/etf/manga/vol1.html

データフレーム作成

株価の終値を取得します。

#dfデータフレームに格納。
#closeをindex昇降順にソートする。
#copy()により値渡しに変更。stocksに影響を与えない。
df_ETF = ETF.Close.sort_index(ascending=True).copy()

下記のコードで作成したデータフレームを確認できます。

#データフレームの表示
df_ETF

グラフ作成

全グラフ表示

横軸:日付、縦軸:価格の折れ線グラフになります。
今回は、matplotlibというライブラリを使用し、取得した全ETFを表示します。

#全グラフ表示
plt.plot(df_ETF)

個別グラフ表示

上記の全体グラフ表示では、非常に簡単にグラフを作成することが可能ですが、株価のトレンドなどもわかりずらいため、下記のコードにより個別に株価を表示します。

#個別グラフ表示
#グラフのサイズ設定
fig  = plt.figure(figsize=(12,12))

#グラフの枠設定
ax1 = fig.add_subplot(3,2,1)
ax2 = fig.add_subplot(3,2,2)
ax3 = fig.add_subplot(3,2,3)
ax4 = fig.add_subplot(3,2,4)
ax5 = fig.add_subplot(3,2,5)
ax6 = fig.add_subplot(3,2,6)

#グラフの描写
ax1.plot(df_ETF.iloc[:,0], label = df_ETF.iloc[:,0].name, color = 'C0')
ax2.plot(df_ETF.iloc[:,1], label = df_ETF.iloc[:,1].name, color = 'C1')
ax3.plot(df_ETF.iloc[:,2], label = df_ETF.iloc[:,2].name, color = 'C2')
ax4.plot(df_ETF.iloc[:,3], label = df_ETF.iloc[:,3].name, color = 'C3')
ax5.plot(df_ETF.iloc[:,4], label = df_ETF.iloc[:,4].name, color = 'C4')
ax6.plot(df_ETF.iloc[:,5], label = df_ETF.iloc[:,5].name, color = 'C5')

#グラフ設定
#全体のタイトル
fig.suptitle("Date & Value")

#複数グラフへの設定
for i in range(6):
    plt.subplot(3, 2, i+1)
    
    #ラベル設定
    plt.xlabel('Date')
    plt.ylabel('Value,USD')
    #文字を斜めに表示
    plt.xticks(rotation=45)
    plt.legend(loc='best')

#グラフの重なりを修正
plt.tight_layout()

まとめ

以上、Pythonでの株価のグラフ作成になります。
是非、自分でアレンジしてみて、オリジナルの株価グラフを作成してみて下さい。

おすすめのPython学習方法

ABOUT ME
チェルシー
【プロフィール】  年齢:30代前半  性別:オス 【主な職歴】  メーカー勤務  製品設計開発_メカ設計:7年  開発業務自動化:1年半 元々、メカ設計エンジニアとして、製品設計開発に携わっていました。新しいスキルを身につけたいと独学でPythonを勉強し始め、現在、本業でソフトエンジニアとして働いています。具体的には、Pythonを使った製品評価業務の自動化を推進しています。 また、製品市場データ分析業務など可視化なども実施しています。 【2023年度目標】 1. 副業収入:月5,000円 2. 塩漬けにしていたブログをChatGPTなどを活用して執筆の効率化し、1年半前に開設した本サイトを改善する 3. 定期的に株式投資おすすめ成長株の紹介記事を投稿 4. 自作中の米国成長株の分析ツールのコーディング紹介 5. 株式投資の本で学んだ情報をアウトプットする