Pandas DataReaderを用いてFREDから為替データを取得します。
例として豪ドル円を取得します。
FREDからは米ドル円しか取得できない
FREDからは円との通貨ペアは米ドル円しか取得できません。
FREDはこちら↓
では豪ドル円が欲しい場合はどうしましょう?
答えは簡単で、米ドル円と豪ドル米ドルの2つを取得して計算するだけです。
米ドルとの通貨ペアはFREDで取得できるので、同様にどの通貨情報も得られます。
米ドル円 : DEXJPUS (円/米ドル)
豪ドル米ドル : DEXUSAL (米ドル/豪ドル)
豪ドル円 : DEXJPUS (円/米ドル) × DEXUSAL (米ドル/豪ドル) = (円/豪ドル) ・・・1豪ドル○○円
プログラム
為替取得は本日までとしています。
しかしFREDの最新データが本日分まで出ていないとエラーになります。
ですので、本日から15日前までの値を取得して、その中で最新値を見ています。
"""
FREDから現在価格を取得
"""
import pandas_datareader.data as pdr
import datetime as dt
# 計算したいペア 任意の名前
showpare = 'JPY_AUD'
dateend = dt.date.today() # 取得範囲のエンドは本日まで
datestart = dateend - dt.timedelta(days = 15)
tickerlist = ['DEXJPUS','DEXUSAL'] # 取得するtickerのlist
# DEXJPUS : JPY/USD
# DEXUSAL : USD/AUD
# DEXUSNZ : USD/NZD
# DEXCAUS : CAD/USD
# Fredからレートを取得
FREDdf = pdr.DataReader(tickerlist,'fred',datestart,dateend) # 日次データ
FREDdf['JPY_AUD'] = FREDdf['DEXJPUS'] * FREDdf['DEXUSAL'] # JPY/USD * USD/AUD = JPY/AUD
print(FREDdf) # 価格表示
# 最終行のデータを取得
# つまり、最新に最も近い
JPYUSD = FREDdf.iloc[-1]['DEXJPUS'] # JPYUSDの最終行の値
AUDUSD = FREDdf.iloc[-1]['DEXUSAL'] # AUDUSDの最終行の値
SHOW = FREDdf.iloc[-1][showpare] # 知りたい通貨ペアの最終行の値
print('本日 {}'.format(dateend))
print('現在 JPY_USD {} 円/米ドル'.format(JPYUSD))
print('現在 USD_AUD {} 米ドル/豪ドル'.format(AUDUSD))
print('現在 {} : {} 円/豪ドル'.format(showpare,round(SHOW,2)))
以上(^^)