5
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【J-Quants API】初心者向け!Cursorを使って投資分析してみよう!

Last updated at Posted at 2025-05-02

本記事の対象者

この記事は、初心者を対象にしています。APIの利用方法がわからない!という方向けの、Cursorというエディタを利用してJ-Quants APIを利用してみる記事です。

はじめに

こんにちは!J-Quants運営チームです。

今回は、J-Quants APIに興味があるけどAPIってなに?使い方がわからない・・・という方向けの記事をご用意しました。コーディングなんて全然わからないという人でも大丈夫!
今回は、Cursorというエディタを利用して、初心者でも安全にデータを取得して、簡単に分析する方法をご紹介します。

Cursorってなに?

超簡単にいうと、Cursorはコードを書けなくても「こうして」と言葉で指示するだけでプログラムを作ってくれるアプリです。
日本語で指示するだけで、自動でコーディングをしたり、分析を助けてくれたりするツールですので、コーディングの知識がなくても大丈夫。知識があればあったでもっと便利にJ-Quants APIを使えるようになります。

J-Quants APIのプランについて

本記事で使用する方法は、J-Quantsのプランによらずにお使いいただけます。最後に紹介するデータについては利用する期間が長いので、ライトプラン以上が必要になりますが、まず触ってみるだけならフリープランで大丈夫です!

目次

  1. J-Quants APIとは
  2. Cursorのインストールと無料プラン登録
  3. Pythonをインストールしよう(インストール済みの方はスキップ)
  4. Cursorを使って環境を整えよう①
  5. Cursorを使って環境を整えよう②
  6. APIを使ってデータを取得しよう(準備)
  7. APIを使ってデータを取得しよう(実践)
  8. データから指標を計算してみよう(応用①)
  9. データを自動で更新できるようにしよう(応用②)
  10. おわりに(さらなる活用)

それではやってみましょう!

本編

1. J-Quants APIとは

J-Quants APIとは、JPX総研が提供する、JPX公式のデータ提供サブスクリプションサービスです。日々の株価(四本値=始値・高値・安値・終値)や、上場会社の財務情報などを生データとしてお届けするサービスです。

今回は、まずフリープランに登録した状態から始めましょう。
フリープランへの登録は、J-Quants APIサイトからサインアップして、プラン選択が必要です。(サインアップだけして、プラン選択しないと利用できないので注意してください!)

J-Quants APIウェブサイトから登録をしてください。
image.png

サインアップして、プラン選択が完了するとこのように表示されます。
image.png

2. Cursorのインストールと無料プラン登録

今回の記事ではCursorが必要になります。Cursorは、AIと一緒にプログラミングできる無料のエディタです。たとえば、『株価データを取ってきて』と指示するだけで、AIがPythonコードを自動生成してくれます。

Cursorの料金についても簡単にご説明しておきます。

Cursorには、最初に2週間のプレミアム無料体験が付いています。
この間はすべての機能が使えますが、無料体験が終わった後も、無料プランでそのまま使い続けることができます。

今回の記事でやる作業は、すべて無料プランで問題ありません!

Cursorが人気のためか、2025年4月末現在、2週間の無料体験が終了してしまうと、無料プランが利用できない状況が続いているようです。そのため本記事では無料体験期間中にできることを執筆し、そこで作成したPythonコードを後から使いまわせるように考慮しています。

Cursorのインストール

では、Cursorをインストールしていきましょう。

Cursorの公式サイトにアクセスし、
『Download for Windows』または『Download for MacOS』のボタンをクリックして、インストールファイルをダウンロードします。

ダウンロードしたファイルを実行すれば、簡単にインストールが完了します。
起動したら、メールアドレス(またはGitHubアカウント)でサインインするだけです。

これで準備完了です!

(画像ではMacOSですが、Windowsユーザの方はWindowsOSと表示されます。)
image.png

3. Pythonをインストールしよう(インストール済みの方はスキップ)

