I am estimating a VAR model with only 2 variable X1 and returns for stocks. Currently, I estimate using PROC VARMAX with a BY statement. I then get the averages across all stocks. My code is :
*Estimating the model;
dm 'odsresults; clear';ods _all_ close; run; quit;
ods output ParameterEstimates=parameterEstimates covInnovation=cov ARRoots=ARRoots;;
proc varmax data=test_sample ;
model X Return /p=10 method=LS lagmax=10 print=(estimates covpe roots);
* Extract the relevant variances and covariances;
data cov1 (keep=stock var_X); set cov; where variable="X"; var_X=X; run;
data cov2 (keep=stock var_return); set cov; where variable="return"; var_return=return; run;
data cov3 (keep=stock covar_X_return); set cov; where variable="X"; covar_X_return=return; run;
I then use these cov datasets as well as the parameterestimates dataset to compute the Impulse Response function for each stock ( I create a random shock and then compute the dynamics with 100 time period). I then get the average across all stocks to get the final numbers for the model. I dont post the code here because I dont want to confuse the readers.
My questions are:
1. Is there a quick step to estimate the VAR across multiple stocks (or groups such as stock-date)?
2. what is a quick way to produce the Impulse Response Function? That is 1 set of results for multiple stocks, NOT for each individual stock because I want to estimate for the market as a whole. Note that I would want to see the dynamics for a window that is longer than the number of lag used in the model.
Registration is open! SAS is returning to Vegas for an AI and analytics experience like no other! Whether you're an executive, manager, end user or SAS partner, SAS Innovate is designed for everyone on your team. Register for just $495 by 12/31/2023.
If you are interested in speaking, there is still time to submit a session idea. More details are posted on the website.