Page 2 of 9

Re: Basic Rolling Regression

Posted: Mon Jul 18, 2011 7:43 pm
by mjfl

Code: Select all

'create some data create u 100 series y=nrnd series x1=nrnd series x2=nrnd series z=nrnd '------------------------------------------------------------------------------------- 'run rolling regression ' set window size !window = 20 ' set step size !step = 1 ' get size of workfile !length = @obsrange ' declare equation for estimation equation eq1 'calculate number of rolls !nrolls = @floor((!length-!window)/!step) 'matrix to store coefficient estimates matrix(3,!nrolls) coefmat ' where 3 is the number of coefficients 'series to store forecast estimates series fcast 'redundant series for catching start and end points series ser = 1 %start = @otod(@ifirst(ser)) %end = @otod(@ilast(ser)) 'variable keeping track of how many rolls we've done !j=0 ' move sample !step obs at a time for !i = 1 to !length-!window+1-!step step !step !j=!j+1 ' set sample for estimation period %first = @otod(@dtoo(%start)+!i-1) %last = @otod(@dtoo(%start)+!i+!window-2) smpl {%first} {%last} ' estimate equation - where the equation is y=c(1) + c(2)*x1 + c(3)*x2 eq1.ls y c x1 x2 ' store coefficients colplace(coefmat,eq1.@coefs,!j) ' 4-period-ahead forecast %4pers = @otod(@dtoo(%start)+!i+!window-1) 'start point %4pere = @otod(@dtoo(%start)+!i+!window+2) 'end point: %4pere - %4pers +1 = 4 if {%end} < {%4pere} then 'check whether the forecast end point is greater than the workfile end point return endif ' set smpl for forecasting period smpl {%4pers} {%4pere} ' forecast with command *forecast* (see also *fit*) eq1.forecast(f=na) yf ' set sampl to obtain the 4th period observation smpl {%4pere} {%4pere} ' store forecasts fcast = yf next smpl @all show coefmat show fcast.line d(noerr) ser EViews Esther EViews Developer Posts: 39 Joined: Fri Sep 03, 2010 7:57 amTop
hi im getting invalis reurn on "REturn". is there something worng with my eviews7?

Re: Basic Rolling Regression

Posted: Wed Jul 20, 2011 8:49 am
by Jelmer
Hi,

I have been trying to create my own rolling window using the example from Esther.
My data = (Range 1980M01 - 2011M06, Window 60M)

However, some series have only got 10 years data, which leaves the first samples with only NA-observations. I get an error, but I would like to see NA in the matrix if there are not enough observations. Alternatively a dynamic range based on the first observation. How do I do this?

Second, I couldnt figure out the command "ifirst" in: %start = @otod(@ifirst(ser))

Third, is there a way to grab the probability from a ls regression. @coefs, @tstats. But what about prob?

Jelmer

Re: Basic Rolling Regression

Posted: Wed Jul 20, 2011 9:15 am
by EViews Gareth
It might be best to just run the program with maximum errors set to something high. That might just do what you want.

Re: Basic Rolling Regression

Posted: Wed Aug 10, 2011 7:27 pm
by fariz888
Dear users,

I m recently doing my dissertation and faced with problem in estimation basic rolling GARCh (1,1) process. I have 2500 observation and need to forecast 1 day ahead volatility in rolling form. I will highly appreciate if advanced users provide me assistance in that issue.. I looked guideline but there was no information. In addition I have 6 day remaining to finish my dissertation. So I need your help immediately. Please share any knowledge that you have in that issue


In addition how can I estimate AGARCH in eviews? Iwant to capture asymmetry in time series? ( not by the method of EGARCH and GJR GARCH)
Sincerely


Fariz

Thanks all

Re: Basic Rolling Regression

Posted: Thu Sep 15, 2011 7:26 am
by dongyadu
Hi all,
I have same question as above

My forecasting equation is: Exchange rate=a_1+a_2*inflation+a_3*outputgap+a_4*real exchange rate+a5*interest rate differential