今回はCursorにPythonを書いてもらいますので、Pythonのインストールがお済みでない方はインストールしましょう。
方法はいろいろありますが、今回はシンプルに、Pythonの公式サイトからダウンロードすることにします。

画面中央にDownloadと書かれたボタンからダウンロードし、インストールしてみてください。
image.png

注意!
インストールウィンドウが出てきたら、「Add Python to PATH」にチェックを入れるのを忘れないでください!チェックを入れることで、CursorがPythonを利用することができるようになります。

4. Cursorを使って環境を整えよう①

Cursorを開くとまずこんな画面が出てきます。
image.png

Open projectを選択し、適当な場所にフォルダを新規作成してOPENしてみてください。これでCursorのメイン画面が開きます。こんな感じです。

(J-QUANTS API_QIITAというフォルダ名で開いていることがわかります)
image.png

ここからCursorの日本語化もできるのですが、面倒なので今はやりません。やり方は他のサイトを参照してください!

最初に、Cursorのプライベートモードの設定をしましょう。上の画像の右上に歯車マークがあります。ここからSettingに進み、General>Privacy Modeから、Private Modeを選択しましょう。これであなたのデータは学習に利用されなくなります。
image.png

5. Cursorを使って環境を整えよう②

ここで、ひとつ大事なポイントをお伝えします。

これからプログラムを実行していくときは、
Cursorの中で、仮想環境(venv)を自分で作って、その中でコードを実行するようにしてください。

仮想環境とは、プロジェクトごとに使うライブラリを分けて管理できる、小さな専用スペースのことです。

仮想環境を使うと、

• ライブラリが他のプロジェクトに影響しない
• システム全体を汚さずに作業できる
• 将来エラーが起きにくくなる

という大きなメリットがあります。

Cursorは、プロジェクトを作成しただけでは仮想環境を自動で作ってくれないので、
自分で作る必要があります。やり方はとても簡単です。

Cursorに

仮想環境(venv)を作成してください

と指示してから作業を進めるだけです。
この一言をCursorに伝えると、AIがあなたの代わりに仮想環境の準備を進めてくれます。

Cursorへの指示はChatウィンドウで行います。
左下がAgentとなっていることを確認してください。askとなっている場合は会話はしてくれますが、プログラムの実行はしてくれません。
image.png

するとCursorがプログラムを書いて実行の許可を求めてきますので、Runを押して承認しましょう。
image.png

今度は仮想環境の有効化の承認を求めてきました。このように一つ指示を出すと、付随して必要な承認を求めてきますので、Runボタンで承認をしていきましょう。
image.png

• 仮想環境を作成する
• 仮想環境をアクティブにする(有効にする)
• その中でコードを実行する

これを意識しておくだけで、
今後のプログラミングもデータ分析も、トラブルなく快適に進められるようになります!

それでは、仮想環境の準備ができたら、いよいよAPIを使ったデータ取得に進んでいきましょう!

6. APIを使ってデータを取得しよう(準備)

J-Quants APIではIDとPWを使ってリフレッシュトークンやIDトークンという、APIを呼び出すためのトークンを取得する仕様になっています。ややこしいのでここら辺も全部Cursorちゃんに任せていきます。

まず最初にIDとPWを安全にCursorに保管します。これを必要なときに呼び出してトークンを取得できるようにしてあげる準備をしましょう。

Cursorのメイン画面の左側(J-QUANTS API_QIITAと書かれたすぐ右)に、ファイル作成アイコンがありますので、これをクリックしてファイルを作成します。

ファイル名は.envとしてください。

ここで注意点です!拡張子(.txtなど)は付けず、必ずピリオド(.)から始まる .env だけにしてください。
image.png

この.env ファイルには、
APIにログインするための情報を保存しておきます。

記述内容は次の通りです。
J-Quants APIにサインアップした時に利用したメールアドレスとパスワードを入力しましょう。

の前後にスペースなど入れないよう注意してくださいね。

JQUANTS_ID=あなたのメールアドレス
JQUANTS_PASSWORD=あなたのパスワード

