【AWS】J-Quants API + AWS Athenaを用いた金融データ分析
日本取引所グループ(JPX)が提供しているJ-Quants APIというサービスがあります。
このサービスではJPXが公式に提供する金融情報(現物情報、デリバティブ情報、指数情報、企業情報など)をAPIエンドポイント経由で取得することができます。
無料/ライト/スタンダート/プレミアムの4種類の利用枠があり、無料利用枠でも企業の財務データや株価といった種々の情報を取得することができます。
今回はJ-Quants APIで各種金融データを取得してAWS Athenaで分析する、というシナリオを想定してハンズオンを行ってみます。
J-Quants APIの利用登録
以下のサイトにアクセスして利用登録を行います。
今回は検証目的のため、無料利用枠で登録します。
登録が完了したらサインインし、トップページからリフレッシュトークンを取得します。
リフレッシュトークンはAPIアクセス用のトークン(IDトークン)を発行するためのトークンです。
取得したリフレッシュトークンを用いて、IDトークンを取得します。
各種情報を取得する際はこのIDトークンをAuthorizationヘッダに設定してAPIエンドポイントにリクエストを送る形となります。
各種トークンは
- リフレッシュトークン: 1週間
- IDトークン: 24時間
の有効期限があるため、トークン取得の流れは自動化orスクリプト化しておくと良さそうです。
データ取得用のLambda関数の作成
APIエンドポイントにアクセスして金融情報(今回は「上場銘柄一覧」)を取得し、
取得結果をJSON形式でS3に保存します。
以下のpythonスクリプトをLambda関数としてデプロイしました。
Lambda実行ロール(s3:PutObjectが許可されたポリシーをアタッチしておきましょう)
を設定後、関数を実行して以下のようにjson形式でS3にデータが保存されれば成功です。
実行するAPIによっては情報の取得にそれなりに時間がかかるため、
Lambda関数のタイムアウト値に留意しましょう。
分析用テーブルの作成
分析用テーブルはAthenaでクエリ実行して作成しても良いのですが、面倒なのでAWS Glueを使用します。
AWSマネジメントコンソールからGlueのコンソールを開き、左ペインからData Catalog > Crawlerを選択します。
Create Crawlerから新しいCrawlerを作成します。
Data Sourceには先ほどJSONファイルを保存したS3バケットを選択しましょう
Crawlerの作成後、Run CrawlerからCrawlerを実行します。
実行が完了したら、左ペインのData Catalog > Database > Tables
から作成済みのテーブルを確認してみましょう。
以下のようにJSONファイルの内容に基づいてテーブルが作成されていればOKです。
Athenaによるクエリ実行
AWSマネジメントコンソールからAthenaのコンソールを開き、クエリエディタを開きます。
先ほど作成したテーブルに対して、以下のようなクエリを実行してみます。
select *
from jquants_knowledge_base_bucket_s3
where sector17code='15';
クエリ実行の結果、以下のように17業種コードが15(業種名:銀行)の上場企業の一覧が取得できました。
まとめ
J-Quatns APIとAWS Athenaを用いることで、簡単に金融データの取得と分析を行うことができました。
個人的にJ-Quants APIを利用して嬉しいポイントは以下になります。
- 無料利用枠でもそれなりの情報にアクセスできる
- JPXが提供しているAPIのため、データの正確性や適時性が一定程度担保されている
- 日本語のAPI仕様書が充実している
今回は上場企業一覧の情報をサンプルとして用いましたが、企業の財務情報や株価の情報も公開されており、分析用途としては非常に充実している印象です。