'==================================================
'	SIMULACION Y ESTIMACION ERROR CORRECTION MODEL
'==================================================

cd "H:\SIMULACIONES\Eviews\Series de Tiempo"

wfcreate(wf=ECM,page=Base) q 1187:1 2018:4

'---------------------------------------------
' GENERACIÓN DE LAS SERIES
'---------------------------------------------
series z0= nrnd
series ez = 15*nrnd
series x0= nrnd
series ex = 35*nrnd
series y0=nrnd
series ey=10+15*nrnd

'----------------------------------------------------------------------------
' PROCESO GENERADOR DE DATOS REGRESORES
'----------------------------------------------------------------------------

For !k=1200 to 2018
	for !i= 1 to 4
		smpl {!k}q{!i}  {!k}q{!i}
		
		series x0 = 2 + 1*x0(-1) + ex
		series z0 = 0.5 + 1*z0(-1) + ez

	next
Next

'-------------------------------
' POSITIVE VALUES
'------------------------------
smpl @all

FOR %var x0 z0
	scalar a0=@min({%var})
		if a0<0 then
			series {%var}={%var}-a0+100
		endif
NEXT

'-----------------------------------------------
' PDG - DEPENDENT VARIABLE
'----------------------------------------------
For !k=1200 to 2018
	for !i= 1 to 4
		smpl {!k}q{!i}  {!k}q{!i}
		series y0 = 10 + 0.9*y0(-1) - 0.65*z0 + 0.85*x0  + ey
	next
Next

pagestruct(start=1800Q1)
smpl 1800q1 2018q4

'Gráfico de la dinámica
graph yx0.line y0 x0 z0
yx0.setelem(1) axis(right)
show yx0

'TRANSFORMANDO LAS VARIABLES

smpl @first 2010q4
series y=y0
smpl @all

For %x y y0 x0 z0
	series l{%x}=log({%x})
	series Dl{%x}=D(log({%x}))
	series d{%x}=D({%x})
Next

'=========================
'	USING FORECAST OPTION
'=========================

equation eq0mce.ls(cov=hac, covbw=neweywest) dy dy(-1 to -4) dx0(0 to -3) dz0(0 to -3)

smpl 2011q1 2018q4
eq0mce.forecast(f=actual, e,g) dy_hat c_se
series y=y(-1) + dy_hat

scalar b0=1
scalar ci1=0.95
scalar ci2=0.2
scalar ci3=0.05
delete(noerr) fanchart0
group fanchart0

For !a0=ci1 to ci2 step -ci3

	smpl 1800q1 2010q4
	series yr_2_up_{b0}=y
	series yr_2_low_{b0}=y
	scalar beta=!a0
	scalar alpha{b0}=-@qtdist((1-beta)/2,1000000)

	smpl 2011q1 2018q4
	series yr_2_up_{b0}=yr_2_up_{b0}(-1)+dy_hat + alpha{b0}*c_se
	series yr_2_low_{b0}=yr_2_low_{b0}(-1)+dy_hat - alpha{b0}*c_se

	fanchart0.add  yr_2_up_{b0} yr_2_low_{b0}
	scalar b0=b0+1
Next

series yr2=y0
fanchart0.add y0
fanchart0.add yr2
freeze(fanchart1, mode=overwrite) fanchart0.band(o="modern")
show fanchart1
fanchart1.legend -display
scalar ci4=(ci1-ci2)/(ci3)

for !i=1 to ci4
	!r=@round(0.2*255)
	!b=0
	!g=@round((1-0.22*@sqrt(!i) )*255)
	fanchart1.setelem(!i) fcolor(@rgb(!r,!g,!b))
next
smpl 2010q4 2018q4
scalar ci5=ci4+1
fanchart1.setelem({ci5}) fcolor(white) lwidth(25)

'=======================
'	USING MAKE MODEL
'=======================

eq0mce.makemodel(Mod0)

!numsim=100000
scalar b0=1

delete(noerr) fanchart2
group fanchart2
scalar ci1=0.95
scalar ci2=0.2
scalar ci3=0.05

For !a0=ci1 to ci2 step -ci3

	smpl 1800q1 2010q4
	series yr_3_up{b0}=y0
	series yr_3_low{b0}=y0

	smpl 2011q1 2018q4

	Mod0.stochastic(i=n, b={!a0}, r=!numsim)
	Mod0.solveopt(s=b, d=d)
	Mod0.solve
	series yr_3_up{b0}=yr_3_up{b0}(-1)+dy_0h
	series yr_3_low{b0}=yr_3_low{b0}(-1)+dy_0l

	
	fanchart2.add yr_3_up{b0} yr_3_low{b0} 
	scalar b0=b0+1

Next

fanchart2.add y0
fanchart2.add yr2
freeze(fanchart3, mode=overwrite) fanchart2.band(o="modern")
show fanchart3
fanchart3.legend -display
scalar ci4=({ci1}-{ci2})/({ci3})
for !i=1 to ci4
	!r=@round(0.2*255)
	!b=0
	!g=@round((1-0.22*@sqrt(!i) )*255)
	fanchart3.setelem(!i) fcolor(@rgb(!r,!g,!b))
next
smpl 2010q4 2018q4
scalar ci5=ci4+1
fanchart3.setelem({ci5}) fcolor(white) lwidth(25)