I want to run the out-of sample forecasting test with both rolling window forecasting scheme and recursive window forecasting scheme.
I have monthly data for all the variables from 1999m01 to 2011m04. And I want to set to estimation rolling window with 96 months from 199901 to 2006m12 and the evaluation window from 2007m01 to 2011mo4.
I want to evaluate the model for every time adding a new observation( one month ahead) by the mean squared prediction error of the linear model compare to the mean squared prediction error of the random walk model (y_t=error_t)

Please can anyone help me with the program code?

Thanks very much.

Dongya

Re: Basic Rolling Regression

Posted: Thu Sep 15, 2011 7:52 am
by EViews Gareth
What have you done so far?

Re: Basic Rolling Regression

Posted: Thu Sep 15, 2011 8:54 am
by dongyadu
What have you done so far?
Hi,
Many Thanks for the reply.

To be honest, I haven't done much. :-(. I am totally new to programming.
But, I have run the test of forecasting equation with data from 1999m1 to 200612.
I have also tried to change the Esther's code to fit my work, but, it didn't work.

I would be thankful if you can show me how to program the code.

Dongya

Re: Basic Rolling Regression

Posted: Thu Sep 15, 2011 9:03 am
by EViews Gareth
Your best bet is to read through the programming guides here on the forum, and in the manuals, until you're at a point where you can understand Esther's code, and then modify it to your needs. We'll be happy to help with any specific bugs you encounter along the way.

Re: Basic Rolling Regression

Posted: Tue May 29, 2012 7:06 am
by VictorV
I'm having some difficulty trying to apply the 4-period-ahead forecasts, based on LS equation. I coppied the whole code and made only 2 adjustments.
My original series is a monthly stock price index from 1980m01 - 2010m12 (372 obs). The equation I want to forecast is just "P c P(-1)". Therefore the only adjustments I made were the equation deffinition(P c P(-1) instead of y c x1 x2) and the number of coefficients of the coefficent matrix (2 instead of 3).

When running the code below I get the following error:
Syntax error in "IF 2002M07 < 2002 M11 THEN"

Could someone please help me out with this?

Code: Select all

'run rolling regression ' set window size !window = 20 ' set step size !step = 1 ' get size of workfile !length = @obsrange ' declare equation for estimation equation eq1 'calculate number of rolls !nrolls = @floor((!length-!window)/!step) 'matrix to store coefficient estimates matrix(2,!nrolls) coefmat ' where 2 is the number of coefficients 'series to store forecast estimates series fcast 'redundant series for catching start and end points series ser = 1 %start = @otod(@ifirst(ser)) %end = @otod(@ilast(ser)) 'variable keeping track of how many rolls we've done !j=0 ' move sample !step obs at a time for !i = 1 to !length-!window+1-!step step !step !j=!j+1 ' set sample for estimation period %first = @otod(@dtoo(%start)+!i-1) %last = @otod(@dtoo(%start)+!i+!window-2) smpl {%first} {%last} ' estimate equation - where the equation is P =c(1) + c(2)*P1(-1) eq1.ls P c P(-1) ' store coefficients colplace(coefmat,eq1.@coefs,!j) ' 4-period-ahead forecast %4pers = @otod(@dtoo(%start)+!i+!window-1) 'start point %4pere = @otod(@dtoo(%start)+!i+!window+2) 'end point: %4pere - %4pers +1 = 4 if {%end} < {%4pere} then 'check whether the forecast end point is greater than the workfile end point return endif ' set smpl for forecasting period smpl {%4pers} {%4pere} ' forecast with command *forecast* (see also *fit*) eq1.forecast(f=na) yf ' set sampl to obtain the 4th period observation smpl {%4pere} {%4pere} ' store forecasts fcast = yf next smpl @all show coefmat show fcast.line d(noerr) ser

Re: Basic Rolling Regression

Posted: Tue May 29, 2012 3:59 pm
by EViews Esther
Please note that there are some changes in the program (see *EDITED). I believe that it should work.

