楼主: cindy七七
9274 11

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

  • 1关注
  • 1粉丝

已卖:306份资源

本科生

48%

还不是VIP/贵宾

-

威望
0
论坛币
924 个
通用积分
0.9131
学术水平
0 点
热心指数
1 点
信用等级
0 点
经验
2124 点
帖子
60
精华
0
在线时间
96 小时
注册时间
2010-3-4
最后登录
2025-11-24

楼主
cindy七七 发表于 2012-2-22 16:17:03 |AI写论文

+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
拉您进交流群
GMT+8, 2025-12-30 21:10