
' standardize the series
genr d_GDP = (g_GDP - @mean(g_GDP))/@stdev(g_GDP)
genr d_br = (g_br - @mean(g_br))/@stdev(g_br)
genr d_m = (g_m - @mean(g_m))/@stdev(g_m)											
genr d_m2 = (g_m2 - @mean(g_m2))/@stdev(g_m2)

'setup the Dynamic Factor Model in State Space form
sspace ss_5

 'if d_gdp = na then
ss_5.append @signal d_GDP = (nrnd)
'else
ss_5.append @signal d_GDP = c(1)*(s1*(1/3)+s2*(2/3)+s3*(1)+s4*(2/3)+s5*(1/3))+(u1*(1/3)+u2*(2/3)+u3*(1)+u4*(2/3)+u5*(1/3)) + [var=exp(c(44))]
endif
ss_5.append @signal d_br = c(3)*(s1+s2+s3+s4+s5)+u_br
ss_5.append @signal d_m  = c(4)*(s1+s2+s3+s4+s5)+u_m
ss_5.append @signal d_m2  = c(5)*(s1+s2+s3+s4+s5)+um2+[var=exp(c(43))]


ss_5.append @state s1 = c(10)*s1(-1)+c(11)*s2(-1) + [var =1] 
ss_5.append @state s2 = s1(-1)
ss_5.append @state s3 = s2(-1)
ss_5.append @state s4 = s3(-1)
ss_5.append @state s5 = s4(-1)
ss_5.append @state u1 = c(12)*u1(-1)+c(13)*u2(-1) + [var =1]
ss_5.append @state u2 = u1(-1)
ss_5.append @state u3 = u2(-1)
ss_5.append @state u4 = u3(-1)
ss_5.append @state u5 = u4(-1)
ss_5.append @state u_br = u_br(-1)+[var=exp(c(32))] 
ss_5.append @state u_m = u_m(-1)+[var=exp(c(33))] 
ss_5.append @state u_m2 = u_m2(-1)+[var=exp(c(43))]

c(1) = 0.3
c(2) = 0.1
c(3) = 0.4
c(4) = 0.4
c(5) = 0.4
c(6) = 0.3
c(7) = 0.1
c(8) = 0.1
c(9) = 0.1   
c(10) =0.1
c(11) = 0.3
c(12) = 0.1
c(13) = 0.1
c(14) = -0.3
c(15) = 0.65
c(16) = 0.3
c(17) = 0.95

c(31) = 0.1 'log(@sqrt(@var(d_gdp)))
c(32) = 0.1 'log(@sqrt(@var(d_br)))
c(33) =  0.1 'log(@sqrt(@var(d_m)))
c(43) = 0.1 'log(@sqrt(@var(d_m2)))
c(44) = 0.1

'estimate 
ss_5.ml(showopts,m=2000,c=1e-7,a)
show ss_5.output

