ouhaicourse
思路:一个数据集A包含有800支股票,每支有几百个日数据。从A中随机抽两支,形成一个小数据集,再将小数集的两支股票的日数据从A中全部抽出抽出形成新的数据集,进行协方差运算。对以上过程重复模拟500次。目前小数据集能够形成,但如何将抽出和运算的两个程序插入循环中无法实现。
%macro w(m1);
%do w=1 %to &m1;
proc sql;
create view w1 as select *,normal(0) as k from return_2
order by calculated k;
data b;set w1(obs=2); if num1^=num1 then delete;
proc append base=ww&w force;
proc append base=wxq1688;
%end;proc freq data=wxq1688;proc print;run;
%mend w(m1);
%w(10);/*循环*/
proc sql;
create table selectstock as
select num1,date,p,index,return
from return_2
where num1 in select num1
from a3
where return_2.num1=a3.num1;
run;/*将小数据集的股票从A中跳出来形成新的数据集*/
proc transpose data=selectstock out=selectstock1;
var return;
by date;
run;
data selectstock2(drop=_NAME_ date);
set selectstock1;
run;
DATA selecstock3;
set selectstock2;
proc corr data=selecstock3 cov outp=cov_out1 nosimple;
var COL1 COL2;
title'Markowitz';
run;/*转置并计算协方差*/