蒙特卡羅
模擬來自 ARMA(1,0)-GARCH(1,1) 模型的回報
我想獲得由**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)