トレンドとは何か?

  • そもそもトレンドとは何か。
  • ここでは単調非減少あるいは単調非増加列としてトレンドを定義する。
  • ドル円終値がいくつのトレンドに分割されるのか、また、そのうち上昇/下落トレンドの比率はどのようになるのかを調査する。
import pandas as pd
import numpy as np
from scipy import stats

from matplotlib import pylab as plt
import seaborn as sns
sns.set()
sns.set_style("darkgrid")
import math
import pymc3 as pm

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"])#終値

trend = 1#いくつに分割されるのか調べるので、最初から0ではなく1としておく
up_trend = 0
down_trend = 0

prev = closing[0]
state = "na"

for i in range(1, len(closing)):
    prev = closing[i-1]
    current = closing[i]

    if current > prev:
        if state == "dec":
            trend += 1
            down_trend += 1
            state = "na"
        else:
            state = "inc"
    elif current < prev:
        if state == "inc":
            trend += 1
            up_trend += 1
            state = "na"
        else:
            state = "dec"
  • 結果はこちら
print(trend, up_trend, down_trend)
1117 542, 574
  • 上昇トレンドと下落トレンドの比率は542:574でほぼ1:1として良い。
  • また、全日数とトレンドの割合は
trend/len(closing)
0.34023758757234235

となる。これから、トレンドの平均日数の期待値は、この逆数をとって、約2.94日であることもわかる。