楼主: zongtaoliu2054
4868 8

求助:SAS求cumulative abnormal return [推广有奖]

  • 2关注
  • 0粉丝

大专生

28%

还不是VIP/贵宾

-

威望
0
论坛币
987 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
481 点
帖子
21
精华
0
在线时间
69 小时
注册时间
2011-4-3
最后登录
2022-3-16

楼主
zongtaoliu2054 发表于 2013-7-19 07:06:08 |AI写论文
12论坛币
大家好,我现在是想用SAS来求前后EVENT YEAR的CAR。Index market 的年回报率数据集D:
year  return
1990   0.05
1991   0.06
..
2011  0.11

具体地若干支股票在上市后的年回报率数据集A:
firm     year               return                  
000001   1996         0.1
000001   1997        0.05
.
.
000001   2011           0.01
000002   1998          0.02
000002   1999        0.04
.
000002   2011          0.01
.
然后又知道这些股票的股改announcement日期,数据集B:
firm     eventyear                                 
000001   2004

000001   2006      
000002   2003

000002   2007
.
然后我想提取每只股票股改日期前3年到后3年这7年的回报率出来,这个该怎么操作

还有一个问题是,每一只股票可能会有多个股改日期。如果一个公司两个announcement之间的间隔小于三年,那么这个公司去掉。
我是用proc sql;
create table c as
select a.firm as a_firm, b.firm as b_firm, year,return, eventyear, eventyear-year as n
from a, b
where a.firm=b.firm and calculated n>=3 and calculated n<=3;
quit;  但是做出来跟我手动做出来的区别很多。
还有就是再怎么求abnormal return呢?





关键词:cumulative abnormal normal RETURN turn return market

沙发
可~乐 发表于 2013-7-19 07:06:09
  1. data test1;
  2. input firm  $   year  return;   
  3. cards;
  4. 000001   1996         0.1
  5. 000001   1997        0.05
  6. 000001   1998        0.05
  7. 000001   1998        0.05
  8. 000001   2000        0.05
  9. 000001   2001        0.05
  10. 000001   2002        0.05
  11. 000001   2003        0.05
  12. 000001   2004        0.05
  13. 000001   2005        0.05
  14. 000001   2006        0.05
  15. 000001   2007        0.05
  16. 000001   2008        0.05
  17. 000001   2009        0.05
  18. 000001   2010        0.05
  19. 000001   2011        0.01
  20. 000002   1998          0.02
  21. 000002   1999        0.04
  22. 000002   2000        0.04
  23. 000002   2001        0.04
  24. 000002   2002        0.04
  25. 000002   2003        0.04
  26. 000002   2004        0.04
  27. 000002   2005        0.04
  28. 000002   2006        0.04
  29. 000002   2007        0.04
  30. 000002   2008        0.04
  31. 000002   2009        0.04
  32. 000002   2010        0.04
  33. 000002   2011          0.01
  34. ;
  35. run;

  36. data test2;
  37. input firm $     eventyear;
  38. cards;
  39. 000001   2004
  40. 000001   2006
  41. 000002   2003
  42. 000002   2007
  43. ;
  44. run;

  45. data test3;
  46.         set test2;
  47.         by firm;
  48.         dif_year=dif(eventyear);
  49.         if first.firm then dif_year=.;
  50.         if dif_year>3;
  51. run;

  52. proc sql noprint;
  53.         create table test4 as select
  54.         a.*
  55.         from test2 a,test3 b
  56.         where a.firm=b.firm;
  57. quit;

  58. proc sql noprint;
  59.         create table test5 as select
  60.         a.firm as a_firm, b.firm as b_firm, year,return, eventyear
  61.         from test1 a,test4 b
  62.         where a.firm=b.firm and eventyear-3<=year<=eventyear+3
  63.         order by a_firm,eventyear,year;
  64. quit;
复制代码

藤椅
zongtaoliu2054 发表于 2013-7-19 20:22:25
可~乐 发表于 2013-7-19 15:52
谢谢你的解答。可是我发现这个程序把公司只有一个announcement的数据全部DELETE了。比如firm 000003,eventyear 2004; only once.
这个问题怎么解决呢?

板凳
可~乐 发表于 2013-7-20 11:22:04
额,是漏了,然后想问下就是有这么一个情况,如果一个公司存在3个announcement,其中前两个间隔大于3年,后两个小于3年,那么这个公司是保留还是去掉?

报纸
可~乐 发表于 2013-7-20 11:25:17
把数据集test3中的f dif_year>3 改成if dif_year>3 or first.firm=last.firm;这样就把一个的拿回来了。。。

地板
zongtaoliu2054 发表于 2013-7-22 11:52:16
可~乐 发表于 2013-7-20 11:22
额,是漏了,然后想问下就是有这么一个情况,如果一个公司存在3个announcement,其中前两个间隔大于3年,后 ...
那么只保留此公司的第一个announcement 前后的数据

7
zongtaoliu2054 发表于 2013-7-22 12:38:35
可~乐 发表于 2013-7-20 11:25
把数据集test3中的f dif_year>3 改成if dif_year>3 or first.firm=last.firm;这样就把一个的拿回来了。。。
谢谢你

8
zongtaoliu2054 发表于 2013-10-30 05:12:54
可~乐 发表于 2013-7-19 15:52
我不知道为什么这12论坛币无法给您,自动变成了未解决的问题。等我弄会了,就立马给您。谢谢您的解答。

9
zongtaoliu2054 发表于 2014-2-17 05:21:23
zongtaoliu2054 发表于 2013-7-22 11:52
那么只保留此公司的第一个announcement 前后的数据
谢谢您 我之前账户密码掉了,现在终于把论坛币给您了。

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

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