FXボーグ | テクニカル実験室

テクニカル分析を使った自動売買プログラムの開発に挑戦!

スポンサーリンク

シンプルでそれなりの予測力をもつHAR-RVモデル。

計算が簡単でそれなりの予測力を持つといわれるHAR-RVモデルを試してみました。
HAR-RVモデルはRV*1の変動を「不均一市場仮説」に基づいてモデル化したものだそうです。(詳しい説明⇒PDF) 

こちらブログにサンプルがあったので動かしてみました。A Simple Model for Realized Volatility | R-bloggers

f:id:fxborg:20160821131617p:plain

HAR-RVモデルの実装。

1分足データのダウンロード

上記ブログ記事中の「here」というリンクから prlev2.RData ファイルをダウンロードしてRの作業ディレクトリに移動します。

この内容は390x8x250 の3次元配列で次のようになっています。

  1. ・1次元目・・・6時間半の分足を表現
  2. ・2次元目・・・ open,high,low,close,vol,等を表現
  3. ・3次元目・・・1日単位の区切り
Rにデータを読み込む

Rを起動して、ファイルを読み込みます。

load(file = "./prlev2.RData")

f:id:fxborg:20160821124103p:plain

RVを求める

RVの計算には「GarmanKlass法」を使います。

GarmanKlass <- function(x){
  n <- dim(x)[1] # number of intervals each day.
  l <- dim(x)[3] # number of days
  gk = NULL
  for (i in 1:l) {
    log.hi.lo <- log( x[1:n,2,i]/x[1:n,3,i] )
    log.cl.to.cl <- log( x[2:n,4,i]/x[1:(n-1),4,i] )
    gk[i] <- (sum(.5*log.hi.lo^2)

                  -sum( (2*log(2) - 1)* (log.cl.to.cl^2) ) ) /n

  }
  return(gk)
}
volat <- sqrt(GarmanKlass(prlev))

 各期間の平均を求める。

日別、週別、月別の平均値を計算します。

 

volatw = NULL
volatm = NULL
volatd = NULL

TT = length(volat)
for (i in 30:TT){
  volatd[i] = volat[(i-1)] 
  volatw[i] = sum(volat[(i-7):(i-2)],na.rm = T)/6
  volatm[i] = sum(volat[(i-29):(i-8)],na.rm = T)/22
}

 重回帰分析

日別RV、週別RV、月別RVを説明変数として重回帰分析を行います。

har0 = lm(volat~volatd+volatw+volatm )

f:id:fxborg:20160821125514p:plain

 分析結果の内容は次の通りです。

Residuals
>残差の4分位数

Coefficients
>係数、標準誤差、T値、P値 を***で表示

Multiple R-squared 
>寄与率

Adjusted R-squared
>決定係数 

回帰診断図の表示

残差の状態を視覚的に表示します。

par(mfrow=c(2,2))
plot(har0)

f:id:fxborg:20160821130959p:plain

HAR-RVを表示します。

RVと予測値を表示します。

res.predict<-predict(har0)
res.fit<-fitted(har0)result<-data.frame(tail(prlev[390,4,],200), tail(volat,200)*1000, tail(res.predict,200)*1000, tail(res.fit,200)*1000)
names(result)=c("price","volat","predict","fit")layout(1:2)
plot(result$price,type="l")plot(result$volat,ylim=c(0,0.7))
par(new=T)
plot(result$predict,type="l",col="red",ylim=c(0,0.7))

f:id:fxborg:20160821131617p:plain

 最後に

シンプルでそれなりの予測力をもつHARーRVモデルを試してみました。RVは持続性と強い自己相関を持つそうなので、トレンドフィルター等に使えるかもしれません。HARモデルの拡張版としては瞬間的な変動に対応したHAR-RV-CJなどもあるそうです。

*1:Realized volatility 日中の変動も考慮したボラティリティ