J-Quants APIを使って株価を入手できるって聞いたけど、どうやるの?
こんな悩みを解決します。
- J-Quants APIを使って日本株の株価データをGoogleのスプレッドシートに出力できるようになります。
株の情報が簡単にダウンロードできると分析に使えて便利だよね。
今回使うのはこの3つです。
・J–Quants API(個人投資家向けのAPIデータ配信サービス)
・Google Colab(ブラウザから直接Pythonを記述、実行できるサービス)
・Googleスプレッドシート(Google社が提供している表計算ソフト)
J-Quants APIとは?
J-QuantsAPIとは日本取引所グループ(JPX)が個人投資家向けに株価や財務情報を提供するサービスです。
2022年7月にベータ版が提供され、今年4月(2023/04)に正式リリースされています。
提供データの種類
上場銘柄一覧、株価四本値、財務情報、決算発表予定日、投資部門別情報、TOPIX四本値、オプション四本値、信用取引週末残高、業種別空売り比率、売買内訳データ、前場四本値、配当金情報、取引カレンダー
公式サイトはこちらです。(https://jpx-jquants.com/)
提供データの種類よっては費用がかかります。無料プランもありますが、情報が12週前までしか提供されないのでまずは無料プランを使ってみて、ほしい情報が入手できるようなら有料版に切り替え、最新データを取得するほうといった感じがよさそうです。
料金プランは無料、ライト、スタンダード、プレミアムの4コース。無料だとタイムラグが12週(約3か月)あるので、実際の投資の情報として使うには最低でも1650円のライトプランになると思います。
そもそもAPIとは何かを簡単に説明するとシステムやサーバーにアクセスするために窓口的に用意されたプログラムです、「API」とは、「Application Programming Interface」の略です。APIを使った処理のイメージとしてはこんな感じです。
J-Quants APIを使うには?
J-Quants API を使うにはプログラミングの知識が少し必要です。
具体的にはPython(パイソン)といプログラミング言語を使ってデータ取得するプログラムを書く必要があります。
プログラムというとちょっと難しく感じると思いますが、Googleが提供するGoogle ColabというWebサービスを使えば簡単に実行することができます。
Google Colabとは?
Google Colab(正式名称「Colaboratory」)は、Google社が提供している、ブラウザから直接Pythonを記述、実行できるサービスです。 これはGoogleドライブに保存されるJupyterノートブック環境のようなもので、Googleドライブ上でコードの記述や実行、共有ができます。ブラウザ上でコードを記入し、実行までできます。しかも無料です。
J-Quants API の使うために準備すること
Google ColabとJ-QuantsAPIを使うには準備することが3つあります。
・J-QuantsAPIの登録(無料プランからがおすすめ)
・Goolgleアカウントの取得
・APIを使うためのプログラムコード(下記に用意してあります)
これだけです。上記のJ-QuantsAPIのGoogleアカウントの登録の仕方についてはググって下さい。(のちほど追記するかも)
J-Quants APIの使い方
J-QuantsAPIの登録とGoogleアカウント登録が済んだら実際にPythonでコードを作成し、株価データを取得してみましょう。
まずはコードの準備から。下記のコードをそのままコピーし、J-QuantsAPIの登録した時のメールアドレスとパスワードを書き換える(33行目)。それと取得したい会社の銘柄コードを記入(45行目)するだけでコードの準備は終了です。超簡単ですね。
#個別株の株価データ取得
#pip 経由でライブラリをインストール
#J-Quantsのライブラリ
!pip install jquants-api-client
#gspreadはGoogleスプレッドシートを操作するためのライブラリです
!pip install gspread
# google認証
from google.colab import auth
auth.authenticate_user()
# googleドライブへの設定(出力フォルダ)
from google.colab import drive
drive.mount('/content/drive')
import jquantsapi
import pandas as pd
import requests
import gspread
from google.auth import default
creds, _ = default()
gc = gspread.authorize(creds)
import gspread_dataframe as gs_df
import json
from pandas import json_normalize
import datetime
import time
# JQuantsのAPIを使用するためのリフレッシュトークンの取得
# 一度取得すると1週間有効ですが、実行都度取得したほうが楽なので毎回取得としています。
# JQuantsに登録したメールアドレスとパスワードを記入
data={"mailaddress":"メールアドレス", "password":"パスワード"}
r_post = requests.post("https://api.jquants.com/v1/token/auth_user", data=json.dumps(data))
r_post.json()
REFRESH_TOKEN = r_post.json().get("refreshToken")
r_post = requests.post(f"https://api.jquants.com/v1/token/auth_refresh?refreshtoken={REFRESH_TOKEN}")
r_post.json()
ID_TOKEN = r_post.json().get("idToken")
idToken = ID_TOKEN
# code_listに調べたい銘柄コードを入力、複数の場合はカンマで区切りで入力
df_prices = pd.DataFrame()
code_list = [4385,7082] #ここを取得したいコードに変更、サンプルとしてメルカリとジモティを記載
list_ID = [str(s)+"0" for s in code_list]
for i in list_ID:
URL = "https://api.jquants.com/v1/prices/daily_quotes?code="+str(i)
headers = {'Authorization': 'Bearer {}'.format(idToken)}
r = requests.get(URL,headers=headers)
list_prices = r.json().get('daily_quotes')
df01 = pd.DataFrame(list_prices)
df_prices = pd.concat([df_prices, df01], axis=0)
time.sleep(1)#サーバーに負荷をかけないように1秒待ちます。
df_prices['Code']=df_prices['Code'].str[:-1]
#出力されるスプレッドシートのファイル名を定義
#ファイル名を「株価データ20231231」と実行した日付をつけてみる。
filename = "株価データ"
#今日の日付を取得
today=datetime.date.today()
#日付のYYYY-MM-DDの-をカット
today=str(today).replace('-','')
#ファイル名(filename)+今日の日付(today)でファイル作成
sh = gc.create(filename+today) # ‘’内の名称のスプレッドシートをマイドライブに新規作成
worksheet = sh.get_worksheet(0) # シートを取得
gs_df.set_with_dataframe(worksheet, df_prices.reset_index())
print("実行完了しました")
日付で範囲を指定したい場合は、下記のように49行目を以下のように書き換えます。
パラメータ(?以降)にfrom、toを追加します。
例として、2023/01/05から2023/01/10の指定です。
URL = “https://api.jquants.com/v1/prices/daily_quotes?from=20230105&to=20230110&code=”+str(i)
※無料プランの場合、12週間の遅延があるため指定日がその範囲に入るとエラーになることがあります。例えば、実行日が2024/02/20の場合、toを2023/11/28は12週ちょうどでOKですが、2023/11/29はNGになります。
J-Quants APIを使って株価データを取得してみる。
それでは実際にコードを実行し、株価データを取得してみましょう。
1.Google Colabにアクセスする。
まずは実行する環境、Google Colab(正式名称「Colaboratory」)にアクセスします。
2.Google Colabにログインする。
クロームブラウザをGoogleアカウントでログインしている状態であれば、ここは不要ですがログインしてない場合は、画面の右上にある青色のログインボタンを押し、Googleアカウントを入力しログインします。
3.ノートブックを新規作成する。
ログインすると、下記のようにボックスが表示されるので下にある「ノートブックを新規作成」をクリックします。
もし間違って、キャンセルしてしまったり、このボックスが出てこない場合は、画面左上のファイルからも同じようにノートブックの新規作成が可能です。過去に作ったノートブックがあればここから開けます。
4.コードを入力する。
ノートブックがプログラムを書く場所になるので、ここにJ-QuantsAPIを使うためのプログラムを入力します。
上記に記載されたコードをコピーし、張り付ける。API実行のためにメールアドレスとパスワード、銘柄を書き直す必要がありますが張り付けた後に書き換えても、メモ帳とかに一度コピーし、そこで変更した後コピペしてもどちらでもOKです!
メールアドレスとパスワードもちゃんとチェックしましょう。
5.プログラムを実行する。
いよいよ、実行します。画面の左側にある黒丸の⇒を押すと、プログラムが実行されます。
コードを実行すると下記のように、1行ずつプログラムが実行されていきます。
進んでいくと、メッセージが出る箇所がいくつかでてきます。ここではGoogle認証の許可の確認です。スキップせず許可を押して進ましょう。
すると、Google認証をどのアカウントで実施するか選択画面がでてきますので、使用するアカウントを選択してください。
次はGoogle Colabratoryの実行ランタイムへのアクセス許可の確認メッセージがでてきます。許可をクリック。
次は、Googleドライブへのアクセス許可の確認です。「Googleドライブに接続」をクリック。
またどのアカウントを使うか確認があるので、使用アカウントを選択。
Googleドライブについて同じように許可を求められるので許可をクリック。
これでプログラムが最後まで実行されます。実行後、画面の下に処理にかかった時間と終了時間が表示されます。
こうなっていればプログラム実行完了です!!
コピペしたコードの下に実行後のログが出力されます。ここはチェック必要はありませんが、実行してく過程でどんなことをしているか追うことができます。
6.スプレッドシート確認する。
プログラムが正常に終了していれば、株情報が出力されているので確認しましょう。
ここからGoogleスプレッドシート確認します。
スプレッドシートを開くと、実行時に記載したファイル名(ここでは「株価データ+日付」)でシートが作成されているはずです。
クリックし開いてみると、J-QuantsAPIから取得したデータが確認できます。
取得した項目については API仕様:株価四本値(/prices/daily_quotes)で詳しく確認できます。出力した項目は左から「番号、日付、銘柄コード、始値(調整前)、高値(調整前)、安値(調整前)、終値(調整前)、取引高(調整前)、取引代金、調整係数、調整済み始値、調整済み高値、調整済み安値、調整済み終値、調整済み取引高、前場始値、前場高値、前場安値、前場終値、前場売買高、前場取引代金、調整済み前場始値、調整済み前場高値、調整済み前場安値、調整済み前場終値、調整済み前場売買高、後場始値、後場高値、後場安値、後場終値、後場売買高、調整済み後場始値、調整済み後場高値、調整済み後場安値、調整済み後場終値、調整済み後場売買高」となっています。
スプレッドシートはファイル出力でエクセルへの変換とダウンロードも可能。他の形式(ods、pdf、html、csv、tsv)にも変換可能。簡単に変換して出力できるのは便利ですね。
PC等にダウンロードしてエクセルで開いてみる。
そのまま英語表記でも問題ありませんが、日本語項目を追加して見やすいように加工してみましょう。エクセルの1行目に空行を追加し、下記に記載の日本語の項目名を追加してみます。日本語項目は下記に記載の項目名+タブ区切りの情報をコピペするとそれぞれの列にまとめて張り付けることができます。
NO 日付 銘柄コード 始値(調整前) 高値(調整前) 安値(調整前) 終値(調整前) 取引高(調整前) 取引代金 調整係数 調整済み始値 調整済み高値 調整済み安値 調整済み終値 調整済み取引高 前場始値 前場高値 前場安値 前場終値 前場売買高 前場取引代金 調整済み前場始値 調整済み前場高値 調整済み前場安値 調整済み前場終値 調整済み前場売買高 後場始値 後場高値 後場安値 後場終値 後場売買高 調整済み後場始値 調整済み後場高値 調整済み後場安値 調整済み後場終値 調整済み後場売買高
張り付けた結果はこんな感じになります。
念のため、取得した株価が正しいかYahooファイナンスでチェックしてみます。始値、高値、安値、終値、出来高すべて一致したので取得したデータに間違いはない。
まとめ
実行できたでしょうか?ちょっと長くなりましたが、こんな感じでJ-QuantsAPIから株価の情報をエクエルまで取得することができました。J-QuantsAPIでは他にも財務情報などいろいろな情報が取得できるので、これらの情報をもとに株式投資の参考にできればと思います。入力の銘柄コードをスプレッドシート等で用意し取り込めるようしたり、取り込んだデータをエクセルの関数使って加工したりすれば効率よく分析できそうですね。この記事を書きながら調べているとpandas-datareaderというライブラリを使って取得するほうが一般的な感じですね。次はpandas-datareaderを使った取得方法もまとめてみたいと思います。
ありがとうございました。
コメント