USDJPYの動きを予測する4

検証したいこと

  • 510日が翌日USDJPY上昇or下落にどれほど影響しているか
  • 月末日が翌日USDJPY上昇or下落にどれほど影響しているか

https://www.fxtrade-lab.com/11015

サイトによると、輸入企業のフローが入りやすくドル円は上昇しやすいみたい。(ドル→円の需要が入る)

また、月末も輸入のフローが入りそうなので、一応確認。

やったこと

  1. 毎月5,10,15,20,25(休みなら翌営業日)の前営業日を選択する(フラグたてる)
  2. 毎月最終営業日の前営業日を選択する(フラグたてる)
  3. フラグたった場合と、それ以外でUpDownに違いがありそうか

いま、翌営業日のUpDownを予測しているので、9/5のUpDownは9/4の正解ラベルとして格納しているので、510日の前営業日を選択。

フラグが立っている(510日の前営業日である)のであれば、翌営業日は上昇しやすいのでは?ということ。

コード

#  510日の前営業日にフラグ立てていることに注意
def specific_date(time_index: np.array) -> pd.Series:
    #  empty series
    fivetenday = pd.Series(np.zeros(len(time_index)), index = time_index)
    lastday = pd.Series(np.zeros(len(time_index)), index = time_index)

    first_index = time_index[0]
    last_index = time_index[-1]
    target = first_index

    while target <= last_index:

        #  make mark to slice
        fiveten_mark = []
        fiveten_mark.append(target.replace(day = 5))
        fiveten_mark.append(target.replace(day = 10))
        fiveten_mark.append(target.replace(day = 15))
        fiveten_mark.append(target.replace(day = 20))
        fiveten_mark.append(target.replace(day = 25))

        lastday_mark = target.replace(day = calendar.monthrange(target.year, target.month)[1])

        #  choose target date from time index
        for j in range(len(fiveten_mark)):

            if fiveten_mark[j] > first_index:
#                 selected = [i for i in time_index if i >= fiveten_mark[j]][0]
                selected = [i for i in time_index if i < fiveten_mark[j]][-1]
                fivetenday[selected] = 1

        if lastday_mark <= last_index:
#             selected = [i for i in time_index if i <= lastday_mark][-1]
            selected = [i for i in time_index if i <= lastday_mark][-2]
            lastday[selected] = 1

        #  next target month
        target = target + relativedelta(months = 1)
    
    return fivetenday, lastday

five_ten_days, last_days = specific_date(USDJPY.index.values
)
df_features['510Flag'] = five_ten_days
df_features['LastDayFlag'] = last_days

view = pd.concat([data['UpDown'], data['510Flag']], axis = 1)
ax = sns.countplot(x = '510Flag', hue = 'UpDown', data = view)
fig = ax.get_figure()
fig.savefig('output/fig1.png')

view = pd.concat([data['UpDown'], data['LastDayFlag']], axis = 1)
ax = sns.countplot(x = 'LastDayFlag', hue = 'UpDown', data = view)
fig = ax.get_figure()
fig.savefig('output/fig1.png')

抜き出しているので、変数が一致していなかったりします。

結果

  • 510日 f:id:iiiiikamirin:20200929081611p:plain

  • 最終営業日 f:id:iiiiikamirin:20200929081919p:plain

見事にどちらも影響なさそうでした!!ありがとうございます!!

日次ではなく日中の動きといったもっと短いスパンでも動きを捉えるうえで参考とするものなのかもしれません。。