April 29th, 2012, 6:27 pm
Hi all,Currently I am using the most simple "sample standard deviation" (k-period lookback) as my volatility measure. I know this is not very good so I am looking into replacing my crude vol estimate by GARCH family models. However, I've got into trouble. Initially I fitted a GARCH(1, 1) model to asset returns. > spec = ugarchspec() > fit = ugarchfit(data = dLogRets, spec = spec)>> fit*---------------------------------** GARCH Model Fit **---------------------------------*Conditional Variance Dynamics -----------------------------------GARCH Model : sGARCH(1,1)Mean Model : ARFIMA(1,0,1)Distribution : norm Optimal Parameters------------------------------------ Estimate Std. Error t value Pr(>|t|)mu -0.000046 0.000018 -2.5648 0.010324ar1 0.091849 0.009554 9.6140 0.000000ma1 -0.043167 0.005779 -7.4701 0.000000omega 0.000000 0.000000 21.0381 0.000000alpha1 0.009767 0.000234 41.6995 0.000000beta1 0.989039 0.000189 5230.3056 0.000000Robust Standard Errors: Estimate Std. Error t value Pr(>|t|)mu -0.000046 0.000020 -2.3081 0.020992ar1 0.091849 0.013707 6.7011 0.000000ma1 -0.043167 0.007959 -5.4239 0.000000omega 0.000000 0.000000 9.4582 0.000000alpha1 0.009767 0.001323 7.3820 0.000000beta1 0.989039 0.001172 844.2382 0.000000LogLikelihood : 210762.7 Information Criteria------------------------------------Akaike -7.9054Bayes -7.9044Shibata -7.9054Hannan-Quinn -7.9050Q-Statistics on Standardized Residuals------------------------------------ statistic p-valueLag10 35.20 2.455e-05Lag15 39.22 1.841e-04Lag20 50.40 6.572e-05H0 : No serial correlationQ-Statistics on Standardized Squared Residuals------------------------------------ statistic p-valueLag10 3.695 0.8836Lag15 4.949 0.9763Lag20 9.290 0.9526ARCH LM Tests------------------------------------ Statistic DoF P-ValueARCH Lag[2] 0.2176 2 0.8969ARCH Lag[5] 0.6286 5 0.9867ARCH Lag[10] 3.6765 10 0.9608Nyblom stability test------------------------------------Joint Statistic: 10403.15Individual Statistics: mu 0.1165ar1 0.6626ma1 0.6925omega 1331.3903alpha1 2.1624beta1 1.5556Asymptotic Critical Values (10% 5% 1%)Joint Statistic: 1.49 1.68 2.12Individual Statistic: 0.35 0.47 0.75Sign Bias Test------------------------------------ t-value prob sigSign Bias 4.637 3.547e-06 ***Negative Sign Bias 0.573 5.667e-01 Positive Sign Bias 1.588 1.122e-01 Joint Effect 23.580 3.056e-05 ***Adjusted Pearson Goodness-of-Fit Test:------------------------------------ group statistic p-value(g-1)1 20 29369 02 30 46240 03 40 57023 04 50 62530 0Elapsed time : 4.197977 ------------------------------------------------------------------------------------It fits okay but it seems that the residuals are all having significant autocorrelations. Therefore I began to find ways to improve my mean-models. (For the mean-models, I have explored ARFIMA models and I posted my question, separately, here: How to you fit ARIMA model with lots of autocorrelations?)However, it seems that it's actually very hard to fit a good mean-model for my data. I am a bit hopeless. Now my question is: if I don't have a good mean-model, is my GARCH(1,1) result still vaild and okay to use?Lets say if my purpose is solely to estimate the volatility and replace my crude standard deviation estimate of volatility, would the above results from GARCH(1,1) be better than the simplistic std vol any way? If GARCH(1, 1) is better than std vol any way, for the sake of replacing my vol estimate, maybe I should focus on fitting better vol models, such as teh GJR models, etc. But in R, I had trouble fitting the GJR model:> spec = ugarchspec(variance.model = list(model = "gjrGARCH"), distribution.model = "sged")> fit = ugarchfit(data = dLogRets, spec = spec)> > fit*---------------------------------** GARCH Model Fit **---------------------------------*Conditional Variance Dynamics -----------------------------------GARCH Model : gjrGARCH(1,1)Mean Model : ARFIMA(1,0,1)Distribution : sged Optimal Parameters------------------------------------ Estimate Std. Error t value Pr(>|t|)mu -0.000012 NA NA NAar1 0.038942 NA NA NAma1 0.038334 NA NA NAomega 0.000000 NA NA NAalpha1 0.050000 NA NA NAbeta1 0.900000 NA NA NAgamma1 0.050000 NA NA NAskew 1.000000 NA NA NAshape 2.000000 NA NA NARobust Standard Errors: Estimate Std. Error t value Pr(>|t|)mu -0.000012 NA NA NAar1 0.038942 NA NA NAma1 0.038334 NA NA NAomega 0.000000 NA NA NAalpha1 0.050000 NA NA NAbeta1 0.900000 NA NA NAgamma1 0.050000 NA NA NAskew 1.000000 NA NA NAshape 2.000000 NA NA NA failed to invert hessianLogLikelihood : -1.1 Information Criteria------------------------------------Akaike 0.00037884Bayes 0.00187841Shibata 0.00037879Hannan-Quinn 0.00084718Q-Statistics on Standardized Residuals------------------------------------ statistic p-valueLag10 26.17 0.0009835Lag15 27.71 0.0099253Lag20 34.01 0.0125447H0 : No serial correlationQ-Statistics on Standardized Squared Residuals------------------------------------ statistic p-valueLag10 11.53 0.1736Lag15 15.75 0.2630Lag20 20.97 0.2810ARCH LM Tests------------------------------------ Statistic DoF P-ValueARCH Lag[2] 2.860 2 0.2394ARCH Lag[5] 6.334 5 0.2751ARCH Lag[10] 12.032 10 0.2829Error in t.default(grad) : argument is not a matrixEnter a frame number, or 0 to exit 1: function (object) 2: function (object) 3: .nyblomTest(object)4: t(grad)5: t.default(grad)Selection: ---------------------------------------------------------[p.s. CP'ed on NP and SE]