matrix - Oxmetrics, Matrices as input in loglikelihood function (GARCH) -


i'm trying write program in oxmetrics estimates multivariate garch model. multivariate garch model has unconditional covariance matrix (should x variable) input, i'm unsure how correctly specify correct matrix @ each iteration.

my program looks follows now:

//global variable; visible in likelihood function  decl x;   //likelihood contributions  garch_likelihood_contributions(likval_t, par)  {  //local variables decl covar, lik, h,c,a, i;  //parameters c   = par[0];   = par[1];   //conditional covariance sequence  h          = constant(.nan,2,2);  h          = c*c'+ exp(-a)*h[0][]+a*exp(-a)*x[0][];  h[][0] = 0;            //initial value    x[][0] = sumc(covar[m])/2071;   // not correct specified yet, should    sample average of covariance matrices //   for(decl i=1; i<columns(x); ++i)      {          h[0][i] = c*c'+ exp(-a)*h[i-1][]+a*exp(-a)*x[i-1][];      }  //likelihood contributions lik    = constant(.nan,columns(x),1);                       lik[0]    = 0.5*log(determinant(h[][i-1]))+  0.5*x[1][]*invert(h[][i-1])*x[1][]';   for(decl i=1;i<2071;++i)     {          lik[i]  = 0.5*log(determinant(h[][i-1])) +  0.5*x[i-1][]*invert(h[][i-1])*x[i-1][]'; // stod x[i+1]     }  //   adfunc[0]     = lik;  //   return !ismissing(adfunc[0]);  }    decl likval_t;      //return vector of likelihood-contributions     likval_t[0] = lik;  //return success return 1; }  //likelihood function garch_likelihood(par, likval, avscore, amhessian) { //local variables decl likval_t;  //likelihood contributions garch_likelihood_contributions(&likval_t, par);  //return likelihood-value likval[0] = double(sumc(likval_t));  //return success return 1; }  main() { //declare variables decl data; decl loglik, par; decl c, a, covar; decl vol, r, s_t, k, p;  //load data:  data    = loadmat("covariances.in7")'; p       = data[0][0:];  covar = data[0:1][0:];    x          = constant(.nan,2,2);  (decl = 0, < columns(p), i+2    )   {    j[i] = <0,2;0,2>    x[i]= vech(j[i]);     }  //initial values parameters par      = 0.1|0.5;                 //i.e. (omega, alpha, beta).    try out different starting values!  //settings likelihood estimation maxcontroleps(1e-6,1e-4);        maxcontrol(20000, 1, 1);     //maximize likelihood function print("\n\n","maximizing likelihood: \n"); maxbfgs(garch_likelihood, &par, &loglik, 0, 1);  print("%r",{"c","a"}    ,"%c",{"mle"},     par); println("\nmaximized likelihood: ", loglik); } 

inside main, should noticed have tried specify variable x 2x2 matrix each iteration. idea each i, loop should allocate 2 first cloumns , rows datasheet "covariances.in7" x. step loop should 2, such = 1,3,5,7 ect.

please post thoughts, it's appreciated.

best regards,

kristian

i'm aware need write following loop consider every second observation;

x          = constant(.nan,2,2); (decl = 0, < columns(p), ++i    ) { j[i] = <0,2;0,2> x[i]= vech(j[i]); i=i+1; } 

Comments