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)))

以上(^^)