
' 1. Import the data + set parameters

wfopen .\..\..\Time_series_I\adjusted_data_g7.wf1

tic 

' INDICATORS

!model = 3

string countries = "can fr ger ita jap uk us"
scalar nr_countries = @wcount(countries)
%sample = "G7"

scalar nr_worldgrowth_dum = 0

scalar ar_max = 6

' DECLARE NR OF FORECASTS

'redundant series for catching start and end points of the data
series ser = 1   

%begin_estimation = "1962m01"

%end = @otod(@ilast(ser))    

scalar nr_obs_full = @dtoo(%end) - @dtoo(%begin_estimation)

' The first forecast should be Jan 2005
' So the very fist sample period is 1961m02-2004m12

%end_estimation_set = "2004m12"

scalar nr_forecasts = @dtoo(%end) - @dtoo(%end_estimation_set) -12+1

' VECTORS OF FORECAST

' Generate matrices for saving forecasts

' first 		column -> 1 step ahead
' second column -> 3 step ahead
' third 	column -> 6 step ahead
' fourth	column -> 9 step ahead
' fifth 		column -> 12 step ahead

for %country {countries}
matrix(nr_forecasts, 5) m3_fcast_err_{%country}
next

' VECTOR ELEMENT =1 IF MODEL IS WELL SPECIFIED

for %country {countries}
for !m = 3 to 3
vector(nr_forecasts) well_specified_m{!m}_{%country}
next
next

' =====================================================
' OBJECTS FOR BREAK DETECTION

' First seven columns are the test statistics for the countries 
svector(nr_countries) Date_mean1
svector(nr_countries) Date_mean2
svector(nr_countries) Date_mean3
svector(nr_countries) Date_mean4
svector(nr_countries) Date_mean5
' Collect the correct # of dummies
svector(nr_countries) Date_mean

' First seven columns are the test statistics for the countries 
' 1 dummy
svector(nr_countries) Date_variance_abs1
' 2 Dummies
svector(nr_countries) Date_variance_abs2
' 3 Dummies
svector(nr_countries) Date_variance_abs3
' 4 Dummies
svector(nr_countries) Date_variance_abs4
' 5 Dummies
svector(nr_countries) Date_variance_abs5
' Collect the correct # of dummies
svector(nr_countries) Date_variance_abs
' =====================================================

' create a constant
smpl @all
genr constant = 1

' *******************************
' * START SAMPLE LOOP *
' *******************************

for !f = 49 to 49 ' 1 to nr_forecasts step 1

' Set sample: Fixed window

%start = @otod(@dtoo(%begin_estimation)+!f-1)
%last  = @otod(@dtoo(%end_estimation_set)+!f-1)

smpl {%start} {%last}

' for break detection
matrix(6,nr_countries+1) break_mean
matrix(6,nr_countries+1) break_variance_abs

' ***********************************
' * START COUNTRY LOOP *
' ***********************************

!n =1
for %country fr ' {countries}

smpl {%start} {%last}

' 2. BREAK DETECTION

if nr_worldgrowth_dum=0 then 
%worldgrowth_dum = ""
endif

equation eq_{%country}.ls(cov=hac,covlag=1,covkern=quadspec,covbw=andrews) g_{%country} c {%worldgrowth_dum}
freeze(seq_break1_{%country}) eq_{%country}.multibreak(method=globplus1, trim=15 , heterr, size=10)
freeze(global_break1_{%country}) eq_{%country}.multibreak(method=glob, trim=15 , heterr, size=10)

for !e=1 to 40

if global_break1_{%country}(!e,1) = "Breaks" then
'stat
break_mean(1,!n) = @val(global_break1_{%country}(!e+8,3))
break_mean(1,nr_countries+1) = @val(global_break1_{%country}(!e+8,6))
'cv
endif

if global_break1_{%country}(!e,1) = "Breaks" then
'stat
break_mean(2,!n) = @val(global_break1_{%country}(!e+9,3))
break_mean(2,nr_countries+1) = @val(global_break1_{%country}(!e+9,6))
'cv
endif

if seq_break1_{%country}(!e,1) = "Break Test" then
'stat
break_mean(3,!n) = @val(seq_break1_{%country}(!e+3,3))
break_mean(4,!n) = @val(seq_break1_{%country}(!e+4,3))
break_mean(5,!n) = @val(seq_break1_{%country}(!e+5,3))
break_mean(6,!n) = @val(seq_break1_{%country}(!e+6,3))
'cv
break_mean(3,nr_countries+1)= @val(seq_break1_{%country}(!e+3,4))
break_mean(4,nr_countries+1)= @val(seq_break1_{%country}(!e+4,4))
break_mean(5,nr_countries+1)= @val(seq_break1_{%country}(!e+5,4))
break_mean(6,nr_countries+1)= @val(seq_break1_{%country}(!e+6,4))
endif

' Timing of break
if seq_break1_{%country}(!e,1) =  "Estimated break dates:" then
Date_mean1(!n) = seq_break1_{%country}(!e+1,1)
Date_mean2(!n) = seq_break1_{%country}(!e+2,1)
Date_mean3(!n) = seq_break1_{%country}(!e+3,1)
Date_mean4(!n) = seq_break1_{%country}(!e+4,1)
Date_mean5(!n) = seq_break1_{%country}(!e+5,1)
endif

next

' What does the test say?

