BookmarkSubscribeRSS Feed
James071375
Fluorite | Level 6

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  

3 REPLIES 3
SASCom1
SAS Employee

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.

James071375
Fluorite | Level 6

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 

SASCom1
SAS Employee

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:

 

https://go.documentation.sas.com/?docsetId=etsug&docsetTarget=etsug_autoreg_syntax05.htm&docsetVersi...

 

I hope this helps.

SAS Innovate 2025: Call for Content

Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 16. Read more here about why you should contribute and what is in it for you!

Submit your idea!

Multiple Linear Regression in SAS

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.

Discussion stats
  • 3 replies
  • 1159 views
  • 0 likes
  • 2 in conversation