Pythonには便利なライブラリが多く存在しており、株価を簡単に取得することができます。
私は、株はあまりしていないのですがインデックス投資はしていますので、今回はS&P500と日本株のデータを取得する例で説明しようと思います。
取得できるデータについて
pandas datareaderでは、銘柄と取得したい期間をを指定することで、その期間のデータが得ることができます。得られる内容は以下の項目になります。
- 始値
- 高値
- 安値
- 終値
- 出来高
ライブラリのインストール
pandas_datareaderをpipでインストールして下さい。
pip install pandas-datareader
S&P500・日本株の情報を取得する
早速ライブラリを利用して、株価をしてみましょう。ソースの詳細は後で説明します。
from pandas_datareader import data
import pandas as pd
import datetime as dt
from dateutil import relativedelta
#今日の日付を取得します。
dateNow = dt.datetime.today()
#1年前を取得
dateYearBefore = dateNow - relativedelta.relativedelta(years=1)
#yahooから1年前から今日までのS&P500データを取得する
df = data.DataReader("^GSPC" ,"yahoo", start=dateYearBefore, end=dateNow)
JupyterLabなどで実行し、dfの中身を確認すると以下のような内容を確認できます。
※私はVS CodeにJupyterのプラグインをインストールして利用しています。
その記事についてはまた別記事で投稿しようと思います。
1. 日付の取得
「datetime」ライブラリを使用し、今日の日付を取得します。
期間指定をする必要があるので「開始」~「終了」の「終了」の時期として利用しています。
dateNow = dt.datetime.today()
2. 1年前を取得
「dateutil」ライブラリを使用し、今回は1年前の日付を取得します。
「開始」~「終了」の「開始」の時期として利用しています。
dateYearBefore = dateNow - relativedelta.relativedelta(years=1)
3. 株価データを取得する
「pandas_datareader」ライブラリを使用し、株価を取得します。
df = data.DataReader("^GSPC" ,"yahoo", start=dateYearBefore, end=dateNow)
引数1:銘柄名を指定します。今回は、S&P500「^GSPC」を指定しています。
引数2:取得サイトを指定します。今回はyahooから情報を取得します。日本株から取得したい場合は、「stooq」を指定します。
※日本株の取得については後で説明します。
引数3(start ):取得期間の開始時期を設定します。今回は1年前を指定しています。
引数4(end):取得期間の終了時期を設定します。今回は今日日付を指定しています。
取得したデータのカラム説明
各カラムの意味は以下の内容になります。
表記 | 意味 |
---|---|
Date | 日付 |
High | 高値 |
Low | 安値 |
Open | 始値 |
Close | 終値 |
Volume | 出来高 |
Adj Close | 調整後終値 |
日本株を取得する
日本株を取得したい場合は、取得サイトを「stooq」に設定して、銘柄の指定時に、後ろに「.JP」をつけることで取得することができます。
from pandas_datareader import data
import pandas as pd
import datetime as dt
from dateutil import relativedelta
#今日の日付を取得します。
dateNow = dt.datetime.today()
#1年前を取得
dateYearBefore = dateNow - relativedelta.relativedelta(years=1)
#stooqから1年前から今日までの日本株のデータを取得する
df = data.DataReader("7203.JP","stooq", start=dateYearBefore, end=dateNow)
stooqでは”Adj Close”の取得は行いません。
まとめ
いかがだったでしょうか?
今回、米国株の取得と日本株の取得を行いました。
私は、これら利用し、週間や月間の騰落率、テクニカルチャートなどを毎日通知するようなプログラムをVPSサーバーで常駐させています。
株価データがあれば、自分のルールに基づいたプログラムを生成し、日々の確認を自動化するようなシステムが作れるようになりますので是非チャレンジしてみて下さい。
テクニカルチャートなどのやり方は、またに記事にするかもしれません。
今回の記事が、皆さんの技術向上に役立てれば嬉しいです。
以上、おつかれさまでした!