superi

主にキャリアと金融を嗜むメディア

【FX】仲値時間にかけて円安になるのか、今度は5分足で検証してみた


スポンサーリンク

FXのアノマリーに、仲値時間にかけて円安になるというものがあります。これは、東京時間では日本企業が外国企業への支払いのためドルの需要が高まり、金融機関は銀行における1日の外貨の取引価格とされる仲値を決定する時間前(午前10時前)までにドル買いを強めることに起因するとされています。

かなり前に仲値時間にかけて円安になるのかを検証しました。
www.superi.jp
その結果、1時間足での検証で、9時台において0.3銭円安になっていることを確認しました。
しかし1時間足では粒度が粗く、そのため円安の傾向が顕著にでなかったのではと思い、5分足で再度検証してみました。

前提条件

検証データは前回取得&作成したデータを利用します。
www.superi.jp
09:30の始値で買って、09:55の始値で売るというケースで検証します。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
import seaborn as sns

#データの読み込み
ticks_5T = pd.read_csv('usd_jpy_5T.csv',delimiter=',',parse_dates=['time'])
ticks_5T.set_index('time', inplace=True)


# 検証用と収益計算用にデータ分割
ticks_5T_train = ticks_5T[:'2015-12-31 23:59:00']
ticks_5T_test = ticks_5T['2016-01-01 00:00:00':]


# 始値の差分を計算
from datetime import time

diff = ticks_5T_train['open'].diff(5)
diff = diff.loc[time(9, 55)]

#ヒストグラムのプロット
diff.hist(bins=24,range=[-0.6,0.6])

日々の09:55の始値から09:30の始値をひいた値のヒストグラムをプロットしたものがこちらになります。
f:id:ukichang:20190401140836p:plain
0-0.05のところにピークがありますね。0以上のビンはすそ野が広く、0以下のビンでは-0.2までに集結しているように見えます。

平均Pips

平均を計算してみます。

diff['open'].mean()

平均は、0.0103ですので、若干円安傾向があることが伺えます。

曜日別

次に曜日別に差異があるか検証してみました。

# 曜日別に集計
diff1 = diff.reset_index()
diff1['week_day'] = diff1['time'].dt.dayofweek
diff1.groupby('week_day').mean()

f:id:ukichang:20190401142830p:plain
0が月曜、6が日曜となっています。4の金曜がけっこう円安傾向にありますね。週末に向けたドル需要に対する買い付けを強めているためと考えられます。

バックテストによる収益推移

では毎週金曜に09:30の始値で買って、09:55の始値で売るというトレードを繰り返した場合どうなるでしょうか。先ほど分割したtestデータにこのロジックを当てはめて検証してみます。取引コストとして、私が普段使用しているSBI FXにならって、スプレッド0.29pipsかかる想定をしています。

#09:55-09:30
diff_test = ticks_5T_test['open'].diff(5)
diff_test = diff_test.loc[time(9, 55)]

# Extract Thursday and Friday.
diff_test = diff_test.reset_index()
diff_test['week_day'] = diff_test['time'].dt.dayofweek
#print(diff_test.groupby('week_day').mean())
diff_test = diff_test[(diff_test['week_day']==4)]
diff_test.set_index('time', inplace=True)

#スプレッドをのっける
diff_test_sp = diff_test['open']-0.0029
#diff_test_sp['profit']=diff_test_sp.cumsum()
diff_test_sp = pd.concat([diff_test_sp.cumsum(),ticks_5T_test['close']],axis=1, join='inner')

# Plot
diff_test_sp.plot( secondary_y=['close'])

青色が累積の収益です。参考として緑がドル円のプライスです。 f:id:ukichang:20190401143737p:plain
2018年は堅調に収益が積み上がっていますが、それ以前は行ったり来たりという感じですね。トレンドとして円高にあるのかなと思ったのですが、そうでもないようです。

今後の課題

今回はぱっとしない結果でした。
09:30の始値で買って、09:55の始値で売るケースを想定しましたが、売買のタイミングを調整した場合どうなるかを次回検証したいと思います。