上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

新高値・新安値とボラティリティ (2018/01/17)

直近高値、または直近安値が更新されたとき、ボラティリティがどうなるかを調べてみる。

検証

  • 通貨ペア:EURJPY、EURUSD、USDJPY
  • 期間:2013年1月1日〜2017年12月31日
  • 足の種類:5分
  • 直近の計算期間:1時間から24時間まで1時間刻み(5分足なので12本から288本まで12本刻み)
  • ボラティリティの指標:直近高値、または直近安値が更新されたときのTrue Rangeの平均を全体のTrue Rangeの平均で除したもの

○以下のコマンドをIPythonコンソールで実行する。

import forex_system as fs
import matplotlib.pyplot as plt
import numpy as np
from datetime import datetime

fs.remove_folder('temp')

start = datetime.strptime('2013.01.01 00:00', '%Y.%m.%d %H:%M')
end = datetime.strptime('2017.12.31 23:59', '%Y.%m.%d %H:%M')
timeframe = 5
n = 24
x = np.empty(n)
y = np.empty(n)
plt.figure(figsize=(6, 12))
cnt = 0
for symbol in ['EURJPY', 'EURUSD', 'USDJPY']:
    cnt += 1
    plt.subplot(3, 1, cnt)
    ret = fs.i_atr(symbol, timeframe, 1, 0)[start:end]
    for i in range(n):
        minute = (i + 1) * 60
        period = fs.to_period(minute, timeframe)
        highest = fs.i_highest(symbol, timeframe, period, 0)[start:end]
        lowest = fs.i_lowest(symbol, timeframe, period, 0)[start:end]
        x[i] = i + 1
        y[i] = np.mean(ret[(highest==0) | (lowest==0)]) / np.mean(ret)
    plt.plot(x, y)
    plt.title('New High/Low and Volatility (' + symbol + ')')
    plt.xlabel('Hour')
    plt.ylabel('True Range (mean=1.0)')
    plt.axhline(y=1.0, color='black', linestyle=':')
    plt.tight_layout()
plt.savefig('new_high_low_and_volatility.png', dpi=150)
plt.show()

結果

  • 直近高値、または直近安値が更新されたとき、ボラティリティが大きくなる傾向がある。
  • 直近の計算期間が長くなるほど、ボラティリティが大きくなる傾向がある。
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。