/* vf_fru_a.opt full revelation unrestricted a=1926-51 b=1952-96 */ new; library optmum,PGRAPH; format /m1 /rd 9,5; load data[900,1]=vwxs2000.txt; @log vw excess@ @1926.1 - 2000.12@ bk=26*12; yy= data[1:bk,1]; t=rows(yy); output file=output\vf_fru_a.out reset; output off; @initial values of parameters@ prmtr_in={ 3.47967 2.90055 -3.56423 -2.13390 0.04563 0.10066 -0.53274 }; prmtr_in=prmtr_in'; @ Maximum Likelihood Estimation @ {xout,fout,gout,cout}=optmum(&lik_fcn,PRMTR_IN); @ prmtr estimates, -log lik value, Grandient, code@ PRM_FNL=TRANS(xout); @ Estimated coefficients, constrained@ output on; "vf_fru_a.out"; "VW log excess returns 1926:1 to 1951:12"; "Y_t-1=S_t-1, Y_t=S_t"; "06/29/2000"; "==FINAL OUTPUT========================================================"; "initial values of prmtr is"; prmtr_in'; "=============================================================="; "likelihood value is ";; -fout; "sample size is ";;t; "cout";;cout; "Estimated parameters are:"; " SIG0 SIG1 QQQ PPP MU0 MU1 DDD "; prm_fnl'; OUTPUT OFF; "Calculating Hessian..... Please be patient!!!!"; hout=inv(hessp(&lik_fcn,xout)); grdn_fnl=gradfd(&TRANS,xout); Hsn_fnl=grdn_fnl*hout*grdn_fnl'; SD_fnl =sqrt(diag(Hsn_fnl)); @Standard errors of the estimated coefficients@ OUTPUT ON; "Standard errors of parameters are:"; sd_fnl'; "==============================================================="; "(";;xout';;")"; OUTPUT OFF; {pr_tt,pr_tl}=FILTER(XOUT); smooth1=SMOOTH(pr_tt,pr_tl,XOUT); FLTR=pr_tt~pr_tl~smooth1; @s_t=(1-q)+lambda*s_t-1+v_t@ @lambda=-1+p+q@ lambda_prm=-1+prm_fnl[4]+prm_fnl[3]; ee=yy[2:t]-prm_fnl[5]- prm_fnl[6]*((1-prm_fnl[3])+lambda_prm*smooth1[1:t-1])- prm_fnl[7]*(smooth1[2:t]-((1-prm_fnl[3])+lambda_prm*smooth1[1:t-1])); sig_ee1=((prm_fnl[1]^2)*(1-smooth1[2:t])+(prm_fnl[2]^2)*smooth1[2:t])^0.5; sig_ee2=prm_fnl[1]*(1-smooth1[2:t])+prm_fnl[2]*smooth1[2:t]; format /m1 /rd 8,4; output file=output\vf_fru_a.dta reset; output on; FLTR; output off; output file=output\vf_fru_a.prn reset; output on; ee~sig_ee1~sig_ee2; output off; xy(seqa(1,1,rows(pr_tt)),pr_tt~pr_tl); xy(seqa(1,1,rows(smooth1)),smooth1); END; @ END OF MAIN PROGRAM @ @========================================================================@ @========================================================================@ PROC LIK_FCN(PRMTR1); LOCAL ppp,qqq,mu0,mu1,SV0,SV1,ddd,PR_L0,PR_L1,LIKV,J_ITER,PR_TL00,PRMTR,lfy, PR_TL01,PR_TL10,PR_TL11,PROB_TL1,E00,E01,E10,E11,fy00,fy01,fy10,fy11,fy,ddd1; PRMTR=TRANS(PRMTR1); LOCATE 15,1; PRMTR'; SV0=prmtr[1]^2; SV1=prmtr[2]^2; qqq=prmtr[3]; ppp=prmtr[4]; mu0=prmtr[5]; mu1=prmtr[6]; ddd=prmtr[7]; @============INITIALIZING THE FILTER WITH STEADY STATE PROB=========@ PR_L0=(1-ppp)/(2-ppp-qqq); PR_L1=(1-qqq)/(2-ppp-qqq); @====================================================================@ LIKV=0; J_ITER = 1; DO UNTIL J_ITER>T; PR_TL00=qqq*PR_L0; PR_TL01=(1-qqq)*PR_L0; PR_TL10=(1-ppp)*PR_L1; PR_TL11=ppp*PR_L1; PROB_TL1=PR_TL01+PR_TL11; E00=yy[j_iter]-mu0-mu1*(1-qqq)-ddd*(-(1-qqq)); E01=yy[j_iter]-mu0-mu1*(1-qqq)-ddd*(1-(1-qqq)); E10=yy[j_iter]-mu0-mu1*ppp-ddd*(-ppp); E11=yy[j_iter]-mu0-mu1*ppp-ddd*(1-ppp); /* E00=yy[j_iter]-mu0; E01=yy[j_iter]-mu0-mu1; E10=yy[j_iter]-mu0; E11=yy[j_iter]-mu0-mu1; */ fy00=((1/SQRT(2*PI*SV0))*EXP(-0.5*(E00^2)/SV0))*PR_TL00; fy01=((1/SQRT(2*PI*SV1))*EXP(-0.5*(E01^2)/SV1))*PR_TL01; fy10=((1/SQRT(2*PI*SV0))*EXP(-0.5*(E10^2)/SV0))*PR_TL10; fy11=((1/SQRT(2*PI*SV1))*EXP(-0.5*(E11^2)/SV1))*PR_TL11; fy=fy00+fy01+fy10+fy11; LIKV=LIKV-ln(fy); PR_L0=(fy00+fy10)/fy; PR_L1=(fy01+fy11)/fy; J_ITER = J_ITER+1; ENDO; RETP(LIKV); ENDP; @=====================================================================@ PROC (2)=FILTER(PRMTR1); LOCAL ppp,qqq,mu0,mu1,SV0,SV1,ddd,PR_L0,PR_L1,J_ITER,PR_TL00,PRMTR, PR_TL01,PR_TL10,PR_TL11,PROB_TL1,E00,E01,E10,E11,fy00,fy01,fy10,fy11,fy, PR_STL,PR_STT,ddd1; PRMTR=TRANS(PRMTR1); LOCATE 15,1; PRMTR'; SV0=prmtr[1]^2; SV1=prmtr[2]^2; qqq=prmtr[3]; ppp=prmtr[4]; mu0=prmtr[5]; mu1=prmtr[6]; ddd=prmtr[7]; PR_STL={}; PR_STT={}; @============INITIALIZING THE FILTER WITH STEADY STATE PROB=========@ PR_L0=(1-ppp)/(2-ppp-qqq); PR_L1=(1-qqq)/(2-ppp-qqq); @====================================================================@ J_ITER = 1; DO UNTIL J_ITER>T; PR_TL00=qqq*PR_L0; PR_TL01=(1-qqq)*PR_L0; PR_TL10=(1-ppp)*PR_L1; PR_TL11=ppp*PR_L1; PROB_TL1=PR_TL01+PR_TL11; PR_STL=PR_STL|PROB_TL1; E00=yy[j_iter]-mu0-mu1*(1-qqq)-ddd*(-(1-qqq)); E01=yy[j_iter]-mu0-mu1*(1-qqq)-ddd*(1-(1-qqq)); E10=yy[j_iter]-mu0-mu1*ppp-ddd*(-ppp); E11=yy[j_iter]-mu0-mu1*ppp-ddd*(1-ppp); /* E00=yy[j_iter]-mu0; E01=yy[j_iter]-mu0-mu1; E10=yy[j_iter]-mu0; E11=yy[j_iter]-mu0-mu1; */ fy00=(1/SQRT(2*PI*SV0))*EXP(-0.5*(E00^2)/SV0)*PR_TL00; fy01=(1/SQRT(2*PI*SV1))*EXP(-0.5*(E01^2)/SV1)*PR_TL01; fy10=(1/SQRT(2*PI*SV0))*EXP(-0.5*(E10^2)/SV0)*PR_TL10; fy11=(1/SQRT(2*PI*SV1))*EXP(-0.5*(E11^2)/SV1)*PR_TL11; fy=fy00+fy01+fy10+fy11; PR_L0=(fy00+fy10)/fy; PR_L1=(fy01+fy11)/fy; PR_STT=PR_STT|PR_L1; J_ITER = J_ITER+1; ENDO; RETP(PR_STT,PR_STL); ENDP; @======================================================================@ @======================================================================@ PROC SMOOTH(prtt,prtl,PRMTR2); local ppp, qqq, pr_sm0,pr_sm1, j_iter,pr_sm00,pr_sm01,pr_sm10,pr_sm11, pr_tt0,pr_tl0,PRMTR,pr_tt1,pr_tl1; PRMTR=TRANS(PRMTR2); qqq=prmtr[3]; ppp=prmtr[4]; pr_tt1=prtt; pr_tl1=prtl; pr_tt0=1-pr_tt1; pr_tl0=1-pr_tl1; pr_sm0=pr_tt0; pr_sm1=pr_tt1; j_iter=T-1; do until j_iter < 1; pr_sm00=pr_sm0[j_iter+1]*qqq* pr_tt0[j_iter]/ pr_tl0[j_iter+1]; pr_sm01=pr_sm1[j_iter+1]*(1-qqq)*pr_tt0[j_iter]/ pr_tl1[j_iter+1]; pr_sm10=pr_sm0[j_iter+1]*(1-ppp)*pr_tt1[j_iter]/ pr_tl0[j_iter+1]; pr_sm11=pr_sm1[j_iter+1]*ppp* pr_tt1[j_iter]/ pr_tl1[j_iter+1]; pr_sm0[j_iter,1]=pr_sm00+pr_sm01; pr_sm1[j_iter,1]=pr_sm10+pr_sm11; j_iter=j_iter -1; endo; RETP(pr_sm1); endp; @++++++++++++++++++++++++++++++++++++++++++++++++++++++++@ PROC TRANS(c0); @constraining valures of reg. coeff. @ Local c1; c1=c0; c1[1:2]=exp(-c0[1:2]); c1[3:4]=exp(-c0[3:4])./ (1+exp(-c0[3:4])); c1[5:7]=c0[5:7]/10; retp(c1); endp; @=====================================================================@