if (break_mean(1,!n)>break_mean(1,nr_countries+1)) or (break_mean(2,!n)>break_mean(2,nr_countries+1)) then
' at least 1 break
	if  (break_mean(6,!n)>break_mean(6,nr_countries+1)) then
	' There are 5 breaks
							Date_mean(!n)= @mid(Date_mean5(!n), 5,7)+" "+@mid(Date_mean5(!n), 15,7)+" "+ @mid(Date_mean5(!n), 25,7)+" "+ @mid(Date_mean5(!n), 35,7)+" "+ @mid(Date_mean5(!n), 45,7)
							svector(5) mean_dumdate5_{!n} = @wsplit(Date_mean(!n))
							scalar nr_mean_break_{%country} = 5
							%mean_dumdate1 = mean_dumdate5_{!n}(1)  
							%mean_dumdate2 = mean_dumdate5_{!n}(2)
							%mean_dumdate3 = mean_dumdate5_{!n}(3)
							%mean_dumdate4 = mean_dumdate5_{!n}(4)
							%mean_dumdate5 = mean_dumdate5_{!n}(5)
							' Create Dummy
							smpl @all
							genr DUM1_{%mean_dumdate1} = 0
							smpl %mean_dumdate1 @last
							DUM1_{%mean_dumdate1} = 1		
							smpl @all
							genr DUM1_{%mean_dumdate2} = 0
							smpl %mean_dumdate2 @last
							DUM1_{%mean_dumdate2} = 1		
							smpl @all
							genr DUM1_{%mean_dumdate3} = 0
							smpl %mean_dumdate3 @last
							DUM1_{%mean_dumdate3} = 1		
							smpl @all
							genr DUM1_{%mean_dumdate4} = 0
							smpl %mean_dumdate4 @last
							DUM1_{%mean_dumdate4} = 1		
							smpl @all
							genr DUM1_{%mean_dumdate5} = 0
							smpl %mean_dumdate5 @last
							DUM1_{%mean_dumdate5} = 1				
							%mean_dum = "DUM1_"+%mean_dumdate1+" "+"DUM1_"+%mean_dumdate2+" "+ "DUM1_"+%mean_dumdate3+" "+ "DUM1_"+%mean_dumdate4+" "+ "DUM1_"+%mean_dumdate5
		else
		if  (break_mean(5,!n)>break_mean(5,nr_countries+1))   then
		' there are 4 breaks
							Date_mean(!n)= @mid(Date_mean4(!n), 5,7)+" "+@mid(Date_mean4(!n), 15,7)+" "+ @mid(Date_mean4(!n), 25,7)+" "+ @mid(Date_mean4(!n), 35,7)
							svector(4) mean_dumdate4_{!n} = @wsplit(Date_mean(!n))
							scalar nr_mean_break_{%country} = 4
							%mean_dumdate1 = mean_dumdate4_{!n}(1)  
							%mean_dumdate2 = mean_dumdate4_{!n}(2)
							%mean_dumdate3 = mean_dumdate4_{!n}(3)
							%mean_dumdate4 = mean_dumdate4_{!n}(4)
							' Create Dummy
							smpl @all
							genr DUM1_{%mean_dumdate1} = 0
							smpl %mean_dumdate1 @last
							DUM1_{%mean_dumdate1} = 1		
							smpl @all
							genr DUM1_{%mean_dumdate2} = 0
							smpl %mean_dumdate2 @last
							DUM1_{%mean_dumdate2} = 1		
							smpl @all
							genr DUM1_{%mean_dumdate3} = 0
							smpl %mean_dumdate3 @last
							DUM1_{%mean_dumdate3} = 1		
							smpl @all
							genr DUM1_{%mean_dumdate4} = 0
							smpl %mean_dumdate4 @last
							DUM1_{%mean_dumdate4} = 1		
							%mean_dum = "DUM1_"+%mean_dumdate1+" "+"DUM1_"+%mean_dumdate2+" "+ "DUM1_"+%mean_dumdate3+" "+ "DUM1_"+%mean_dumdate4
			else
			if  (break_mean(4,!n)>break_mean(4,nr_countries+1))   then
			' there are 3 breaks
							Date_mean(!n)= @mid(Date_mean3(!n), 5,7)+" "+@mid(Date_mean3(!n), 15,7)+" "+ @mid(Date_mean3(!n), 25,7)
							svector(3) mean_dumdate3_{!n} = @wsplit(Date_mean(!n))
							scalar nr_mean_break_{%country} = 3
							%mean_dumdate1 = mean_dumdate3_{!n}(1)  
							%mean_dumdate2 = mean_dumdate3_{!n}(2)
							%mean_dumdate3 = mean_dumdate3_{!n}(3)
							' Create Dummy
							smpl @all
							genr DUM1_{%mean_dumdate1} = 0
							smpl %mean_dumdate1 @last
							DUM1_{%mean_dumdate1} = 1		
							smpl @all
							genr DUM1_{%mean_dumdate2} = 0
							smpl %mean_dumdate2 @last
							DUM1_{%mean_dumdate2} = 1		
							smpl @all
							genr DUM1_{%mean_dumdate3} = 0
							smpl %mean_dumdate3 @last
							DUM1_{%mean_dumdate3} = 1		
							%mean_dum = "DUM1_"+%mean_dumdate1+" "+"DUM1_"+%mean_dumdate2+" "+ "DUM1_"+%mean_dumdate3
			else
			if  (break_mean(3,!n)>break_mean(3,nr_countries+1))   then
			' there are 2 breaks
							Date_mean(!n)= @mid(Date_mean2(!n), 5,7)+" "+@mid(Date_mean2(!n), 15,7)
							svector(2) mean_dumdate2_{!n} = @wsplit(Date_mean(!n))
							scalar nr_mean_break_{%country} = 2
							%mean_dumdate1 = mean_dumdate2_{!n}(1)  
							%mean_dumdate2 = mean_dumdate2_{!n}(2)
							' Create Dummy
							smpl @all
							genr DUM1_{%mean_dumdate1} = 0
							smpl %mean_dumdate1 @last
							DUM1_{%mean_dumdate1} = 1		
							smpl @all
							genr DUM1_{%mean_dumdate2} = 0
							smpl %mean_dumdate2 @last
							DUM1_{%mean_dumdate2} = 1		
							%mean_dum =  "DUM1_"+%mean_dumdate1+" "+"DUM1_"+%mean_dumdate2
				else
							' there is 1 break
							Date_mean(!n) = @mid(Date_mean1(!n), 5)
							svector(1) mean_dumdate1_{!n} = @wsplit(Date_mean(!n))
							scalar nr_mean_break_{%country} = 1
							%mean_dumdate1 = mean_dumdate1_{!n}(1)
							' Create Dummy
							smpl @all
							genr DUM1_{%mean_dumdate1} = 0
							smpl %mean_dumdate1 @last
							DUM1_{%mean_dumdate1} = 1		
							%mean_dum = "DUM1_"+%mean_dumdate1	
			endif
		endif
	endif
endif
	
else
' NO BREAKS
scalar nr_mean_break_{%country} = 0
%mean_dum = ""
endif

' VARIANCE

smpl {%start} {%last}
' Estimate with the mean dummies
equation eq2_{%country}.ls g_{%country} c {%mean_dum} {%worldgrowth_dum}

' get the cleaned residuals
eq2_{%country}.makeresids(s) resid2_{%country}

' calculate the absolute values of the residuals
genr abs_resid_{%country} = @abs(resid2_{%country})

' calculate squared residuals
'genr sq_resid_{%country} = resid2_{%country}*resid2_{%country}

' check for breaks in the absolute values of  residuals
equation eq_abs_{%country}.ls(cov=hac,covlag=1,covkern=quadspec,covbw=andrews) abs_resid_{%country} c
freeze(global_break_abs_{%country}) eq_abs_{%country}.multibreak(method=glob, trim=15 , heterr, size=10)
freeze(seq_break_abs_{%country}) eq_abs_{%country}.multibreak(method=globplus1, trim=15 , heterr, size=10)

