SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 810|回复: 2
打印 上一主题 下一主题

用日收益率计算月收益率

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2010-6-30 22:11:03 | 只看该作者

用日收益率计算月收益率

事情有点复杂。假设有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!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2010-7-1 07:48:30 | 只看该作者

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]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2010-7-3 20:09:23 | 只看该作者

Re: 用日收益率计算月收益率

看来是自己对by 和 do 循环的掌握不够,有一个问题是,这里set raw为什么要在do循环里面,还不是在之前就set?我之后后者是不对的,运行时sas无法停止计算。但是我不清楚这样的原理是什么。望解答。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2026-2-4 03:29 , Processed in 0.066483 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表