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?