' check for breaks in the squared  residuals
'equation eq_sq_{%country}.ls(cov=hac,covlag=1,covkern=quadspec,covbw=andrews) sq_resid_{%country} c
'freeze(global_break_sq_{%country}) eq_sq_{%country}.multibreak(method=glob, trim=15 , heterr, size=10)
'freeze(seq_break_sq_{%country}) eq_sq_{%country}.multibreak(method=globplus1, trim=15 , heterr, size=10)

for !e=1 to 40

' Store statistics: Absolute values
if global_break_abs_{%country}(!e,1) = "Breaks" then
'stat
break_variance_abs(1,!n) = @val(global_break_abs_{%country}(!e+8,3))
'cv
break_variance_abs(1,nr_countries+1) = @val(global_break_abs_{%country}(!e+8,6))
endif

if global_break_abs_{%country}(!e,1) = "Breaks" then
'stat
break_variance_abs(2,!n) = @val(global_break_abs_{%country}(!e+9,3))
'cv
break_variance_abs(2,nr_countries+1) = @val(global_break_abs_{%country}(!e+9,6))
endif

if seq_break_abs_{%country}(!e,1) = "Break Test" then
'stat
break_variance_abs(3,!n) = @val(seq_break_abs_{%country}(!e+3,3))
break_variance_abs(4,!n) = @val(seq_break_abs_{%country}(!e+4,3))
break_variance_abs(5,!n) = @val(seq_break_abs_{%country}(!e+5,3))
break_variance_abs(6,!n) = @val(seq_break_abs_{%country}(!e+6,3))
'cv
break_variance_abs(3,nr_countries+1)= @val(seq_break_abs_{%country}(!e+3,4))
break_variance_abs(4,nr_countries+1)= @val(seq_break_abs_{%country}(!e+4,4))
break_variance_abs(5,nr_countries+1)= @val(seq_break_abs_{%country}(!e+5,4))
break_variance_abs(6,nr_countries+1)= @val(seq_break_abs_{%country}(!e+6,4))
endif

' Timing of break
if seq_break_abs_{%country}(!e,1) =  "Estimated break dates:" then
Date_variance_abs1(!n) = seq_break_abs_{%country}(!e+1,1)
Date_variance_abs2(!n) = seq_break_abs_{%country}(!e+2,1)
Date_variance_abs3(!n) = seq_break_abs_{%country}(!e+3,1)
Date_variance_abs4(!n) = seq_break_abs_{%country}(!e+4,1)
Date_variance_abs5(!n) = seq_break_abs_{%country}(!e+5,1)
endif

next

' What does the test say?

' ABSOLUTE

if (break_variance_abs(1,!n)>break_variance_abs(1,nr_countries+1)) or (break_variance_abs(2,!n)>break_variance_abs(2,nr_countries+1)) then
' at least 1 break
	if  (break_variance_abs(6,!n)>break_variance_abs(6,nr_countries+1)) then
	' There are 5 breaks
							Date_variance_abs(!n)= @mid(Date_variance_abs5(!n), 5,7)+" "+@mid(Date_variance_abs5(!n), 15,7)+" "+ @mid(Date_variance_abs5(!n), 25,7)+" "+ @mid(Date_variance_abs5(!n), 35,7)+" "+ @mid(Date_variance_abs5(!n), 45,7)
							svector(5) var_abs_dumdate5_{!n} = @wsplit(Date_variance_abs(!n))
							scalar nr_var_abs_break_{%country} = 5
							%var_abs_dumdate1 = var_abs_dumdate5_{!n}(1)  
							%var_abs_dumdate2 = var_abs_dumdate5_{!n}(2)
							%var_abs_dumdate3 = var_abs_dumdate5_{!n}(3)
							%var_abs_dumdate4 = var_abs_dumdate5_{!n}(4)
							%var_abs_dumdate5 = var_abs_dumdate5_{!n}(5)
							' Create Dummy
							smpl @all
							genr DUM2_{%var_abs_dumdate1} = 0
							smpl %var_abs_dumdate1 @last
							DUM2_{%var_abs_dumdate1} = 1		
							smpl @all
							genr DUM2_{%var_abs_dumdate2} = 0
							smpl %var_abs_dumdate2 @last
							DUM2_{%var_abs_dumdate2} = 1		
							smpl @all
							genr DUM2_{%var_abs_dumdate3} = 0
							smpl %var_abs_dumdate3 @last
							DUM2_{%var_abs_dumdate3} = 1		
							smpl @all
							genr DUM2_{%var_abs_dumdate4} = 0
							smpl %var_abs_dumdate4 @last
							DUM2_{%var_abs_dumdate4} = 1		
							smpl @all
							genr DUM2_{%var_abs_dumdate5} = 0
							smpl %var_abs_dumdate5 @last
							DUM2_{%var_abs_dumdate5} = 1				
							%var_abs_dum = "DUM2_"+%var_abs_dumdate1+" "+"DUM2_"+%var_abs_dumdate2+" "+ "DUM2_"+%var_abs_dumdate3+" "+ "DUM2_"+%var_abs_dumdate4+" "+ "DUM2_"+%var_abs_dumdate5
	else
			if  (break_variance_abs(5,!n)>break_variance_abs(5,nr_countries+1))   then
			' there are 4 breaks
							Date_variance_abs(!n)= @mid(Date_variance_abs4(!n), 5,7)+" "+@mid(Date_variance_abs4(!n), 15,7)+" "+ @mid(Date_variance_abs4(!n), 25,7)+" "+ @mid(Date_variance_abs4(!n), 35,7)
							svector(4) var_abs_dumdate4_{!n} = @wsplit(Date_variance_abs(!n))
							scalar nr_var_abs_break_{%country} = 4
							%var_abs_dumdate1 = var_abs_dumdate4_{!n}(1)  
							%var_abs_dumdate2 = var_abs_dumdate4_{!n}(2)
							%var_abs_dumdate3 = var_abs_dumdate4_{!n}(3)
							%var_abs_dumdate4 = var_abs_dumdate4_{!n}(4)
							' Create Dummy
							smpl @all
							genr DUM2_{%var_abs_dumdate1} = 0
							smpl %var_abs_dumdate1 @last
							DUM2_{%var_abs_dumdate1} = 1		
							smpl @all
							genr DUM2_{%var_abs_dumdate2} = 0
							smpl %var_abs_dumdate2 @last
							DUM2_{%var_abs_dumdate2} = 1		
							smpl @all
							genr DUM2_{%var_abs_dumdate3} = 0
							smpl %var_abs_dumdate3 @last
							DUM2_{%var_abs_dumdate3} = 1		
							smpl @all
							genr DUM2_{%var_abs_dumdate4} = 0
							smpl %var_abs_dumdate4 @last
							DUM2_{%var_abs_dumdate4} = 1		
							%var_abs_dum = "DUM2_"+%var_abs_dumdate1+" "+"DUM2_"+%var_abs_dumdate2+" "+ "DUM2_"+%var_abs_dumdate3+" "+ "DUM2_"+%var_abs_dumdate4
			else
					if  (break_variance_abs(4,!n)>break_variance_abs(4,nr_countries+1))   then
					' there are 3 breaks
							Date_variance_abs(!n)= @mid(Date_variance_abs3(!n), 5,7)+" "+@mid(Date_variance_abs3(!n), 15,7)+" "+ @mid(Date_variance_abs3(!n), 25,7)
							svector(3) var_abs_dumdate3_{!n} = @wsplit(Date_variance_abs(!n))
							scalar nr_var_abs_break_{%country} = 3
							%var_abs_dumdate1 = var_abs_dumdate3_{!n}(1)  
							%var_abs_dumdate2 = var_abs_dumdate3_{!n}(2)
							%var_abs_dumdate3 = var_abs_dumdate3_{!n}(3)
							' Create Dummy
							smpl @all
							genr DUM2_{%var_abs_dumdate1} = 0
							smpl %var_abs_dumdate1 @last
							DUM2_{%var_abs_dumdate1} = 1		
							smpl @all
							genr DUM2_{%var_abs_dumdate2} = 0
							smpl %var_abs_dumdate2 @last
							DUM2_{%var_abs_dumdate2} = 1		
							smpl @all
							genr DUM2_{%var_abs_dumdate3} = 0
							smpl %var_abs_dumdate3 @last
							DUM2_{%var_abs_dumdate3} = 1		
							%var_abs_dum = "DUM2_"+%var_abs_dumdate1+" "+"DUM2_"+%var_abs_dumdate2+" "+ "DUM2_"+%var_abs_dumdate3
					else
							if  (break_variance_abs(3,!n)>break_variance_abs(3,nr_countries+1))   then
							' there are 2 breaks
							Date_variance_abs(!n)= @mid(Date_variance_abs2(!n), 5,7)+" "+@mid(Date_variance_abs2(!n), 15,7)
							svector(2) var_abs_dumdate2_{!n} = @wsplit(Date_variance_abs(!n))
							scalar nr_var_abs_break_{%country} = 2
							%var_abs_dumdate1 = var_abs_dumdate2_{!n}(1)  
							%var_abs_dumdate2 = var_abs_dumdate2_{!n}(2)
							' Create Dummy
							smpl @all
							genr DUM2_{%var_abs_dumdate1} = 0
							smpl %var_abs_dumdate1 @last
							DUM2_{%var_abs_dumdate1} = 1		
							smpl @all
							genr DUM2_{%var_abs_dumdate2} = 0
							smpl %var_abs_dumdate2 @last
							DUM2_{%var_abs_dumdate2} = 1		
							%var_abs_dum =  "DUM2_"+%var_abs_dumdate1+" "+"DUM2_"+%var_abs_dumdate2
							else
									' there are 1 breaks
									Date_variance_abs(!n) = @mid(Date_variance_abs1(!n), 5)
									svector(1) var_abs_dumdate1_{!n} = @wsplit(Date_variance_abs(!n))
									scalar nr_var_abs_break_{%country} = 1
									%var_abs_dumdate = var_abs_dumdate1_{!n}(1)
									' Create Dummy
									smpl @all
									genr DUM2_{%var_abs_dumdate} = 0
									smpl %var_abs_dumdate @last
									DUM2_{%var_abs_dumdate} = 1		
									%var_abs_dum = "DUM2_"+%var_abs_dumdate1
							endif
					endif
			endif
	endif
