|
解决了,找了段程序改了改,贴出来与大家一同学习。
2.2.1 创建单期收益计算环境
data a;
set stoindif.a1a0001;
year=year(date);
qtr=qtr(date);
month=month(date);
proc sort data=a;
by year qtr month;
run;
data b;
set a;
last_y=last.year; /*标出某年的最后一个交易日 */
last_q=last.qtr; /*标出某季的最后一个交易日 */
last_m=last.month; /*标出某月的最后一个交易日 */
by year qtr month;
run;
2.2.2 年收益计算
data r_year(keep=date r_pct r_log label="年收益");
set b;
if last_y=1; /* 取各年最后一个交易日的数据 */
r_pct=dif(clpr)/lag(clpr_r); /* 计算百分比收益 */
r_log=log(clpr_r)-log(lag(clpr_r)); /* 计算对数收益 */
/*函数log(x)是以e为底的自然对数,其它对数函数还有log2(x),log10(x)*/
run;
2.2.3 季收益计算
data r_qtr (keep=date r_pct r_log label="季收益");
set b;
if last_q=1; /* 取各季最后一个交易日的数据 */
r_pct=dif(clpr_r)/lag(clpr_r);
r_log=log(clpr_r)-log(lag(clpr_r));
run;
2.2.4 月收益计算
data r_month (keep=date r_pct r_log label="月收益");
set b;
if last_m=1; /* 取各月最后一个交易日的数据 */
r_pct=dif(clpr_r)/lag(clpr_r);
r_log=log(clpr_r)-log(lag(clpr_r));
run;
|