上昇する月、下落する月

  • 曜日によって上昇/下落の差があるか否かを以前に調査した。

denovor.hatenablog.com

  • 月によって上昇/下落の差があるか否かを調査する。いつものようにLibraryをimport。
import pandas as pd
import numpy as np
import scipy.stats as st
from matplotlib import pylab as plt
import seaborn as sns
sns.set()

#今回は月ごとのデータで分析
fx_data = pd.read_csv("/Users/ユーザー名/Documents/FX/foreign_exchange_historical_data/USDJPY/USDJPY_MONTH.csv")#データの読み込み
#pandasの計算は遅いので、全てnumpy配列に変換
  • 以下一気にグラフまで
#時系列データのためdatetimeをimport
import datetime
from collections import defaultdict

opening = np.array(fx_data["opening"])#始値
high = np.array(fx_data["high"])#高値
low = np.array(fx_data["low"])#低値
closing = np.array(fx_data["closing"])#終値

#月のデータに変換
fx_data["date"] = pd.to_datetime(fx_data["date"])
fx_data["date"].dt.month

#12か月分のデータ配列を準備
month_stat = defaultdict(int)

for row in fx_data.itertuples():
    if row[5] - row[2] >= 0:#row[5]は終値、row[2]は始値
        month_stat[row[1].month] += 1
    else:
        month_stat[row[1].month + 12] += 1

#比率を出すためここでも空の配列を準備
month_stat_ratio = np.zeros(12)

for i in range(12):
    month_stat_ratio[i] = month_stat[i+1]/(month_stat[i+1] + month_stat[i+13])

#χ二乗検定を行う。
df = pd.DataFrame([month_stat_ratio, [0.5]*12])
st.chi2_contingency(df, correction = False)
#p = 0.9999999758455512となり、「為替の上下に月は無関係である」という帰無仮説は棄却できない。

dict = ["{0}".format(i) for i in range(1, 13)]
# %%まとめて選択
plt.bar(dict, month_stat_ratio, color = "skyblue", alpha = 0.7)
plt.title("usdjpy")
plt.xlabel("month")
plt.ylabel("increase")
plt.savefig("/Users/ユーザー名/Desktop/month.png", format = "png", dpi = 300)

#このようにしても同じ結果になる。
st.chisquare(month_stat_ratio, f_exp = [0.5]*12)
  • グラフも。

f:id:denovor:20201126162351p:plain

  • これを見ると1月は下落する確率が高い印象もあるが。