else
' NO BREAKS
scalar nr_var_abs_break_{%country} = 0
endif

' Mean dummies

if nr_mean_break_{%country} = 0 then
%mean_dum = ""
endif

if nr_mean_break_{%country} = 1 then
%name1 = "DUM1_"+mean_dumdate1_{!n}(1)
rename {%name1} c1_S
%mean_dum = "c1_S"
endif

if nr_mean_break_{%country} = 2 then
%name1 = "DUM1_"+mean_dumdate2_{!n}(1)
rename {%name1} c1_S
%name2 = "DUM1_"+mean_dumdate2_{!n}(2)
rename {%name2} c2_S
%mean_dum = "c1_S c2_S"
endif

if nr_mean_break_{%country} = 3 then
%name1 = "DUM1_"+mean_dumdate3_{!n}(1)
rename {%name1} c1_S
%name2 = "DUM1_"+mean_dumdate3_{!n}(2)
rename {%name2} c2_S
%name3 = "DUM1_"+mean_dumdate3_{!n}(3)
rename {%name3} c3_S
%mean_dum = "c1_S c2_S c3_S"
endif

if nr_mean_break_{%country} = 4 then
%name1 = "DUM1_"+mean_dumdate4_{!n}(1)
rename {%name1} c1_S
%name2 = "DUM1_"+mean_dumdate4_{!n}(2)
rename {%name2} c2_S
%name3 = "DUM1_"+mean_dumdate4_{!n}(3)
rename {%name3} c3_S
%name4 = "DUM1_"+mean_dumdate4_{!n}(4)
rename {%name4} c4_S
%mean_dum = "c1_S c2_S c3_S c4_S"
endif

if nr_mean_break_{%country} = 5 then
%name1 = "DUM1_"+mean_dumdate5_{!n}(1)
rename {%name1} c1_S
%name2 = "DUM1_"+mean_dumdate5_{!n}(2)
rename {%name2} c2_S
%name3 = "DUM1_"+mean_dumdate5_{!n}(3)
rename {%name3} c3_S
%name4 = "DUM1_"+mean_dumdate5_{!n}(4)
rename {%name4} c4_S
%name5 = "DUM1_"+mean_dumdate5_{!n}(5)
rename {%name5} c5_S
%mean_dum = "c1_S c2_S c3_S c4_S c5_S"
endif


' Variance ABSOLUTE dummies
if nr_var_abs_break_{%country} = 0 then
%var_dum = ""
endif

if nr_var_abs_break_{%country} = 1 then
%name1 = "DUM2_"+var_abs_dumdate1_{!n}(1)
rename {%name1} alpha1_S
%var_dum = "alpha1_S"
endif

if nr_var_abs_break_{%country} = 2 then
%name1 = "DUM2_"+var_abs_dumdate2_{!n}(1)
rename {%name1} alpha1_S
%name2 = "DUM2_"+var_abs_dumdate2_{!n}(2)
rename {%name2} alpha2_S
%var_dum = "alpha1_S alpha2_S"
endif

