Hi, everyone
I used the following procedures to estimate "monthly" standard deviation using GARCH (1, 1).
The dataset SPX192803(04) contains daily returns of S&P 500 index for March(April), 1928.
I uploaded these two datasets as attachments for your reference.
PROC SORT DATA = SPX192803; BY YM; RUN; PROC AUTOREG DATA = SPX192803; MODEL RT = / GARCH = (P=1, Q= 1) ; OUTPUT OUT = VOUT CEV = V; RUN; DATA VOUT; SET VOUT; S = SQRT(V); RUN;
The weird thing is when I used SPX192803 dataset, I obtained the "daily" standard deviations. However, when I used SPX192804 dataset, I got a "single" standard deviation (monthly?) through the whole month. The empirical results can be shown in the dataset VOUT if you run the above programs.
Could anyone tell me what it means? Did I use the wrong procedure or data? Thank you for your help in advance. Look forward to hearing from you.
Best,
Andy
The reason that you get the CEV all equal to the same value for the second data set is because the estimate for ARCH parameter is zero for the GARCH(1,1) model using the second data set. For GARCH(1,1) model, the conditional error variance h_t is:
h_t = arch0 + arch*e_(t-1)*e_(t-1) + garch*h_(t-1), since your estimate of arch parameter is zero, then the h_t will be equal to
h_t = arch0 + garch*h_(t-1).
At t = 1, with arch parameter equal to 0, h_(t-1) =h_0 is initialized at
h_0=arch0 /(1-garch).
This means that,
h_1 = arch0 + garch*h_0
= arch0+garch*arch0/(1-garch)
= arch0*(1+garch/(1-garch))
= arch0/(1-garch)
this is exactly equal to h_0.
Similarly, at t=2, you get
h_2 = arch0 + garch*h_1
=arch0 + garch*arch0/(1-garch)
=arch0/(1-garch)
and so on. So because the estimate of arch parameter is zero, the CEV will be always equal to the initialized value of h_t. In other words, h_t will be constant.
Hope this helps.
Thank you for the reply.
If that's the case, what should I do if I'd like to estimate the relation between "monthly" standard deviation (volatility) and my independent variables using GARCH (1,1) ? Do you have any suggestions for the programming? Any advice is welcome. I look forward to hearing from you.
Best,
James
Your PROC AUTOREG code below fits a GARCH(1,1) model to the variable RT:
PROC AUTOREG DATA = SPX192803;
MODEL RT = / GARCH = (P=1, Q= 1) ;
OUTPUT OUT = VOUT CEV = V;
RUN;
This specifies that the RT variable follows GARCH(1,1) process. The estimation results for all ARCH, GARCH parameters are either zero or insignificant or cannot be estimated properly for the two data sets. Considering these results, it might be helpful if you perform some diagnostics tests first before deciding on an appropriate model for your data, for example, the ARCHTEST =(ALL) option performs various tests to detect ARCH/GARCH effects in the model which may be helpful:
I hope this helps.
Registration is now open for SAS Innovate 2025 , our biggest and most exciting global event of the year! Join us in Orlando, FL, May 6-9.
Sign up by Dec. 31 to get the 2024 rate of just $495.
Register now!
Learn how to run multiple linear regression models with and without interactions, presented by SAS user Alex Chaplin.
Find more tutorials on the SAS Users YouTube channel.