1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > matlab var历史模拟法 关于VaR历史模拟法的两个程序

matlab var历史模拟法 关于VaR历史模拟法的两个程序

时间:2023-03-21 15:51:43

相关推荐

matlab var历史模拟法 关于VaR历史模拟法的两个程序

楼主您别怪我,你这东西···真的不值这个价钱。。。我发出来了。

*Avec ces deux méthodes ,vous n'aurez pas besoin de proc iml */

/*1 ère méthode pour calculer la var hs */

data zozo;

input p1 p5;

cards;

run;

%macro insert_percentile;

proc sql;

insert into zozo

values (&p1,&p5);

quit;

%mend insert_percentile;

data toto;

do t = 1 to 500;

rdt= ranuni(-2)*t;

output;

end ;

run;

%macro creation_percentile;

ods listing close;

%do i=0 %to 249;

data tata ;

set toto (firstobs=%eval(1+&i) obs=%eval(250+&i));

run;

proc univariate data= tata;

var rdt;

output out= percentile p1= p1 p5=p5;

run;

data _null_;

set percentile;

call symput ('p1',p1);

call symput ('p5',p5);

call execute ('%insert_percentile');

run;

%end;

%mend creation_percentile ;

%creation_percentile;

ods listing;

*création d'une table temporaire zozo,qui va servir plutard à insérer les

percentiles ;

*macro 'insert_percentile' permettant d'insérer les percentiles estimés dans

la table temporaire zozo avec sql;

*ici j'ai pris une table 'toto' quelconque ressemblant à peu près à la table

que vous allez utilisez,juste pour décrire ce que je fais;

*création de la macro 'creation_percentile' ,qui va utiliser les facilités des

data step: firstobs et obs pour faire une table glissante;

* j'utilise ici 'ods listing close' pour bloquer toute sortie dans ma fenêtre

de résultats,sans cette option on aurait compter 250 icones 'proc univariate'

dans la fenêtre de résultats;

*je prends le soin d'utiliser 'ods listing' à la fin de l'exécution de ma macro

pour débloquer la fenêtre de résultats que j'avais bloqué;

*création de macro variables contenant les percentiles avec 'call symput' dans

le step 'data _null_';

*cérise sur le gateau je fais tourner une procédure sas dans une étape data

grace à la commande 'call execute' ;

/*2ème méthode plus subtile ,plus short, et plus fast que la précédente , car

je code en sql/macro*/

data zozo;

input p1 p5;

cards;

run;

data toto;

do t = 1 to 500;

rdt= ranuni(-2)*t;

output;

end ;

run;

%macro creation_percentile;

ods listing close;

%do i=0 %to 249;

data tata ;

set toto (firstobs=%eval(1+&i) obs=%eval(250+&i));

run;

proc univariate data= tata;

var rdt;

output out= percentile p1= p1 p5=p5;

run;

proc sql;

select p1,p5 into :p1,:p5 from percentile ;

insert into zozo

values (&p1,&p5);

quit;

%end;

%mend creation_percentile ;

%creation_percentile;

ods listing;

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。