Bank of Canada(カナダ銀行)はカナダの中央銀行です。
カナダ銀行は”Valet API”と呼ばれるWebAPIを公開しています。今回はこのWebAPIを利用してカナダ銀行のデータにアクセスしてみます。Valet APIを利用することで、為替レートや金融データを取得することができます。
Valet APIに関する公式ドキュメントはこちらになります。
pandas_datareaderを使ったデータ取得
pandas_datareaderを用いることで、比較的簡単にデータ取得が可能です。JPYCADの為替データを取得してみます。
import pandas_datareader as pdr
# JPY/CAD
data = pdr.bankofcanada.BankOfCanadaReader('FXJPYCAD').read()
data
APIの使い方
公式ドキュメントのページでは、取得したいデータを指定すると、それに対応するリクエストURLを取得できます。
少しスクロールするとURLを取得できますので、こちらをコピーします。
import requests
url = 'https://www.bankofcanada.ca/valet/series/FXAUDCAD/json'
response = requests.get(url)
json = response.json()
json
このコードで、上記と同じ結果を得ることができます。
価格データを取得したいような場合には、
/observations/{seriesNames}/{format}
を用いると取得できます。
import pandas as pd
from io import StringIO
url = 'https://www.bankofcanada.ca/valet/observations/FXUSDCAD%2CFXEURCAD/json?start_date=2023-01-23&end_date=2023-07-19'
response = requests.get(url)
json = response.json()
json
Tickerの調べ方
各種データを取得するために必要なTicker情報はAPIで取得可能です。
import requests
import pandas as pd
# APIのルートURL
url = 'https://www.bankofcanada.ca/valet/lists/series'
response = requests.get(url)
json = response.json()
# pandas.DataFrameに整理
df_list = pd.DataFrame(json['series']).T
あるいは、こちらのページのcsvファイルで為替に関してはTickerを確認できそうです。
例えばCPIを探して、pandas_datareaderを使って取得してみます。
df_list[df_list['description'].str.contains('CPI')]
pdr.bankofcanada.BankOfCanadaReader('STATIC_INFLATIONCALC').read()