画像ではそのままにしていますが、実際にはご自身の登録済みのメールアドレスとパスワードに置き換えて入力してください。
image.png

.envファイルを使う理由?

ここで少しだけ、なぜ .envファイルを使うのかを説明します。

もしプログラムの中に直接メールアドレスやパスワードを書いてしまうと、
うっかりファイルを共有したり、クラウドにアップしたときに
大事な情報が漏れてしまうリスクがあります。

.envファイルに分けて保存しておけば、
• プログラム本体には機密情報を書かずに済む
• ファイル共有時にも .envだけ除外すれば安全

というメリットがあります。

セキュリティの基本としてとても大切なやり方なので、ぜひ覚えておきましょう!

CursorにAPI仕様書を教えてあげる

最後に、CursorにAPI仕様書を教えてあげます。

プロンプト入力欄に次のように指示してください。

このプロジェクトでは、J-Quants API(@https://jpx.gitbook.io/j-quants-ja)の仕様に基づいてコードを書いてください。
python-dotenvライブラリを使用して.envファイルから環境変数を読み込んでください。
必要なパッケージをインストールしてください。この時点ではpythonファイルを作成しないでください。

これを一度伝えておくことで、CursorがどんなAPIルールに沿ってコードを書けばいいかを理解してくれます。

また.envから必要な情報を読み取れるようになります。

(この時点でCursorから「必要なパッケージのインストールをします」などと言われたら承認しておきましょう!)

これで、APIを使ったデータ取得の準備はバッチリです!

7. APIを使ってデータを取得しよう(実践)

ここからは、いよいよJ-Quants APIを使って、実際に株価データを取得する実践編に入っていきます。

やることは、大きく3つです。

  • トークンを取得する
  • 株価データを1日分取得する
  • 株価データを1か月分まとめて取得する

トークンの取得

まず最初に、トークンを取得します。

APIは、ログイン認証を通さないとデータにアクセスできません。
このため、まずは、.envファイルに保存しておいたメールアドレスとパスワードを使ってログインし、アクセストークン(データ取得用のパスポート)を取得します。

Cursorにこう指示してください。
ちょっと呪文のようですが、Cursorが間違えないようにするためですのでご容赦ください!

J-Quants APIのIDトークンを取得するPythonコードを書いてください。

.envファイルには、以下の環境変数があります。
JQUANTS_ID(メールアドレス)と JQUANTS_PASSWORD(パスワード)です。dotenvを使って読み込んでください。

ステップは以下の通りです。

【1】https://api.jquants.com/v1/token/auth_user に対してPOSTリクエストを行い、
JSON形式で mailaddress と password を送信してください(小文字で)。  
→ 取得できる "refreshToken" を変数に保存してください。

【2】次に、そのrefreshTokenを使ってIDトークンを取得します。  
このAPIでは、refreshTokenは**クエリパラメータとしてURLに含めて**送信します。  
以下がJ-Quants公式ガイドに載っているサンプルコードです:

```python
import requests
import json

REFRESH_TOKEN = "YOUR refreshtokenID"
r_post = requests.post(f"https://api.jquants.com/v1/token/auth_refresh?refreshtoken={REFRESH_TOKEN}")
r_post.json()

生成されたコードを実行すると、ターミナルにトークンが表示されます!

コードの実行を求められることがありますので、その場合はRunを押して実行してあげるか、実行してくださいとプロンプトから指示をしましょう。

なぜか全然うまくいかない時もあります。そんな時は同じプロンプトを数回投げ続けてみましょう。それでもダメな場合、新しいプロジェクトを作り直すとうまくいく場合があります。

株価データを1日分取得する

トークンが無事取得できるようになったら、次は株価を取得してみましょう。
フリープランの場合、直近12週間を除く2年分のデータが取得可能です。
(ライトプラン以上の方は直近12週間の制限はありません。フリープランの方だけ注意してください。)

試しに2023年12月29日のデータを取得してみましょう。

Cursorに以下のように指示します。

2023年12月29日の株価データを取得してCSVに保存するPythonコードを記述し実行してください。
get_daily_quotes.pyとしてください。
株価データ取得には株価四本値(/prices/daily_quotes)を利用してください。
@https://jpx.gitbook.io/j-quants-ja/api-reference/daily_quotes

コードを実行すると、指定した1日分の株価情報がCSVファイルに保存されるはずです!
(Cursorが気を利かせて、試しに1銘柄しか取得してくれないなどであれば、全銘柄取得してくださいとお願いすると取得してくれます。)

この作業で、

  • データ取得
  • 保存
    の基本操作を一度体験できます。

株価データを1か月分まとめて取得する

そしていよいよ、本番です。

2023年12月1日から2023年12月31日までの1か月分の株価データをまとめて取得しましょう!

Cursorへの指示はこうです。

先ほどのget_daily_quotes.pyを、2023年12月1日から2023年12月31日までの株価データを取得して保存するコードに書き換えてください。
取得したデータは、stocks.csvというファイルにまとめて保存してください。
銘柄コードを指定せず、日付だけを指定すると全銘柄取得できます。

最後の一文を入れることで、非効率な取得の仕方を防ぐことができます。コードを書ける必要はないですが、仕様書を読んでおくとデータ取得の時間短縮になりますね。

さて、これができると、日々の株式分析の土台となるデータファイルが完成します!

今回ここまでできれば、もうどのデータであっても自分で取得できるようになったということです!

8. データから指標を計算してみよう(応用①)

次は応用編です。

これからやることは、

  1. 財務情報サマリーデータを1か月分取得する
  2. 上場銘柄情報を取得して、銘柄コードで財務データに結合(Market Segmentを追加)
  3. ROEの計算列を追加
  4. 株価データと結合して、PBR(株価÷BPS)、PER(株価÷EPS)を計算

一気にやることが多くなってきた感じがしますが、一つずつ進めていきましょう!

1. 財務情報サマリーデータを1か月分取得する

これは簡単です。さっきと同じようにCursorに指示を出します。

2023年12月のすべての日の財務情報データを、銘柄を指定せず取得するPythonコードを記述し実行してください。
get_statements.pyとしてください。
取得したデータは、statements.csvにまとめて保存してください。
財務情報(/fins/statements)エンドポイント
@https://jpx.gitbook.io/j-quants-ja/api-reference/statements

正直、この辺りから一度の指示ではすんなり行かないことが出てくると思います。
(本記事執筆中も、API仕様書をきちんと読まずにコードを書いてエラーが発生しています)

そのような場合、Cursorが何度かスクリプトを修正して承認を求めてくることが増えてきます。一つずつ確認していくことが重要です。ちょっと違うなと思ったら、言葉で修正をお願いするのもいいでしょう。

うまくいくとstatements.csvのようなファイルが生成されるはずです!
中身をみて確認しておきましょう!
image.png

ちょっとステップアップ
Cursor上でcsvを色分けして表示する方法は、拡張機能ボタンからRainbow csvと検索して出てくる拡張機能をインストールするとできます!一番上の右にあるブロックみたいなやつが拡張機能ボタンです。一気にそれっぽくなりますね!
image.png

2. 上場銘柄情報を取得して、銘柄コードで財務データに結合(Market Segmentを追加)

どんどんいきましょう。

J-Quants APIで配信する上場銘柄一覧というファイルには、ある銘柄がどの市場区分(プライム・スタンダード・グロースなど)に所属していたかわかる情報(MarketCodeName)が含まれています。

これはとても便利なので、上場銘柄情報を取得してみましょう。

2023年12月1日から2023年12月31日の上場銘柄一覧(/listed/info)を取得するPythonコードを記述し実行してください。
get_listed_info.pyとしてください。
listed_info.csvに保存してください。
@https://jpx.gitbook.io/j-quants-ja/api-reference/listed_info

これで取得できたはずです。

次は、先ほど取得した財務情報に市場区分情報を追記したいので、こう指示を出します。

statements.csvの各行にMarketCodeNameを追記したいです。
各行からDateとCodeを参照し、listed_info.csvからDateとCodeが同じもの探し、statements.csvの各行にMarketCodeNameを追記してください。

うまくいくと市場区分がstatements.csvに追加されます。
財務情報が開示された日の、その銘柄の市場区分を把握することができるようになりました!
image.png

これで、2つのファイルにあるデータを結合することができるようになりました。
市場区分を追記することで、後々「プライム市場の銘柄だけを抽出したい」などにも対応できるようになります。結合のパワーを感じてください!

続いて、データにある数値を用いて指標を算出していきましょう!

3. ROEの計算列を追加

ROEなど指標を用いる株式分析は、もはや定番ですよね。

statements.csvの中にはROEを計算するための情報があります。

具体的には、ROE=Profit÷Equity で求めることができます。
ProfitとEquityというのは、財務情報データにあるデータ項目名です。

ではCursorに指示を出していきましょう。

statements.csvの各行に対してROE=Profit÷Equityを算出して追記してください。

私の環境では、新しいファイル(statements_with_roe.csv)が作成され、無事にROEが追加されていました。

ファイルを指定しないと勝手に 気を利かせて新しいファイルが作成されることがあります。どうしたいか明確な指示を出すと、Cursorもそれに応えてくれます!

最後に、株価データを用いた指標算出を行いましょう。

4. 株価データと結合して、PBR、PERを計算

先ほど取得した株価データを利用して、PBRとPERを計算します。
Cursorが間違えないように、以下のように慎重に指示を出しましょう。

先ほど作成したstatements_with_roe.csvとstocks.csvにある情報を用いて、
それぞれの日のPBRとPERを算出してstatements_with_roe.csvに追記してください。

すでにあるファイルであることを明示しないと、データの取得からやり直してしまうことがありますのでしっかり記述してみました。

もし一つ前の作業で違う名前のcsvファイルが作成されていたら、それに名前を変更してご利用ください。

これでPBRとPERがファイルに追記されたはずです!(新しいファイルとして保存されている方もいるかもしれません。)

次は最後です。データの更新を自動でできるようにしましょう。

9. データを半自動で更新できるようにしよう(応用②)

先ほど作った、get_daily_quotes.pyの中身を見てみましょう。

おそらく、日付を指定する箇所があるはずです。
image.png
ここに、2025-1-20から2025-1-31までと、直接ファイルを修正してみます。
その後、画像の右上にある▶️ボタンを押して、このPythonコードを実行してみましょう!

Cursorの画面下部にターミナルと呼ばれるウィンドウが立ち上がり、株価を取得している様子が実況されましたか?

全部の期間のデータを取得すると、stocks.csvの中身が書きかわっているはずです。
確認しましょう。

ちゃんと2025/1/20からになっていますね。
image.png

日付指定を効率化する

ただ、このままだと、株価・財務情報・上場銘柄一覧を取得するそれぞれのPythonコードの日付を修正しなくてはならず、面倒です。

そこで、期間を指定するファイルを作成して参照するように修正してみましょう。
Cursorの左側から、ファイルを新規作成し、date_range.jsonという名前をつけましょう。

次に、date_range.jsonの中に以下を記述して保存してください。

{
  "start_date": "2025-02-03",
  "end_date": "2025-02-04"
}

こんな感じになったはずです。
image.png
左側にdate_range.jsonが存在し、その中身が右側に表示されています。

では次に、Cursorにこのように指示してみてください。

これまで作った以下のpythonコードに対して、日付を期間指定している部分を、date_range.jsonを参照するようにコードを修正してください。
get_daily_quotes.py
get_listed_info.py
get_statements.py

結構な丸投げ文章ですよね(笑)
うまくできたでしょうか。これで、いちいち全てのPythonコードの日付を修正しなくても、date_range.jsonの一つだけを書き換えれば済むようになりました。便利ですね。

過去データを残して新しいデータを追加させる

かなり楽になりました!

ただ、このままだと、新しい日付で取得したデータデータだけがファイルに保存されてしまい、以前取得したデータが削除されてしまいます。

ですのでこれを修正していきます。

Cursorへはこう!

これまで作った以下のpythonコードに対して、実行して取得したデータをすでに存在するファイルに追加するよう修正してください。すでに存在するデータは削除しないようお願いします。
get_daily_quotes.py
get_listed_info.py
get_statements.py

どこまでもCursorにお願いしていくスタイル。これでいいんです。

どうでしょうか?
これで、date_range.jsonで期間を指定すると、どのPythonコードでも同じ期間でデータ取得ができるようになりました!

ちょっとステップアップ
今回はフリープラン(直近12週間が取得できない)の方向けにも、そうではない方向けにも対応するため、日付を直接指定する方法を紹介しました。
有料プランの方であれば「今日までデータを更新する方法」などもCursorと対話しながら作ることもできると思いますので、試してみてくださいね。

Pythonファイルの実行の仕方

CursorのAgentを使わなくても、Python(get_daily_quotes.pyなど)を表示して▶️ボタンを押すことで実行できます。

ここで作ったPythonファイルは無料期間が終わった後でも使えますので、ぜひ利用し続けてくださいね!

10. まとめ(さらなる活用)

いかがでしたでしょうか?

コーディングが全くできなくても、日本語だけでデータの取得や、市場区分のようなデータの結合、ROEなど指標の計算ができるようになったと思います。

データ分析は敷居が高い!と思っていた方も、実際に手を動かしてデータを触ってみることで、苦手意識が薄らいだり、株式分析に興味を持っていただけたら幸いです。

今回は初心者向けということで触れていませんが、データさえ手元にあれば、Cursorを使ってもっと色々なことができるかもしれません。

以下はアイデアの一例です。

  • 過去10年間、純利益(Profit)が一度もマイナスになっていない銘柄を抽出
    • 10年分の財務データを取得(スタンダードプラン以上が必要です)
    • 通期決算情報のみを抽出
    • Profitがポジティブなものを抽出
  • 過去3年間、PBRが改善している銘柄だけを抽出
    • 3年分の財務データを取得(ライトプラン以上が必要です)
    • 3年分の株価データを取得(同上)
    • 財務データの通期決算の日付時点における株価を用いてPBRを計算
    • 同一銘柄の過去3年間のPBRが増加しているものだけを抽出

新聞やニュースなどで目にする投資分析の切り口のいくつかは、J-Quants APIのデータで実践可能です。

Cursorを使って(無料期間中に)色々試してみてはいかがでしょうか!!

ディスクレーマー

当記事は、J-Quantsを利用した金融データ分析に関する技術的事項の共有を目的としたものであり、株式などの投資商品への投資の推奨を目的とするものではありません。

また、本記事の内容をもとに投資等を行った結果損害等が生じた場合においても、一切の責任を負わないものとします。

J-Quantsとは

J-Quantsとは、ヒストリカル株価データ・財務データなどの金融データを取得できる、個人投資家向けのAPIデータ配信サービスです。投資にまつわるデータを分析しやすい形式で提供し、個人投資家の皆様がデータを活用しやすくなることを目的としております。

個人投資家が投資などのために金融データを分析する際の大きな障壁は、整形された金融データの取得が難しいことであるという理由から、2022年7月にベータ版をリリースいたしました。ご好評の声を頂いたこともあり、2023年4月より正式にリリースしております。

参考リンク

J-Quants API

JPX総研(フロンティア戦略部)について

JPX総研のフロンティア戦略部ではJ-Quantsなどの新しいプロダクトを内製開発しています!

キャリア採用も通年で行なっておりますので、ご興味がある方は以下のリンクをお確かめください!

JPX総研(フロンティア戦略部)採用ページ

5
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?