確率的ボラティリティプロセス(ヘストンモデル)に従う株価をシミュレートする必要があります。ループを高速化する方法についてはすでに質問しましたが、この場合、V [i-1]に依存しているため、いくつかのヒントを使用できません。
基本的に、コードは次のとおりです。Vは株式のボラティリティ、Sは株価です。そして:a、b、c...定数。
コードは次のとおりです。
V[1] <- 0.04
S[1] <- 40
U <- matrix(NA, nrow=100000, ncol=200, byrow=TRUE)
### Function ###
Inv.Phi <- function(y){
if (y <= p) {0} else {log(1-p)}
}
### Simulation ####
for(j in 1:100000){
for(i in 2:200){
m <- V[i-1] * c
n <- V[i-1] * d
phi <- n/m
if(phi <= 1.5){
Z <- rnorm(1)
V[i] <- rnorm(1) * e
K <- V[i-1] * f
}else{
p <- (phi-1) / (phi+1)
u <- runif(1)
V[i] <- Inv.Phi(u)
K <- V[i-1] * g
}
S[i] <- S[i-1] * exp(K * V[i-1]) * exp(V[i] * rnorm(1))
}
U[j,] = S
}
このプロセスをスピードアップするための提案!私はRに多くの悪いことを使用していることを知っていましたが、より良い解決策を見つけることができませんでした。