全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
8557 1
2011-03-21
以下是年平均 。。相求日平均 月平均收益率如何编程。求高手
data a1;
set r_year;
where 1995 <= year(date) <= 2005;
proc print;
run;
/*对数据集转置*/
proc transpose data=a1 out=a2;
var r_pct;
proc print;
run;
/*计算年平均收益*/
data a5 ;
set bb;
if last_y=1 and 1997<= year(date) <= 2005;
run;
data a6;
retain begin end;
set a5 end=lastobs;
if _n_=1 then begin=clpr; /* 将数据集第一个观测值的价格赋给变量begin */
if lastobs then do;
end=clpr; /* 将数据集最后一个观测值的价格赋给变量end */
output;
end;
data a6(keep=gm);
set a6;
t=2005-1997+1;
gm=(end/begin)**(1/t)-1;
proc print;
run;
/*该方法主要优点是精确*/
二维码

扫码加我 拉你入群

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

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

全部回复
2011-4-5 23:55:47
日收益计算

data r_day (keep=date r_pct r_log label="日收益");


set stoindif.a1a0001;


r_pct=dif(clpr_r)/lag(clpr_r);


r_log=log(clpr_r)-log(lag(clpr_r));


run;


周收益计算

程序一:


data a;


set stoindif.a1a0001;


wd=weekday(date);


dif=dif(wd);


dif2=dif(date);


if (dif<0 and dif^=.)or dif2>=7 then


index=1;else index=0;



data a(keep=date clpr_r index);


set a;


date=lag(date);


clpr_r=lag(clpr_r);


if index=1;



data r_week(keep=date r_pct r_log);


set a;


r_pct=dif(clpr_r)/lag(clpr_r);


r_log=log(clpr_r)-log(lag(clpr_r));


if r_log=. then delete;


run;



程序二:


data b;


set stoindif.a1a0001;


wk=int((date-3)/7+2);


/* wk为周的标号,设定196011日为第一周。由于196011日为周五,所以第一周共有三天。注意该周(196011日到3日)对应日期按SAS的标准分别为0, 12(于是(date-3)/7都等于-1)。由此可以理解为什么这样设定表达式*/


proc sort;


by date;


run;



data b;


set b;


last_wk=last.wk;


by wk;


run;



data b(keep=date r_pct1 r_log1);


set b;


if last_wk=1;


r_pct1=dif(clpr)/lag(clpr);


r_log1=log(clpr)-log(lag(clpr));


run;



data c;/*检测程序一和程序二的一致性*/


merge r_week b;


by date;


if r_pct=r_pct1 then aa=1;


else aa=0;/*最后一个不一样*/


run;


二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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