if nr_var_abs_break_{%country} = 3 then
%name1 = "DUM2_"+var_abs_dumdate3_{!n}(1)
rename {%name1} alpha1_S
%name2 = "DUM2_"+var_abs_dumdate3_{!n}(2)
rename {%name2} alpha2_S
%name3 = "DUM2_"+var_abs_dumdate3_{!n}(3)
rename {%name3} alpha3_S
%var_dum = "alpha1_S alpha2_S alpha3_S"
endif

if nr_var_abs_break_{%country} = 4 then
%name1 = "DUM2_"+var_abs_dumdate4_{!n}(1)
rename {%name1} alpha1_S
%name2 = "DUM2_"+var_abs_dumdate4_{!n}(2)
rename {%name2} alpha2_S
%name3 = "DUM2_"+var_abs_dumdate4_{!n}(3)
rename {%name3} alpha3_S
%name4 = "DUM2_"+var_abs_dumdate4_{!n}(4)
rename {%name4} alpha4_S
%var_dum = "alpha1_S alpha2_S alpha3_S alpha4_S"
endif

if nr_var_abs_break_{%country} = 5 then
%name1 = "DUM2_"+var_abs_dumdate5_{!n}(1)
rename {%name1} alpha1_S
%name2 = "DUM2_"+var_abs_dumdate5_{!n}(2)
rename {%name2} alpha2_S
%name3 = "DUM2_"+var_abs_dumdate5_{!n}(3)
rename {%name3} alpha3_S
%name4 = "DUM2_"+var_abs_dumdate5_{!n}(4)
rename {%name4} alpha4_S
%name5 = "DUM2_"+var_abs_dumdate5_{!n}(5)
rename {%name5} alpha5_S
%var_dum = "alpha1_S alpha2_S alpha3_S alpha4_S alpha5_S"
endif

' +++++++++++++++++++++++++++
' +++++++++++++++++++++++++++
' 					AR + GARCH
' +++++++++++++++++++++++++++
' +++++++++++++++++++++++++++

smpl {%start} {%last}

' OBJECTS FOR ESTIMATION

string convergence

' To collect index,  AR LAG, initial value, garch model
matrix(4,nr_countries) bestmodel_{!f}

' storing statistics
matrix(10,(ar_max+1)*4)  aic_{%country} = na
matrix(10,(ar_max+1)*4)  ll_{%country}    = na

vector(7*4) arlags
arlags.fill 0,1,2,3,4,5,6,0,1,2,3,4,5,6,0,1,2,3,4,5,6,0,1,2,3,4,5,6

' starting values
for !t = 1 to 10

if !t = 1 then
!s = 1
endif
if !t = 2 then 
!s = 0.9
endif
if !t = 3 then 
!s = 0.8
endif
if !t = 4 then 
!s = 0.7
endif
if !t = 5 then
!s = 0.6
endif
if !t = 6 then 
!s = 0.5
endif
if !t = 7 then 
!s = 0.4
endif
if !t = 8 then 
!s = 0.3
endif
if !t = 9 then 
!s = 0.2
endif
if !t = 10 then 
!s = 0.1
endif

' arch or garch
for !garch= 0 to 1

%arlag = ""

	if !garch = 0 then
	%garch_name = "" 
	else
	%garch_name = "g"
	endif

' normal or t distribution
for !tdist = 0 to 1

%arlag = ""

	if !tdist = 0 then
	%tdist =  ""
	%tdist_name =  ""
	else
	%tdist =  ", tdist"
	%tdist_name =  "t"
	endif

if !tdist = 0 and !garch = 0 then
!m = 0
endif
if !tdist = 1 and !garch = 0 then
!m = 7
endif
if !tdist = 0 and !garch = 1 then
!m = 14
endif
if !tdist = 1 and !garch = 1 then
!m = 21
endif

