Pythonのpandasでドル円の移動平均を算出

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

テクニカル分析でよく移動平均が使われます。Pythonのpandasでドル円の移動平均を算出します。

データ準備

2009年9月から2019年8月までのドル円のデータを取得します。

import pandas_datareader.data as pdr
import datetime
start = datetime.datetime(2009,9,1)
end = datetime.datetime(2019,8,30)
JPUS = pdr.DataReader('DEXJPUS', 'fred', start, end).dropna()
JPUS.columns=['p'] #項目名をpに変更

pandasで移動平均

pandasのSeries.rolling().mean()で移動平均を算出します。window=250と指定することで、250日移動平均となります。

%matplotlib inline
import matplotlib.pyplot as plt
import pandas as pd
ma=pd.Series.rolling(JPUS, window=250).mean()

fig = plt.figure()
ax = plt.axes()
plt.plot(JPUS,label='JPUS', linestyle='dashed')
plt.plot(ma,label='250days ma')
plt.ylabel('JPUS')
plt.legend()

移動平均にすると、変動が平準化され傾向がわかりやすくなります。

次に収益率の250日移動ボラティリティ(標準偏差)を算出します。日次の標準偏差に√250をかけることで年率換算しています。

import numpy as np
JPUSr = JPUS['p'].pct_change().dropna() #収益率
msd = pd.Series.rolling(JPUSr, window=250).std()*np.sqrt(250)
plt.plot(msd)

2009年9月から2019年8月までの10年間のドル円の250日移動ボラティリティは、5%から13%で推移していることがわかります。ボラティリティは一定ではなく、変動が大きいときがあれば、小さいときがあることもわかります。この現象をボラティリティクラスタリングと呼びます。

さいごに

今回、pandasをでドル円の移動平均を算出しました。移動平均や移動ボラティリティを調べることで、時系列の傾向が動的にわかります。今回は、250日の移動平均を出しましたが、日次データについて「5」「25」「75」「200」の期間が使われることも多いので、試してみてください。

全5回で、金融データの取得から基本的なデータ加工について学び終えました。この知識を活かして、より高度な時系列分析やモデリングなどに取り組んでいきましょう。お疲れ様でした!