全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1990 0
2012-03-20

自己根据 Kevin Sheppard的2001-Ucsd_garch给出的似然函数dcc_mvgarch_likelihood写的Sas程序,但是在求参数时出现问题,求教!

a是两列数据,去过均值,并用除过GARCH的条件方差。但是最后用“CALL NLPQN”优化参数时出现问题,估计是OPTN的设置时没有用这个似然函数使用最适合的函数设置,但又不知道怎么调整。希望各位大侠不吝赐教...

ods output  Corr.Cov=corr;
proc corr data=a cov;
run;
ods output close;

proc sql;
        select stdresid_us into:cov1 from corr where variable="stdresid_us";
        select stdresid_chn into:cov4 from corr where variable="stdresid_chn";
        select stdresid_us into:cov2 from corr where variable="stdresid_chn";
        select stdresid_chn into:cov3 from corr where variable="stdresid_us";
quit;

/*下面用单变量的条件方差来计算DCC_MULTIVARIATE_GARCH模型的参数*/
proc iml;
use a;
read all into stdresid;

start trans4_constrain(c0);
    c1=c0;
        c1[1]=exp(c0[1])/(1+exp(c0[1])+exp(c0[2]));
        c1[2]=exp(c0[2])/(1+exp(c0[1])+exp(c0[2]));
        return(c1);
finish trans4_constrain;

start dcc_garch(parms) global(stdresid);
        t=nrow(stdresid);
        k=ncol(stdresid);
/*        约束条件,a,b>0,a+b<1*/
        parms=trans4_constrain(parms);
        print parms;
        a=parms[1];
        b=parms[2];
        suma=sum(a);
        sumb=sum(b);
        m=1;
        qbar=j(2,2,0);qbar[1,1]=&cov1.;qbar[1,2]=&cov2.;qbar[2,1]=&cov3.;qbar[2,2]=&cov4.;

        likelihoods=j(t+1,1,0);
        QT1=J(T+1,1,0);        QT2=J(T+1,1,0);        QT3=J(T+1,1,0);        QT4=J(T+1,1,0);
        RT1=J(T+1,1,0);        RT2=J(T+1,1,0);        RT3=J(T+1,1,0);        RT4=J(T+1,1,0);
       
        QT1[1]=QBAR[1,1]; QT2[1]=QBAR[1,2];QT3[1]=QBAR[2,1];QT4[1]=QBAR[2,2];
        RT1[1]=QBAR[1,1]; RT2[1]=QBAR[1,2];RT3[1]=QBAR[2,1];RT4[1]=QBAR[2,2];

        LOGL=0;

        STDRESID=J(1,2,0)//STDRESID;

        DO J=2 TO T+1;
                C=J(2,2,0);
                C=A*STDRESID[J-1,]`*STDRESID[J-1,];

                QT1[J]=QBAR[1,1]*(1-A-B)+C[1,1]+QT1[J-1];
                QT2[J]=QBAR[1,2]*(1-A-B)+C[1,2]+QT2[J-1];
                QT3[J]=QBAR[2,1]*(1-A-B)+C[2,1]+QT3[J-1];
                QT4[J]=QBAR[2,2]*(1-A-B)+C[2,2]+QT4[J-1];


                R=J(2,2,0);

                R[1,1]=1;
                R[1,2]=QT2[J]/(SQRT((QT1[J]*QT4[J])));
                R[2,1]=QT3[J]/(SQRT((QT1[J]*QT4[J])));
                R[2,2]=1;

                RT1[J]=R[1,1];
                RT2[J]=R[1,2];
                RT3[J]=R[2,1];
                RT4[J]=R[2,2];

                LIKELIHOODS[J]=LOG(RT1[J]*RT4[J]-RT3[J]*RT4[J])+STDRESID[J,]*INV(R)*STDRESID[J,]`;
                LOGL=LOGL+LIKELIHOODS[J];

        END;
        return(LOGL);
finish dcc_garch;

/*初始优化参数*/
        parms={0.1,0.97};
/*        a=dcc_garch(parms);print a;*/
        optn=j(1,11,0);        optn[1]=1;optn[2]=0; optn[4]=1; optn[6]=2;optn[10]=0; optn[11]=0;
        CALL NLPQN(rc,xout,"dcc_garch",parms,optn);
/*优化后的参数*/
        prm_opt=trans4_constrain(xout);

quit;

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群