' number of ar lags
for !arlag = 0 to ar_max step 1
			
												if !arlag = 0 then
												%arlag = ""
												c=0
												equation {%country}_ar{!arlag}_{%garch_name}arch{%tdist_name}_{!t}.arch(1,!garch {%tdist}, c=0.0000000001,m=500,s=!s) g_{%country} constant {%mean_dum}  {%arlag} @ {%var_dum}

													if @isobject(%country+"_ar"+@str(!arlag)+"_"+%garch_name+"arch"+%tdist_name+"_"+@str(!t)) = 1 then

																' test if standard errors exist
																if {%country}_ar{!arlag}_{%garch_name}arch{%tdist_name}_{!t}.@se(1) <> NA then
																' freeze eqn
																freeze(eqn) {%country}_ar{!arlag}_{%garch_name}arch{%tdist_name}_{!t}
																convergence =@wleft(eqn(6,1),2)
																delete eqn
																		' test if nr of iterations is not at its max
																		if convergence = "Convergence achieved" then
																					if !garch= 0 then																
																							if {%country}_ar{!arlag}_{%garch_name}arch{%tdist_name}_{!t}.@coefs(1+nr_mean_break_{%country}+!arlag+2) > 0 then 			
																							' THEN get ll
																							   ll_{%country}(!t,(1+!arlag)+!m) =  {%country}_ar{!arlag}_{%garch_name}arch{%tdist_name}_{!t}.@logl
																							aic_{%country}(!t,(1+!arlag)+!m) =  {%country}_ar{!arlag}_{%garch_name}arch{%tdist_name}_{!t}.@aic
																							else			
																							   ll_{%country}(!t,(1+!arlag)+!m)   = na
																							aic_{%country}(!t,(1+!arlag)+!m) = na
																							endif
																					else 
																							if {%country}_ar{!arlag}_{%garch_name}arch{%tdist_name}_{!t}.@coefs(1+nr_mean_break_{%country}+!arlag+2) > 0 and {%country}_ar{!arlag}_{%garch_name}arch{%tdist_name}_{!t}.@coefs(1+nr_mean_break_{%country}+!arlag+3) > 0 then 				
																							' THEN get ll
																							   ll_{%country}(!t,(1+!arlag)+!m) =  {%country}_ar{!arlag}_{%garch_name}arch{%tdist_name}_{!t}.@logl
																							aic_{%country}(!t,(1+!arlag)+!m) =  {%country}_ar{!arlag}_{%garch_name}arch{%tdist_name}_{!t}.@aic
																							else								
																							   ll_{%country}(!t,(1+!arlag)+!m) = na
																							aic_{%country}(!t,(1+!arlag)+!m) = na					
																							endif
																					endif
																		else
																		   ll_{%country}(!t,(1+!arlag)+!m) = na
																		aic_{%country}(!t,(1+!arlag)+!m) = na
																		endif
																else
															        ll_{%country}(!t,(1+!arlag)+!m)  = na
																aic_{%country}(!t,(1+!arlag)+!m) = na
																endif
													else
													   ll_{%country}(!t,(1+!arlag)+!m)  = na
													aic_{%country}(!t,(1+!arlag)+!m) = na	
													endif

												' if arlag is not 0
												else
									
															if !arlag=1 then	
															%arlag = "g_" + %country + "(-1)"
															c=0
															equation {%country}_ar{!arlag}_{%garch_name}arch{%tdist_name}_{!t}.arch(1,!garch {%tdist}, c=0.0000000001,m=500,s=!s) g_{%country} constant {%mean_dum} {%arlag} @ {%var_dum}

																if @isobject(%country+"_ar"+@str(!arlag)+"_"+%garch_name+"arch"+%tdist_name+"_"+@str(!t)) = 1 then
			
																			' test if standard errors exist
																			if {%country}_ar{!arlag}_{%garch_name}arch{%tdist_name}_{!t}.@se(1) <> NA then
																			' freeze eqn
																			freeze(eqn) {%country}_ar{!arlag}_{%garch_name}arch{%tdist_name}_{!t}
																			convergence =@wleft(eqn(6,1),2)
																			delete eqn
																					' test if nr of iterations is not at its max
																					if convergence = "Convergence achieved" then
																								if !garch= 0 then																
																										if {%country}_ar{!arlag}_{%garch_name}arch{%tdist_name}_{!t}.@coefs(1+nr_mean_break_{%country}+!arlag+2) > 0 then 			
																										' THEN get ll
																							   			ll_{%country}(!t,(1+!arlag)+!m) =  {%country}_ar{!arlag}_{%garch_name}arch{%tdist_name}_{!t}.@logl
																										aic_{%country}(!t,(1+!arlag)+!m) =  {%country}_ar{!arlag}_{%garch_name}arch{%tdist_name}_{!t}.@aic
																										else			
																							   			ll_{%country}(!t,(1+!arlag)+!m)   = na
																										aic_{%country}(!t,(1+!arlag)+!m) = na
																										endif
																								else 
																										if {%country}_ar{!arlag}_{%garch_name}arch{%tdist_name}_{!t}.@coefs(1+nr_mean_break_{%country}+!arlag+2) > 0 and {%country}_ar{!arlag}_{%garch_name}arch{%tdist_name}_{!t}.@coefs(1+nr_mean_break_{%country}+!arlag+3) > 0 then 				
																										' THEN get ll
																							   			ll_{%country}(!t,(1+!arlag)+!m) =  {%country}_ar{!arlag}_{%garch_name}arch{%tdist_name}_{!t}.@logl
																										aic_{%country}(!t,(1+!arlag)+!m) =  {%country}_ar{!arlag}_{%garch_name}arch{%tdist_name}_{!t}.@aic
																										else								
																							   			ll_{%country}(!t,(1+!arlag)+!m) = na
																										aic_{%country}(!t,(1+!arlag)+!m) = na					
																										endif
																								endif
																					else
																		   			ll_{%country}(!t,(1+!arlag)+!m) = na
																					aic_{%country}(!t,(1+!arlag)+!m) = na
																					endif
																			else
															        			ll_{%country}(!t,(1+!arlag)+!m)  = na
																			aic_{%country}(!t,(1+!arlag)+!m) = na
																			endif
																else
													   			ll_{%country}(!t,(1+!arlag)+!m)  = na
																aic_{%country}(!t,(1+!arlag)+!m) = na	
																endif

															' if arlag is not 1
															else
															%arlag = %arlag + "g_" + %country + "(- "+ @str(!arlag) +")" 
															c=0
															equation {%country}_ar{!arlag}_{%garch_name}arch{%tdist_name}_{!t}.arch(1,!garch {%tdist}, c=0.0000000001,m=500,s=!s) g_{%country} constant {%mean_dum} {%arlag} @ {%var_dum}

																	if @isobject(%country+"_ar"+@str(!arlag)+"_"+%garch_name+"arch"+%tdist_name+"_"+@str(!t)) = 1 then
				
																				' test if standard errors exist
																				if {%country}_ar{!arlag}_{%garch_name}arch{%tdist_name}_{!t}.@se(1) <> NA then
																				' freeze eqn
																				freeze(eqn) {%country}_ar{!arlag}_{%garch_name}arch{%tdist_name}_{!t}
																				convergence =@wleft(eqn(6,1),2)
																				delete eqn
																						' test if nr of iterations is not at its max
																						if convergence = "Convergence achieved" then
																									if !garch= 0 then																
																											if {%country}_ar{!arlag}_{%garch_name}arch{%tdist_name}_{!t}.@coefs(1+nr_mean_break_{%country}+!arlag+2) > 0 then 			
																											' THEN get ll
																							   				ll_{%country}(!t,(1+!arlag)+!m) =  {%country}_ar{!arlag}_{%garch_name}arch{%tdist_name}_{!t}.@logl
																											aic_{%country}(!t,(1+!arlag)+!m) =  {%country}_ar{!arlag}_{%garch_name}arch{%tdist_name}_{!t}.@aic
																											else			
																							   				ll_{%country}(!t,(1+!arlag)+!m)   = na
																											aic_{%country}(!t,(1+!arlag)+!m) = na
																											endif
																									else 
																											if {%country}_ar{!arlag}_{%garch_name}arch{%tdist_name}_{!t}.@coefs(1+nr_mean_break_{%country}+!arlag+2) > 0 and {%country}_ar{!arlag}_{%garch_name}arch{%tdist_name}_{!t}.@coefs(1+nr_mean_break_{%country}+!arlag+3) > 0 then 				
																											' THEN get ll
																							   				ll_{%country}(!t,(1+!arlag)+!m) =  {%country}_ar{!arlag}_{%garch_name}arch{%tdist_name}_{!t}.@logl
																											aic_{%country}(!t,(1+!arlag)+!m) =  {%country}_ar{!arlag}_{%garch_name}arch{%tdist_name}_{!t}.@aic
																											else								
																							   				ll_{%country}(!t,(1+!arlag)+!m) = na
																											aic_{%country}(!t,(1+!arlag)+!m) = na					
																											endif
																									endif
																						else
																		   				ll_{%country}(!t,(1+!arlag)+!m) = na
																						aic_{%country}(!t,(1+!arlag)+!m) = na
																						endif
																				else
															        				ll_{%country}(!t,(1+!arlag)+!m)  = na
																				aic_{%country}(!t,(1+!arlag)+!m) = na
																				endif
																	else
													   				ll_{%country}(!t,(1+!arlag)+!m)  = na
																	aic_{%country}(!t,(1+!arlag)+!m) = na	
																	endif

															' if arlag = 1
															endif
												' if arlage = 0
												endif				

