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

こんにちは、タクロウ(@takuro_109)です!

テクニカル分析でよく移動平均が使われます。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」の期間が使われることも多いので、試してみてはいかがでしょうか。

参考記事

Pythonのpandas-datareaderでドル円データを取得 Pythonのmatplotlibでドル円と景気循環の関係を可視化