連続上昇 or 下落

  • 連続して上昇/下落する日数の最大値を求める。
import pandas as pd
from pandas.plotting import autocorrelation_plot
import numpy as np
from scipy import stats

from matplotlib import pylab as plt
import seaborn as sns
sns.set()
import statsmodels.api as sm
import heapq as hp
import math

fx_data = pd.read_csv("/Users/ユーザー名/Documents/FX/foreign_exchange_historical_data/USDJPY/USDJPY_DAY.csv")#データの読み込み
#pandasの計算は遅いので、全てnumpy配列に変換
opening = np.array(fx_data["opening"])#始値
high = np.array(fx_data["high"])#高値
low = np.array(fx_data["low"])#低値
closing = np.array(fx_data["closing"])#終値

#連続して上昇、あるいは下落する日数の最大値を求める。
m = 0
M = 0
rise_max = 0
down_max = 0

for i in range(len(opening)):
    if opening[i] > closing[i]:
        m = 0
        M += 1
        rise_max = max(rise_max, M)
    elif opening[i] < closing[i]:
        m += 1
        M = 0
        down_max = max(down_max, m)

rise_max, down_max
  • 結果は以下。
15, 8
  • 上昇する時は最大15日連続で上昇した。
  • 下落する場合、長くても8日。
  • 解析期間(2007年4月2日から2020年9月29日)