楼主: air320322
3762 8

[原创博文] 求多个股票营业利润历年的复合增长率 [推广有奖]

  • 4关注
  • 0粉丝

讲师

81%

还不是VIP/贵宾

-

威望
0
论坛币
11520 个
通用积分
9.5113
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
3826 点
帖子
241
精华
0
在线时间
989 小时
注册时间
2005-5-28
最后登录
2025-10-12

楼主
air320322 发表于 2012-3-4 17:58:20 |AI写论文
20论坛币
已经下面N只股票的营业收入数据

stock_code

stock_name

dt_jzr

        yysr

000001

深发展A

19911231

1

000001

深发展A

19921231

2

000001

深发展A

19931231

3

000001

深发展A

19941231

4

000001

深发展A

19951231

5

000001

深发展A

19961231

6

000001

深发展A

19971231

7

000001

深发展A

19981231

8

000001

深发展A

19991231

9

000001

深发展A

20001231

10

000001

深发展A

20011231

11

000001

深发展A

20021231

12

000001

深发展A

20031231

13

000001

深发展A

20041231

14

000001

深发展A

20051231

15

000001

深发展A

20061231

16

000001

深发展A

20071231

17

000001

深发展A

20081231

18

000001

深发展A

20091231

19

000001

深发展A

20101231

20

000002

万科A

19921231

1

000002

万科A

19931231

2

000002

万科A

19941231

3

000002

万科A

19951231

4

000002

万科A

19961231

5

000002

万科A

19971231

6

000002

万科A

19981231

7

000002

万科A

19991231

8

000002

万科A

20001231

9

000002

万科A

20011231

10

000002

万科A

20021231

11

000002

万科A

20031231

12

000002

万科A

20041231

13

000002

万科A

20051231

14

000002

万科A

20061231

15

000002

万科A

20071231

16

000002

万科A

20081231

17

000002

万科A

20091231

18

000002

万科A

20101231

19



。。。。。。

求每只股票4年的复合增长率
CAGR = (当前营业收入/4年前的营业收入)^(1/4) - 1

例如

stock_code

stock_name

dt_jzr

yysr

cagr

000001

深发展A

19911231

1

.

000001

深发展A

19921231

2

.

000001

深发展A

19931231

3

.

000001

深发展A

19941231

4

(4/1)^(1/4)-1

000001

深发展A

19951231

5

(5/2)^(1/4)-1

000001

深发展A

19961231

6

(6/3)^(1/4)-1


。。。


这里面我觉得最难的是把第2年、第3年的值赋值为空
第1年赋值为空我会算,        if first.stock_code then carg_yysr=.;
但是第2年、第3年我就不会赋值为空了

最佳答案

fisheryou 查看完整内容

不明白你的复合增长率怎么算的,你给的算法与你所要的结果表里的算法不一致,我是按CAGR = (当前营业收入/4年前的营业收入)^(1/4) - 1算的。
关键词:营业利润 增长率 Stock codes Named 营业收入 增长率

沙发
fisheryou 发表于 2012-3-4 17:58:21
不明白你的复合增长率怎么算的,你给的算法与你所要的结果表里的算法不一致,我是按CAGR = (当前营业收入/4年前的营业收入)^(1/4) - 1算的。
  1. data a;
  2. infile 'd:\sasinput\myfirst.txt';
  3. input stock_code $6.
  4.           /stock_name $
  5.           /date yymmdd8.
  6.          #4yysr;
  7. run;
  8. data b;
  9. set a ;
  10. my=yysr-lag4(yysr);
  11. cagr=my*0.25-1;
  12. run;
复制代码

藤椅
air320322 发表于 2012-3-4 18:01:41
下面是我写的程序
%let n=4;
data carg;
        set czg;
        by stock_code ;
  dif3_yysr=dif3(yysr);
  lag3_yysr=lag3(yysr);
        if first.stock_code then carg_yysr=.;
        if second.stock_code then carg_yysr=.;
        if third.stock_code then carg_yysr=.;
        else carg_yysr=(dif3_yysr/lag3_yysr)**(1/&n)-1;
       format carg_yysr f8.4;
run;


        if second.stock_code then carg_yysr=.;
        if third.stock_code then carg_yysr=.;
SAS只能用IF FIRST
但是不能用SECOND,THIRD,请问如何把第2年,第3年赋值为空啊


另外SAS中对某数开N次方是不是我上面的写法
不明真相的群众

板凳
air320322 发表于 2012-3-5 09:47:56
顶上来,希望有人解答
不明真相的群众

报纸
air320322 发表于 2012-3-5 14:10:13
to:fisheryou
我用到了宏,其实是不用的
你的my=yysr-lag4(yysr)  这仅仅做了差分,
应是
my=yysr-lag4(yysr);

cagr=(my/yysr)*0.25-1;
吧?

不明真相的群众

地板
air320322 发表于 2012-3-5 14:14:25
第一楼里面的复合增长率我写错了,现在纠正了
不明真相的群众

7
fisheryou 发表于 2012-3-5 14:14:34
嗯,是的,你比我细心,呵呵

8
fisheryou 发表于 2012-3-8 16:07:59
帮你弄了,怎么不见钱钱呢

9
air320322 发表于 2012-3-8 22:05:10
太忙了,忘记了,呵呵,谢谢
不明真相的群众

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-9 06:57