Pythonのpandas-datareaderでドル円データを取得

こんにちは、たくろー(@takuro_data )です!

Pythonで金融データ分析やバックテストをするために、基本的なデータの取得・加工を学んでいきましょう。

今回は、pandas-datareaderモジュールを使って、ドル円データを取得してみます。

環境

  • macOS High Sierra
  • Python3.7.0
  • pandas0.23.4
  • pandas-datareader0.7.4

ドル円データの取得

FRED(Fedral Reserve Economic Data)から、1971年からのドル円の日次データを取得します。FREDは、セントルイス連邦準備銀行(米国に12ある連邦準備銀行のひとつ)が運営している経済統計データ集です。

import pandas_datareader.data as pdr
import datetime
start = datetime.datetime(1971,1,4)
end = datetime.datetime(2019,8,30)
JPY_USD = pdr.DataReader('DEXJPUS', 'fred', start, end)

DataReader(stock_code, source, start, end)の形式で、データを取得することができ、endを省略すると、直近までのデータがダウンロードされます。引数は以下の通り。

引数説明
stock_codeデータセット名
sourceデータ取得先
start取得開始日付
end取得終了日付

データ取得先には以下があります。詳細はpandas-datareaderのドキュメントを参照ください。

グラフの表示

取得したデータをmatplotlibモジュールを用いて表示します。

%matplotlib inline
import matplotlib.pyplot as plt
JPY_USD.plot(color='darkblue')
plt.ylabel('JPY/USD')

1971年以前の固定相場制の1ドル360円から、円高に進み2000年代以降は75円から135円の間で推移していることがわかります。

MEMO
「%matplotlib inline」は、Jupyter Notebookで、ノートブック上にグラフを描画する際に指定する記述です。Pythonでは頭に%が付いたコマンドをマジックコマンドと呼びます。

データの切り取り

2009年9月〜2019年8月のデータを抽出してグラフ表示します。loc[ ]スライス機能(:)を用いて必要なデータを指定できます。

JPY_USD1 = JPY_USD.loc["2009/9/1":]
JPY_USD1.plot(color="darkblue")
plt.ylabel('JPY/USD')

2008年9月のリーマン・ブラザーズの破綻後も、ギリシャの財政破綻や2011年3月11日の東大日本大震災で円高が進み、2011年10月31日に1ドル75.32円をつけました。その後、2012年11月の政権交代から日銀金融緩和などアベノミクス相場で円安が進みました。

日次データを月次データに変換

2009年9月〜2019年8月のデータを、resamapleメソッドを用いて日次データから月次データに変換して、データ末尾5行を表示します。

JPY_USD2=JPY_USD1.resample('M').last()
JPY_USD2.tail()

.last()とすると月末の値、.first()とすると月の初め、指定しないとその期間の平均値となります。resampleの引数の日付関連の頻度コードは以下の通り。

  • D:日次
  • B:毎営業日(平日)
  • W:週次(日曜始まり)
  • M:月末ごと
  • SM:15日と月末ごと
  • Q:四半期末ごと
  • AまたはY:年末ごと

参考 DataFrameの時系列データのリサンプリングPyQドキュメント

グラフを表示すると、日足のチャートと比べて月足のチャートは細かい変動がなくなっていることがわかります。

JPY_USD2.plot(color="darkblue")
plt.ylabel('JPY/USD')

さいごに

今回は、pandas-datareaderでドル円のデータを取得しました。データの抽出やサンプリング期間の変更が容易にできました。

次回は、取得したデータから収益率を算出する方法を学びます。

Pythonでドル円の対数価格・収益率・対数収益率を算出