| 所在主题: | |
| 文件名: fe.zip | |
| 资料下载链接地址: https://bbs.pinggu.org/a-1720714.html | |
本附件包括:
|
|
| 附件大小: | |
|
妹纸新手~~在做capm检验时遭遇困难,求大神指导~~
我的数据是从2002年1月——2007年6月,rolling的长度为36个月(eg.2002年1月——20014年12月回归得到的β作为2005年1月的β) 我现在要用rolling得到的30个β作为分组标准,对公司进行分组。 eg.我rolling得到的β最小值为0.2,最大值为2.6,那么我将β等分为5组:0.2~0.7,0.7~1.2,1.2~1.7,1.7~2.1,2.1~2.6.然后把每个公司2005年1月——2007年6月的β值(其实也是rolling得到的)丢入对应的分组中,那么每一个月都有5个组合对应于β的五组。每个组合的每一个月中的公司数目都可能不一样。 !!因为我之后需要用其他的数据rolling得到作为分组标准的β,所以希望大神用分步的做法,让作为分组标准的β是可以替换的。 我之前在书上看到的方法如下,但是太粗暴了,是对公、司、数、进行等分的,而不是将β等分!! 程序和数据都在附件中,感激不尽~~ libname CAPM 'f:\fe'; /* input close price*/
/*导入原始数据——收益率*/ datacapm.riraw; infile 'f:\fe\Chap3-2-1 BJS.csv' delimiter =','MISSOVER DSD lrecl=5000; input date r1-r25 rf rm; run;
data capm.rida; infile 'f:\fe\Chap3-2-1 date.csv' delimiter =','MISSOVER DSD lrecl=5000; input date date1; run;
/*从capm.riraw中读取dateri rf rm code,其中code取1-25,用来提取r1-r25分别放入不同的数据集中*/ %macro mac; %do i=1 %to 25; data capm.ri&i.; set capm.riraw; code=&i.; ri=r&i.; keep date ri rf rm code; run; %End; %MEND mac; %mac;
/*3 set 50dataset*/
/*把这25个数据集中的数据全部读入capm.ri中*/ data capm.ri; set capm.ri1 capm.ri2 capm.ri3 capm.ri4capm.ri5 capm.ri6 capm.ri7 capm.ri8 capm.ri9 capm.ri10 capm.ri11capm.ri12 capm.ri13 capm.ri14 capm.ri15 capm.ri16 capm.ri17 capm.ri18 capm.ri19capm.ri20 capm.ri21capm.ri22 capm.ri23 capm.ri24 capm.ri25;
run;
proc sort data=capm.ri; by date; run; proc sort data=capm.rida; by date;run;
/*merge,并且求出风险溢价*/ /*capm.rida中的date1被合并进入capm.riraw1中,date1的作用目前未知*/ data capm.riraw1; merge capm.ri capm.rida; by date; rif=ri-rf;rmf=rm-rf; run;
/*按code排序(也就是先按公司ri排序),再按date排序*/ proc sort data=capm.riraw1; by code;run;
/*rolling的分组,每组时间间隔为3年,36个月*/ %macro mac; %do i=1 %to 30; datacapm.t&i.; setcapm.riraw1; ifdate1>=&i. and date1<=35+&i.; rif=ri-rf;rmf=rm-rf; run; %End; %MEND mac; %mac;
%macro mac; %do i=1 %to 30; datacapm.t&i.; setcapm.riraw1; ifdate1>=&i. and date1<=35+&i.; rif=ri-rf;rmf=rm-rf; run;
/*分别对Ti中的数据按照code进行回归,并把结果记入beta_i数据集中,一共rolling30次,每个公司股票得到30的beta值*/ proc regdata=capm.t&i. noprint; outest=capm.beta_&i.; /*输出结果为capm.beta&i*/ by code; model rif=rmf; run;/*25 obs*/ /*例如,对T1中的code=1的数据进行回归,得到的结果记入beta_1中第一行,即code=1的结果 其中intercept是截距项α,rmf是斜率β*/
proc rankdata=capm.beta_&i. out=capm.beta&i. groups=5;/*分为5组,注意!!这里的分组是把公司数目进行等分,而不是对β进行等分*/ ranks p;/*排名记为p,即β的大小赋给了p,“就是变量rmf的秩”*/ var rmf;/*按照rmf的大小进行排序,即按照β大小排序*/ run;
%End; %MEND mac; %mac;
/*令date1=&i.+36,保留codedate1和p(beta的排名)*/ %macro mac; %do i=1 %to 30; datacapm.beta&i.; setcapm.beta&i.; date1=&i.+36;/*把前面rolling得到的beta值赋给了36个月之后的那个月*/ keep codedate1 p; run; %End; %MEND mac; %mac;
/*把所有capm.beta中的数据集中到capm.cop中*/ data capm.cop; set capm.beta1; run; %macro mac; %do i=1 %to 30; data capm.cop; merge capm.copcapm.beta&i.; by code date1; run; %End; %MEND mac; %mac;
/*复制capm.cop中date1在37-66之间的数据,以及capm.riraw1中date1在37-66的数据*/ data capm.cop1; set capm.cop; if date1>=37and date1<=66; run; data capm.riraw2; set capm.riraw1; if date1>=37and date1<=66; run;
/*排序,两次排序的结果应该是先按照date1排序,再按照code排序*/ proc sort data=capm.riraw2; by code;run; proc sort data=capm.riraw2; by date1;run; proc sort data=capm.cop1; by code;run; proc sort data=capm.cop1; by date1;run;
/*merge*/ data capm.cop2; merge capm.cop1 capm.riraw2; by date1 code; keep code date1 ri rm rf p; run;
/*sort by pdate1*/ proc sort data=capm.cop2; by date1;run; proc sort data=capm.cop2; by p;run;
proc univariate data=capm.cop2/*指明到底对那一个资料文件进行分析*/ noprint;/*noprint 就不在输出窗口打印,可以节省时间*/ var ri rm rf;/*列举需要进行描述性统计分析的数值变量名称*/ by p date1;/*依据此指令所列举的变量将观测进行分组*/ /*对每个组,也就是对每个p和date,对rirf 和 rm求平均值,此时求的是算术平均。如果加权平均,则要加一行:weight size*/ output out=capm.rip/*存储要输出的关键统计的表名*/ mean=meanri mean=meanrmmean=meanrf;/*分别给rirf rm的均值命名*/ run; data capm.rip1; set capm.rip; meanrif=meanri-meanrf; meanrmf=meanrm-meanrf; run;
proc sort data=capm.rip1 ; by p;run; proc reg data=capm.rip1 outest=capm.beta; model meanrif=meanrmf; by p; run; /*风险与收益的检验*/ proc univariate data=capm.rip1; var meanri meanrmf; by p; output out=capm.rip2 mean=meanrip mean=meanrmf; run; data capm.beta0; merge capm.beta capm.rip2; by p; run; proc reg data=capm.beta0; model meanrip=meanrmf; run;
|
|
熟悉论坛请点击新手指南
|
|
| 下载说明 | |
|
1、论坛支持迅雷和网际快车等p2p多线程软件下载,请在上面选择下载通道单击右健下载即可。 2、论坛会定期自动批量更新下载地址,所以请不要浪费时间盗链论坛资源,盗链地址会很快失效。 3、本站为非盈利性质的学术交流网站,鼓励和保护原创作品,拒绝未经版权人许可的上传行为。本站如接到版权人发出的合格侵权通知,将积极的采取必要措施;同时,本站也将在技术手段和能力范围内,履行版权保护的注意义务。 (如有侵权,欢迎举报) |
|
京ICP备16021002号-2 京B2-20170662号
京公网安备 11010802022788号
论坛法律顾问:王进律师
知识产权保护声明
免责及隐私声明