proc()=SFElikgarch() ; ---------------------------------------------------------------------- ; EBook SFE ; ---------------------------------------------------------------------- ; See_also genarch ; ---------------------------------------------------------------------- ; Macro SFElikgarch ; ---------------------------------------------------------------------- ; Description plots the likelihood function of a GARCH(1,1) Process ; ---------------------------------------------------------------------- ; Usage SFElikgarch() ; ---------------------------------------------------------------------- ; Author Christian Hafner, 981123 ; ---------------------------------------------------------------------- setsize(600,450) randomize(0) n=500 k=8 x=genarch(0.1|0.1,0.8,n+50) ms=var(x) x=x[51:n+50] theta=grid (#(0.02,0.5), #(0.02,0.05), #(k,k)) l1=matrix(k^2,1) sigma=matrix(n,1) i=1 while(i<=k^2) a=theta[i,1] b=theta[i,2] omega=(1-a-b)*ms l=0 t=2 while (t<=n) sigma[t]=omega+a*x[t-1]^2+b*sigma[t-1] l=l-0.5*log(sigma[t])-0.5*x[t]^2/sigma[t] t=t+1 endo l1[i]=l i=i+1 endo ; m = matrix(3)* 5 form = "%.2f" | "%.2f" | "%.1f" gc = grcube(theta~l1,m,form) gs = grsurface(theta~l1) di = createdisplay(1,1) show(di,1,1,gs,gc.box,gc.x,gc.y,gc.z,gc.c) setgopt(di,1,1,"title","Likelihood function of a GARCH(1,1) Process","border",0) c = min(l1)+(1:19)*(max(l1)-min(l1))/20 gs = grcontour2(theta~l1, c) maxlik = paf(theta~l1, l1==max(l1)) maxlik = setmask(maxlik[,1:2],"cross","huge") d2 = createdisplay (1,1) show (d2, 1, 1, gs, maxlik) setgopt(d2,1,1,"title","Contour Plot of Likelihood","xlabel","Alpha","ylabel","Beta","xvalue",0|1,"xmajor",0.02,"border",0) endp ;------------------------------------------------------------------ library("times") library("graphic") library("plot") SFElikgarch()