'arlag
next

' normal / tdist
next

' arch/arch
next

'next initial value
next

' ==============
' BEST MODEL
' ==============

' BEST INITIAL
vector(7*4) best_initial_{%country} 

vector(7*4) best_initial2_{%country} =@cimax(ll_{%country})

for !i = 1 to 7*4
		if  best_initial2_{%country}(!i) = 0 then
		best_initial_{%country}(!i) = na
		else 
 		best_initial_{%country}(!i) =best_initial2_{%country}(!i)
		endif
next

' BEST LL & AIC
vector(7*4) best_ll_{%country}
vector(7*4) best_aic_{%country}
for !i = 1 to 7*4
if best_initial_{%country}(!i) = na then
best_ll_{%country}(!i) = na
best_aic_{%country}(!i) = na
else
best_ll_{%country}(!i) = ll_{%country}(best_initial_{%country}(!i),!i)
best_aic_{%country}(!i) = aic_{%country}(best_initial_{%country}(!i),!i)
endif
next

' index of model with lowest AIC
bestmodel_{!f}(1,!n) = @imin(best_aic_{%country})
' AR lag
bestmodel_{!f}(2,!n) = arlags(bestmodel_{!f}(1,!n))
' Initial value
bestmodel_{!f}(3,!n) = best_initial_{%country}(bestmodel_{!f}(1,!n))

if bestmodel_{!f}(1,!n) >= 1 and bestmodel_{!f}(1,!n) <= 7 then
bestmodel_{!f}(4,!n) = 1
%varmodel = "arch"
endif
if bestmodel_{!f}(1,!n) >= 8 and bestmodel_{!f}(1,!n)<= 14 then
bestmodel_{!f}(4,!n) = 2
%varmodel = "archt"
endif
if bestmodel_{!f}(1,!n) >=15 and bestmodel_{!f}(1,!n)<=21 then
bestmodel_{!f}(4,!n) = 3
%varmodel = "garch"
endif
if bestmodel_{!f}(1,!n) >=22 and bestmodel_{!f}(1,!n)<=28 then
bestmodel_{!f}(4,!n) = 4
%varmodel = "garcht"
endif

%arlag      = @str(bestmodel_{!f}(2,!n))
%initial_b      = @str(bestmodel_{!f}(3,!n))
%eq1 = %country + "_ar" + %arlag +"_"+ %varmodel + "_" + %initial_b

 freeze(BEST{!model}_{%country}{!f}) {%eq1}


		' RES DIAG

		vector(16) res_diag
		matrix(6) res_check = 1

		' create residual series of best model
		{%eq1}.makeresids resids_{%country}
		{%eq1}.makeresids(s) resids_stand_{%country}
		' Standardized residuals
		
		freeze(tab0) resids_stand_{%country}.stats
		freeze(tab1) resids_stand_{%country}.teststat(mean=0, variance=1)
		' the mean
		res_diag(1) = @val(tab0(6,2))
		' probability
		res_diag(2) = @val(tab1(11,4))
		' the variance
		res_diag(3) = @val(tab0(10,2))*@val(tab0(10,2))
		' probability
		res_diag(4) = @val(tab1(18,4))
		'delete res_eq1
		delete tab0
		delete tab1

		' Q
		freeze(tab1) {%eq1}.correl(10)
		res_diag(5) = @val(tab1(9,6))
		res_diag(6) = @val(tab1(9,7))
		res_diag(7) = @val(tab1(15,6))
		res_diag(8) = @val(tab1(15,7))
		delete tab1
		
		' Q^2
		freeze(tab1) {%eq1}.correlsq(10)
		res_diag(9) = @val(tab1(9,6))
		res_diag(10) = @val(tab1(9,7))
		res_diag(11) = @val(tab1(15,6))
		res_diag(12) = @val(tab1(15,7))
		delete tab1

		' ARCH(3)  ==>  n*R^2
		freeze(tab1)  {%eq1}.archtest(3)
		res_diag(13) = @val(tab1(4,2))
		res_diag(14) = @val(tab1(4,5))
		delete tab1

		' ARCH(9)  ==>   n*R^2
		freeze(tab1)  {%eq1}.archtest(9)
		res_diag(15) = @val(tab1(4,2))
		res_diag(16) = @val(tab1(4,5))
		delete tab1

		' TEST IF RESIDUALS ARE OK
		
		if res_diag(2) <0.05 then
		res_check(1) = 0
		endif
		if res_diag(4) <0.05 then
		res_check(2) = 0
		endif
		if res_diag(6) <0.05 then
		res_check(3) = 0
		endif
		if res_diag(8) <0.05 then
		res_check(4) = 0
		endif
		if res_diag(10) <0.05 and res_diag(14) <0.05 then
		res_check(5) = 0
		endif
		if res_diag(12) <0.05 and res_diag(16) <0.05 then
		res_check(6) = 0
		endif

		if  @sum(res_check)= 6 then
		well_specified_m{!model}_{%country}(!f) = 1
		endif

		' ZILC?
		include zilc_noystar_m3_forecast

		rename res_diag res_diag_{%country}_{!f}

		' CLEAN UP

		delete res_check
		delete resids_stand_{%country}
		delete convergence

		'include not_wellspecified_m3_ita
		'include not_wellspecified_m3_jap
		'include not_wellspecified_m3_us


		' SERIES FOR DENSITY FORECAST

		' Obtain variance series
		{%eq1}.makegarch condvar_noystar_{%country} 
		write(t=xls) .\..\Initial_values\{%sample}\var_{%country}_m{!model}_{!f} condvar_noystar_{%country}
		delete condvar_noystar_{%country} 

		' save error series
		{%eq1}.makeresids resids_{%country}
		write(t=xls) .\..\Initial_values\{%sample}\res_{%country}_m{!model}_{!f} resids_{%country}
		delete resids_{%country}

' FORECAST

' Forecast period (up until 1 year ahead)
%first_f = @otod(@dtoo(%end_estimation_set)+!f-1 +1)
%last_f = @otod(@dtoo(%end_estimation_set)+!f-1 +12)

' set forecast smple
smpl {%first_f} {%last_f}

' Forecast
{%eq1}.forecast fcast

' What you observed in the future MINUS your forecast
m{!model}_fcast_err_{%country}(!f,1) = g_{%country}(@dtoo(%first_f)) 		- fcast(@dtoo(%first_f))
m{!model}_fcast_err_{%country}(!f,2) = g_{%country}(@dtoo(%first_f)+2) 	- fcast(@dtoo(%first_f)+2)
m{!model}_fcast_err_{%country}(!f,3) = g_{%country}(@dtoo(%first_f)+5) 	- fcast(@dtoo(%first_f)+5)
m{!model}_fcast_err_{%country}(!f,4) = g_{%country}(@dtoo(%first_f)+8) 	- fcast(@dtoo(%first_f)+8)
m{!model}_fcast_err_{%country}(!f,5) = g_{%country}(@dtoo(%first_f)+11) - fcast(@dtoo(%first_f)+11)