Code: Select all

'run rolling regression ' set window size !window = 20 ' set step size !step = 1 ' get size of workfile !length = @obsrange ' declare equation for estimation equation eq1 'calculate number of rolls !nrolls = @floor((!length-!window)/!step) 'matrix to store coefficient estimates matrix(2,!nrolls) coefmat ' where 2 is the number of coefficients 'series to store forecast estimates series fcast '*EDITED: catching start and end points %start = "@first" '@otod(@ifirst(ser)) %end = "@last" '@otod(@ilast(ser)) 'variable keeping track of how many rolls we've done !j=0 ' move sample !step obs at a time for !i = 1 to !length-!window+1-!step step !step !j=!j+1 ' set sample for estimation period %first = @otod(@dtoo(%start)+!i-1) %last = @otod(@dtoo(%start)+!i+!window-2) smpl {%first} {%last} ' estimate equation - where the equation is P =c(1) + c(2)*P1(-1) eq1.ls P c P(-1) ' store coefficients colplace(coefmat,eq1.@coefs,!j) ' 4-period-ahead forecast %4pers = @otod(@dtoo(%start)+!i+!window-1) 'start point %4pere = @otod(@dtoo(%start)+!i+!window+2) 'end point: %4pere - %4pers +1 = 4 '*EDITED if @dtoo(%end) < @dtoo(%4pere) then 'check whether the forecast end point is greater than the workfile end point exitloop endif ' set smpl for forecasting period smpl {%4pers} {%4pere} ' forecast with command *forecast* (see also *fit*) eq1.forecast(f=na) yf ' set sampl to obtain the 4th period observation smpl {%4pere} {%4pere} ' store forecasts fcast = yf next smpl @all show coefmat show fcast.line d(noerr) yf

Re: Basic Rolling Regression

Posted: Wed May 30, 2012 3:05 am
by VictorV
Thanks!!!

Re: Basic Rolling Regression

Posted: Wed May 30, 2012 4:11 am
by VictorV
Dear Esther,

I have one more question regarding your forecasting model. If I would now like to use a 1-period-ahead forecast rolling regression only, could I simply change the '+2' in '-1' in the following code:

' 4-period-ahead forecast
%4pers = @otod(@dtoo(%start)+!i+!window-1) 'start point
%4pere = @otod(@dtoo(%start)+!i+!window+2) 'end point: %4pere - %4pers +1 = 4

I was wondering if I did this if most of your code then would be redundant or if this would indeed be the correct way to model a 1-period-ahead forecast.

Forgive me if this is a rather 'stupid' question but I am new to programming in Eviews.

Thank you

Re: Basic Rolling Regression

Posted: Wed May 30, 2012 8:06 am
by EViews Esther
The difference between start (%1pers) and end (%1pere) points should be 1 so that you can write the program as follows:

Code: Select all

' 1-period-ahead forecast %1pers = @otod(@dtoo(%start)+!i+!window-1) 'start point %1pere = @otod(@dtoo(%start)+!i+!window) 'end point

Re: Basic Rolling Regression

Posted: Thu May 31, 2012 1:55 am
by VictorV
Dear Esther,

I had another look at 4-period-ahead forecast code you helped me with but I think it is still not correct.
When running the rolling regression with a window of 20, the spreadsheet gives output from the 13th entry. When adjusting the window this does not change and even with a window of a 100 the first 12 entries show "NA" en then the forecasted regression output is given. If I'm correct, in the case of a window of 20 and a 4-period-ahead forecast, the spreadsheet should give ouput from the 24th entry right? And in the case of a window of a 100 it should be from the 104th entry.

I'm deeply sorry for all these questions but I do not know anyone who could help me.

Thanks!

Re: Basic Rolling Regression

Posted: Thu May 31, 2012 8:14 am
by EViews Esther
If I'm correct, in the case of a window of 20 and a 4-period-ahead forecast, the spreadsheet should give ouput from the 24th entry right?
Yes, it is. Can you post your workfile?