SAS中文论坛
标题:
用日收益率计算月收益率
[打印本页]
作者:
shiyiming
时间:
2010-6-30 22:11
标题:
用日收益率计算月收益率
事情有点复杂。假设有n(设n=2)只股票2年的日收益率daily return. 计算每只股票这两年每个月的月收益率。
dataset 大致如下;
stk date drtn(daily return)
1 01/01/2000 xx.xx
. 01/02/2000 xx.xx
.
1 12/31/2000 xx.xx
2 01/01/2000 xx.xx
. 01/02/2000 xx.xx
.
2 12/31/2000 xx.xx
需要注意的是 每个月的交易日不一样,而且有些股票因为某些原因停牌,可能某些月没有月收益率,这时当missing。
用日收益率计算月收益率的计算公式应该是 monthly return= (1+drtn (day1))*(1+drtn(day2))*....*(1+drtn(last trading day of this month))-1
如果只是一只股票一个月的样本,我还可以写程序计算。
可是有多只股票和多个月时,就不知所措了。
望某位大侠指点迷津!!!
many thanks!
作者:
shiyiming
时间:
2010-7-1 07:48
标题:
Re: 用日收益率计算月收益率
[code:22n892eh]data raw(index=(stkmonth=(stk month)));
input stk date mmddyy10. drtn;
month=intnx('month',date,0);
format date yymmdd10. month yymms7.;
datalines;
1 01/01/2000 0.1
1 01/02/2000 0.2
1 01/03/2000 0.3
1 12/30/2000 0.4
1 12/31/2000 0.5
2 01/01/2000 0.1
2 01/02/2000 0.2
2 12/31/2000 0.3
;
data temp(drop=date drtn);
retain stk month mtrn;
mtrn=1;
do _n_=1 by 1 until(last.month);
set raw;
by stk month;
mtrn=mtrn*sum(1,drtn);
end;
mtrn=mtrn-1;
run;[/code:22n892eh]
作者:
shiyiming
时间:
2010-7-3 20:09
标题:
Re: 用日收益率计算月收益率
看来是自己对by 和 do 循环的掌握不够,有一个问题是,这里set raw为什么要在do循环里面,还不是在之前就set?我之后后者是不对的,运行时sas无法停止计算。但是我不清楚这样的原理是什么。望解答。
欢迎光临 SAS中文论坛 (https://mysas.net/forum/)
Powered by Discuz! X3.2