delete fcast

' STORE ESTIMATES AND EXPORT TO EXCEL

' Estimates
vector estimates_{%country}_m{!model}_{!f} = {%eq1}.@coefs

' Estimates parameters
vector(6) esti_para_{%country}_m{!model}_{!f} = 0

' Nr of estimates
esti_para_{%country}_m{!model}_{!f}(1) = @columns(@transpose(estimates_{%country}_m{!model}_{!f}))

' Nr of mean dummies
esti_para_{%country}_m{!model}_{!f}(2) = nr_mean_break_{%country}
' Nr of AR lags
esti_para_{%country}_m{!model}_{!f}(3) = bestmodel_{!f}(2,!n)
' Nr of WORLD lags
' na
' Nr of var dummies
esti_para_{%country}_m{!model}_{!f}(5) = nr_var_abs_break_{%country}
' variance model
esti_para_{%country}_m{!model}_{!f}(6) = bestmodel_{!f}(4,!n)

' Save estimates
estimates_{%country}_m{!model}_{!f}.write(t=xls) .\..\Estimates_parameters\model_{!model}\estimates_{%country}_m{!model}_{!f}
' Save parameters
esti_para_{%country}_m{!model}_{!f}.write(t=xls) .\..\Estimates_parameters\model_{!model}\esti_para_{%country}_m{!model}_{!f}

' RENAME2 MEAN DUMMY
if nr_mean_break_{%country} = 1 then
%name1 = "DUM1_"+mean_dumdate1_{!n}(1)
rename  c1_S {%name1}
endif

if nr_mean_break_{%country} = 2 then
%name1 = "DUM1_"+mean_dumdate2_{!n}(1)
rename c1_S {%name1}
%name2 = "DUM1_"+mean_dumdate2_{!n}(2)
rename c2_S  {%name2} 
endif

if nr_mean_break_{%country} = 3 then
%name1 = "DUM1_"+mean_dumdate3_{!n}(1)
rename c1_S {%name1}
%name2 = "DUM1_"+mean_dumdate3_{!n}(2)
rename c2_S {%name2} 
%name3 = "DUM1_"+mean_dumdate3_{!n}(3)
rename  c3_S {%name3}
endif

if nr_mean_break_{%country} = 4 then
%name1 = "DUM1_"+mean_dumdate4_{!n}(1)
rename c1_S  {%name1} 
%name2 = "DUM1_"+mean_dumdate4_{!n}(2)
rename  c2_S {%name2}
%name3 = "DUM1_"+mean_dumdate4_{!n}(3)
rename c3_S  {%name3} 
%name4 = "DUM1_"+mean_dumdate4_{!n}(4)
rename c4_S {%name4} 

endif

if nr_mean_break_{%country} = 5 then
%name1 = "DUM1_"+mean_dumdate5_{!n}(1)
rename c1_S  {%name1}
%name2 = "DUM1_"+mean_dumdate5_{!n}(2)
rename c2_S  {%name2}
%name3 = "DUM1_"+mean_dumdate5_{!n}(3)
rename c3_S  {%name3}
%name4 = "DUM1_"+mean_dumdate5_{!n}(4)
rename c4_S  {%name4} 
%name5 = "DUM1_"+mean_dumdate5_{!n}(5)
rename c5_S  {%name5}
endif

' RENAME2 VARIANCE ABS DUMMY

if nr_var_abs_break_{%country} = 1 then
%name1 = "DUM2_"+var_abs_dumdate1_{!n}(1)
rename alpha1_S  {%name1}
endif

if nr_var_abs_break_{%country} = 2 then
%name1 = "DUM2_"+var_abs_dumdate2_{!n}(1)
rename alpha1_S  {%name1} 
%name2 = "DUM2_"+var_abs_dumdate2_{!n}(2)
rename alpha2_S  {%name2} 
endif

if nr_var_abs_break_{%country} = 3 then
%name1 = "DUM2_"+var_abs_dumdate3_{!n}(1)
rename alpha1_S  {%name1} 
%name2 = "DUM2_"+var_abs_dumdate3_{!n}(2)
rename  alpha2_S {%name2}
%name3 = "DUM2_"+var_abs_dumdate3_{!n}(3)
rename alpha3_S {%name3} 
endif

if nr_var_abs_break_{%country} = 4 then
%name1 = "DUM2_"+var_abs_dumdate4_{!n}(1)
rename  alpha1_S {%name1}
%name2 = "DUM2_"+var_abs_dumdate4_{!n}(2)
rename alpha2_S  {%name2} 
%name3 = "DUM2_"+var_abs_dumdate4_{!n}(3)
rename  alpha3_S {%name3}
%name4 = "DUM2_"+var_abs_dumdate4_{!n}(4)
rename  alpha4_S {%name4}
endif

if nr_var_abs_break_{%country} = 5 then
%name1 = "DUM2_"+var_abs_dumdate5_{!n}(1)
rename alpha1_S  {%name1} 
%name2 = "DUM2_"+var_abs_dumdate5_{!n}(2)
rename  alpha2_S {%name2}
%name3 = "DUM2_"+var_abs_dumdate5_{!n}(3)
rename alpha3_S  {%name3}
%name4 = "DUM2_"+var_abs_dumdate5_{!n}(4)
rename  alpha4_S {%name4}
%name5 = "DUM2_"+var_abs_dumdate5_{!n}(5)
rename  alpha5_S {%name5}
endif

delete {%country}_*



' next country
!n = !n+1
next

' DELETE BREAK DETECTION OBJECTS

delete abs_*
delete break*

Date_mean = ""
Date_mean1 = ""
Date_mean2 = ""
Date_mean3 = ""
Date_mean4 = ""
Date_mean5 = ""

Date_variance_abs = ""
Date_variance_abs1 = ""
Date_variance_abs2 = ""
Date_variance_abs3 = ""
Date_variance_abs4 = ""
Date_variance_abs5 = ""

delete dum1*
delete dum2*
delete eq*

delete global*
delete mean_dumdate*
delete nr_mean*
delete nr_var*
delete resid2*
delete seq_*
delete var_abs_dumdate*

' DELETE ESTIMATION OBJECTS

delete aic_*
delete best_*
delete ll_*

' next sample
next

delete date_mean*
delete date_variance*
delete ser

wfsave .\forecast_errors_m3.wf1

' **************************
' END OF PROGRAM
' **************************


