通貨ペアの時間帯別変化率


通貨ペアの時間帯別変化率

通貨ペアの変化率を時間帯別で見てみる。


環境


  • Ubuntu 18.04 LTS 64bit版

  • Jupyter Notebook 5.7.4


ヒストリカルデータのダウンロード

ここではUSDJPYの2009年1月1日から2018年12月31日までの1分足データをダウンロードする。「ヒストリカルデータのダウンロード」の記事を参照。


ヒストリカルデータの加工

ここでは上でダウンロードしたデータを使って2009年1月1日から2018年12月31日までの1時間足を作成する。「ヒストリカルデータの加工」の記事を参照。


時間帯別変化率の計算

%matplotlib inline

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

filename = '~/py/historical_data/USDJPY60.csv'
df = pd.read_csv(filename, index_col=0)
index = pd.to_datetime(df.index)
df.index = index
cl = df.close
log_cl = cl.apply(np.log)
change = log_cl - log_cl.shift()
change = change - change.mean() # トレンドの除去
std = change.std()
n = len(change)
upper_limit = pd.Series(np.zeros(n), index=change.index)
lower_limit = pd.Series(np.zeros(n), index=change.index)
for i in range(n):
upper_limit.iloc[i] = std*np.sqrt(i+1)
lower_limit.iloc[i] = -std*np.sqrt(i+1)
plt.figure(figsize=(6, 20))
cnt = 0
for i in range(6):
cnt += 1
plt.subplot(6, 1, cnt)
for j in range(4):
hour = i*4+j
change_hour = change[change.index.hour==hour]
plt.plot(change_hour.cumsum(), label='hour='+str(hour))
plt.plot(upper_limit, color='black', linestyle=':')
plt.plot(lower_limit, color='black', linestyle=':')
plt.title('Change By Hour')
plt.xlabel('Date')
plt.ylabel('Cumulative Change')
plt.ylim(-0.35, 0.35)
plt.legend(loc='lower left')
plt.axhline(y=0.0, color='black', linestyle=':')
plt.tight_layout()
plt.show()

output_1_0.png


時間帯別変化率の特徴

時間はニューヨーク・クロージング基準にしているので、+7時間(夏時間では+6時間)すれば日本時間になる。

印象としては0〜3時では上昇、4〜7時では下落する傾向があるように見える。それ以外の時間帯では特に傾向は見られない。日本時間で言えば7〜10時(夏時間6〜9時)では上昇、11〜14時(夏時間10〜13時)では下落しているわけで、仲値の時間(9時55分ころ)に向けて上昇し、仲値通過後は反落していることが伺える。

なお、グラフの中の点線はUSDJPYとボラティリティが等しいランダムウォークのデータが標準偏差の範囲内に入る上限と下限である。どの時間帯でも標準偏差の範囲を超えることはなかったが、これを小さいと見るかは何とも言えない。