楼主: cindy七七
8520 11

[问答] sas如何实现连乘!按年按股票代码分类~ [推广有奖]

  • 1关注
  • 1粉丝

本科生

46%

还不是VIP/贵宾

-

威望
0
论坛币
891 个
通用积分
1.7531
学术水平
0 点
热心指数
1 点
信用等级
0 点
经验
2024 点
帖子
60
精华
0
在线时间
94 小时
注册时间
2010-3-4
最后登录
2023-12-4

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
      请教一个问题,计算经市场调整的股票回报率,公式为 未命名.jpg ,其中R是股票的月回报率,M是市场回报率,sas里怎么编程,可以实现计算出每种股票在每一个年度的经市场调整的股票回报率~貌似需要两次分类连乘~
  数据简单举例:
      stock  year             R         M
        1       2001          0.1      0.01
        1       2002          0.1      0.02
        ......
        2       2001          0.2      0.01
        2       2002          0.1      0.02
          ......
二维码

扫码加我 拉你入群

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

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

关键词:股票代码 如何实现 股票回报率 Stock 市场回报率 SAS连乘

沙发
Jackywolf_2008 发表于 2012-2-22 18:24:35 |只看作者 |坛友微信交流群

data stock;
length stock $1 year R M 8;
input stock $ year  R  M ;

datalines;
1 2001 0.1 0.01
1 2002 0.2 0.02
1 2003 0.3 0.03
2 2001 0.4 0.04
2 2002 0.5 0.05
2 2003 0.6 0.06
;



proc sort data=stock;
by stock year;
run;

data stock_profit;
set stock;
by stock ;
retain stock_m stock_r;
if first.stock then do;
        stock_m = (1+m);
        stock_r = (1+r);
end;
else do;
        stock_m = stock_m * (1+m);
        stock_r = stock_r * (1+r);
        if last.stock then do;
                stock_profit = stock_r - stock_m ;
                output;
        end;       
end;
run;

使用道具

藤椅
cindy七七 发表于 2012-2-22 22:27:01 |只看作者 |坛友微信交流群
Jackywolf_2008 发表于 2012-2-22 18:24
data stock;
length stock $1 year R M 8;
input stock $ year  R  M ;
非常感谢!

使用道具

板凳
cindy七七 发表于 2012-2-23 11:26:00 |只看作者 |坛友微信交流群
自己的方法:
data tmp1;set need2;
  month1=substr(month,6,2)+0;
  lgret=log(1+mros);
  lgmret=log(1+rom);
  year=substr(month,1,4)+0;
  run;
  proc sort;by stock year;run;
  proc means  noprint;
var lgret lgmret;
by stock year;
output out=ret0112 sum=tlgret tlgmret;run;
data ret0112;set ret0112;
ret0112_raw=exp(tlgret)-1;
ret0112_adj=exp(tlgret)-exp(tlgmret);
run;
data ret0112;set ret0112(keep=stock year ret0112_raw ret0112_adj);
where 2000<year<2011;
run;

使用道具

报纸
ntsean 发表于 2012-2-23 12:54:19 |只看作者 |坛友微信交流群
这个其实只需要一步就够了

proc sql;
  create table return as
  select stock, exp(sum(log(1+R)))-exp(sum(log(1+M))) as return
  from stock
  group by stock;
quit;
已有 4 人评分学术水平 热心指数 信用等级 收起 理由
meowlac + 1 + 1 精彩帖子
青史 + 1 + 1 + 1 精彩帖子
jeozu + 1 + 1 我很赞同
调殇 + 1 + 1 观点有启发

总评分: 学术水平 + 4  热心指数 + 4  信用等级 + 1   查看全部评分

使用道具

地板
Jackywolf_2008 发表于 2012-2-23 18:53:00 |只看作者 |坛友微信交流群
ntsean 发表于 2012-2-23 12:54
这个其实只需要一步就够了

proc sql;
确实是好方法!

使用道具

7
rdjjbellenk 发表于 2014-5-7 13:24:59 |只看作者 |坛友微信交流群
论坛真不错,受教啦!

使用道具

8
jeozu 发表于 2014-5-7 13:33:47 |只看作者 |坛友微信交流群
ntsean 发表于 2012-2-23 12:54
这个其实只需要一步就够了

proc sql;
正解。。

使用道具

9
青史 发表于 2014-5-20 17:47:06 |只看作者 |坛友微信交流群
这个太好了,也在做

使用道具

10
nannan0120 发表于 2015-3-19 22:18:38 |只看作者 |坛友微信交流群
ntsean 发表于 2012-2-23 12:54
这个其实只需要一步就够了

proc sql;
您好,请问能否解决我的问题,是分股票代码,比如一年内的股票收益率连乘,滚动的  具体位置在这儿https://bbs.pinggu.org/forum.php?mod=viewthread&tid=3621605&page=1&extra=#pid29113319

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-26 21:11