蒙特卡羅

模擬來自 ARMA(1,0)-GARCH(1,1) 模型的回報

  • March 5, 2016

我想獲得由**ARMA(1,0)-GARCH(1,1)**過程控制的股票收益過程的一步提前預測的模擬。回報的形式為:

$ x_t = \mu + \delta x_{t-1} + \sigma_t z_t $

從我的 GARCH 模型中,我可以預測條件均值 $ \mu + \delta x_{t-1} $ 和條件標準差 $ \sigma_t $ . 假設分佈 $ z_t $ 是高斯的。

所以現在我想知道如何使用上述方法獲得股票收益的模擬。我最初的解決方案是從高斯分佈中模擬一些隨機變數 $ N(0,1) $ 然後創建我的一步提前預測模擬:

條件均值(從時間 $ t+1 $ ) + $ N(0,1) $ 隨機變數 * 條件標準差(從時間 $ t+1 $ )

編輯:高斯分佈的情況相當於: $ x_{t+1} \sim N((\mu + \delta x_{t}) ,\sigma_{t+1}) $

這種模擬提前一步預測股票收益的方法是否合適?我需要這些模擬來創建資產配置策略。

這個問題已經在Stack Overflow上得到解答。由於它對Quant Finance很重要,所以我在這裡添加了R程式碼。其他使用者可以添加其他程式軟體的程式碼來模擬ARMA(1,0)-GARCH(1,1)模型。

sim.GARCH <- function(
 horizon=5, N=1e4, 
 h0 = 2e-4, 
 mu = 0, omega=0,
 alpha1 = 0.027,
 beta1  = 0.963
){
 ret <- zt <- et <- ht <- matrix(NA, nc=horizon, nr=N)
 ht[,1] <- h0
 for(j in 1:horizon){
   zt[,j]   <- rnorm(N,0,1)
   et[,j]   <- zt[,j]*sqrt(ht[,j])
   ret[,j]  <- mu + et[,j]
   if( j < horizon )
     ht[,j+1] <- omega+ alpha1*et[,j]^2 + beta1*ht[,j]
 }
 apply(ret, 1, sum)
}
x <- sim.GARCH(N=1e5)

引用自:https://quant.stackexchange.com/questions/22685