Le forum du Master ESA économétrie et statistique appliquée - Université d'Orléans

Vous n'êtes pas identifié.

Annonce

Vous êtes sur le forum du master ESA !

Le site du master ESA - description de la formation, notes de cours, contacts... vient de déménager !!!

Venez visiter notre nouveau site : www.master-esa.fr

#1 16-05-2011 16:26:19

camara
membre extérieur
Date d'inscription: 30-04-2011
Messages: 4

sauvez moi!!!! c'est urgent

Bonjour tous ,
J'ai un problème pour verifier la validité de ma VaR par le backesting sous le logiciel SAS. J'ai calculer ma value-at-risk avec un garch(1,1) univarié et maintenant je galère pour calculer le bactesting  car je connais pas le code. Et en plus est ce que quelqu'un se rappel de la formule du taux de rendement d'un indice? moi j'ai caluler suivant la formule suivante.
Rdt_brent=(rdt_brent - lag1(rdt_brent)).100/lag1(rdt_brent) est ce que cette formule est correct?
Merci d'avane pour vos différentes reponses.

/* Estimate GARCH(1,1) with normally distributed residuals with MODEL*/   
   proc model data = imc ;
       parms arch0 .1 arch1 .2 garch1 .75 ;
       /* mean model */
       rdt_memphis = intercept ;
       /* variance model */
       h.rdt_memphis = arch0 + arch1*xlag(resid.rdt_memphis**2,mse.rdt_memphis) +
             garch1*xlag(h.rdt_memphis,mse.rdt_memphis) ;
        bounds arch0 arch1 garch1 >= 0;
           
    fit rdt_Memphis /fiml  method = marquardt itprint normal
hessian = cross CONVERGE = .001 out = Resultgarchnormalee; 
    outvars resid.rdt_Memphis h.rdt_Memphis  ;
  run; quit ;
data basefusion;
set Resultgach;
set a;
run;
data var;
set resultgarch;
VaR= 0.008788 +quantile('normal',0.05)*sqrt(h_rdt_memphis);
run;
quit;
data RecupVaR;
set var;
run;

Hors ligne

 

#2 16-05-2011 23:02:21

Sylvain BENOIT
Member
Date d'inscription: 08-10-2008
Messages: 84

Re: sauvez moi!!!! c'est urgent

Bonjour,
tout d'abord, si tu veux implémenter un test de backtesting il faut que tu construises ta série de violations, qui vaut 1 lorsque ton rendement est plus petit que la prévision de la VaR et zéro sinon. Ensuite, quels tests souhaites tu employer? Couverture Non-conditionnelle, indépendance, couverture conditionnelle? Enfin, Le test de Kupiec (unilatéral ou bilatéral) est le plus simple et rapide à mettre en oeuvre, voir Dowd "Measuring Market Risk", p323 (15.2 BACKTESTS BASED ON FREQUENCY TESTS).

Hors ligne

 

#3 17-05-2011 10:27:39

camara
membre extérieur
Date d'inscription: 30-04-2011
Messages: 4

Re: sauvez moi!!!! c'est urgent

merci pour votre reponse. Au fait je veux utiliser le test de Kupiec unilateral. En vrai j'ai du mal à constriure aussi ma serie violation car c'est ma première fois de travailler sur ce genre de sujet. Dans ma fac à strasbourg on travail presque pas sous sas. Donc si vous pouvez m'aider je serais tres ravis.
Merci d'avance.

Hors ligne

 

#4 03-06-2011 22:38:50

sspdiddy
Member
Date d'inscription: 29-04-2009
Messages: 146

Re: sauvez moi!!!! c'est urgent

Bonjour J'espère que ce bout de programme va t'aider

%macro backtest (database =,database_2 smile;



data &database_2 ;set &database_2;
call symput('nmax',_n_);
run;

%do j = 1 %to 2 ;/*cr�ation d'une boucle qui fait les pr�visions sur 250 p�riodes*/
/*pour calculer la borne sup de la fen�tre glissante*/
/*macro variable qui r�cup�re la valeur de c*/
data chi ;
c sad&nmax-1) + &j ;
call symput( 'cou' , c );
run ;

proc model data =&database ( firstobs = &j obs = &cou ) outparms=estim_sk&j;/*coeff de l'estimation sous la skewed-t

    parms arch0  arch1 0.07  garch1 0.9 ksi 1 nu 3 ;/*conditionn initiales issue de la proc autoreg

    /*esp�rance conditionnelle
    rdt = intercept ;

/**variance conditionnelle

    h.rdt = arch0 +arch1*(zlag(resid.rdt)**2)+ garch1*zlag(h.rdt);
    m = ( gamma( ( nu - 1 ) / 2 ) * sqrt( nu - 2 ) *( ksi - (1 / ksi )) ) /
        ( sqrt( 3.14 ) * gamma( nu / 2 ) ) ;
    s2 = (ksi ** 2 )+ (1 / ksi ** 2) - 1 -(m ** 2) ;
    s = sqrt( s2 ) ;

    it = 1 ;
    if  nresid.rdt < - m / s then it = 0 ;   

/*distribution
    obj = log( gamma( ( nu + 1 ) / 2 ) ) - log( gamma( nu / 2 ) ) + log( s ) +
    log( 2 / ( ksi + (1 / ksi ) )) - .5 * log( 3.14 * ( nu - 2 ) ) -.5 * log( h.rdt )
    -.5 * ( 1 + nu ) * log( 1 + ( ( s * nresid.rdt + m ) ** 2 ) * ( ksi ** ( - 2 * it ) ) /
    ( nu - 2 ) ) ;

    obj = -obj ;

    errormodel rdt ~ general( obj , ksi , nu ) ;

    fit rdt / fiml method=marquardt out=p_sk&j (drop=_estype_ _type_ _weight_ rdt);outvars h.rdt resid.rdt date;
    /*on garde ces varibales apr�s l'estimation
run ; quit ;

/*r�cup�ration des estimateurs grace au macro-variable
data estim_sk&j; set estim_sk&j (keep= intercept arch0 arch1 garch1 ksi nu intercept );
call symput('cst',intercept);
call symput('arch0',arch0);
call symput('arch1',arch1);
call symput('garch1',garch1);
call symput('ksi',ksi);
call symput('nu',nu);

run;

data prevht_sk&j ; set p_sk&j  ( firstobs = &nmax )  ;
ht=&arch0 + &arch1*resid_rdt**2 +&garch1*h_rdt;
constante = &cst;
ksi = &ksi;
nu=&nu;
keep ksi nu ht date constante;
run ;



/*on empile chacune des previsions


proc append base=prevht_sk1 data=prevht_sk&j;
run;




/*Dans cette table on regroupe toutes les pr�visions de la variance conditionnelle( 250 pr�visions)
data bourse.prevht_sk;set prevht_sk1;if _n_>1;
t+1;
run;
%mend ;
%backtest(database=bourse.port,database_2=bourse.insample);

Hors ligne

 

#5 24-08-2011 12:35:23

sspdiddy
Member
Date d'inscription: 29-04-2009
Messages: 146

Re: sauvez moi!!!! c'est urgent

Alors des nouvelles Mr CAMARA smile

Hors ligne

 

Pied de page des forums

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson

[ Generated in 0.009 seconds, 6 queries executed ]