楼主: perfectman94
5026 6

[时间序列问题] [求助]有人會用STATA操作event studies嗎 [推广有奖]

  • 0关注
  • 0粉丝

学前班

50%

还不是VIP/贵宾

-

威望
0
论坛币
20 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
63 点
帖子
2
精华
0
在线时间
0 小时
注册时间
2007-6-12
最后登录
2013-8-13

楼主
perfectman94 发表于 2007-6-12 02:10:00 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
我有以下變數 id =公司名

ret =Nasdaq股票報酬率

rjt=公司股票報酬率

windows=事件窗期(10~-300)

有人能告訴我怎麼用STATA來跑Abnormal Return嗎

thanks

二维码

扫码加我 拉你入群

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

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

关键词:Studies Event Stata Even tata Stata Studies Event

本帖被以下文库推荐

沙发
wanli 发表于 2007-6-12 04:43:00
I also want to know.

藤椅
sillyfeng 发表于 2007-6-12 11:26:00

加个dummy就行了啊

板凳
perfectman94 发表于 2007-6-12 15:28:00
我有以下變數 id =公司代號

ret =Nasdaq股票報酬率

rjt=公司個別股票報酬率

windows=事件窗期(10~-300)

不好意思如果我在補充一下估計期為(-300~-11)

事件期為(-10~10)

不知有沒有人能告訴我要如何寫上述abnormal Return的程式

謝謝

报纸
蓝色 发表于 2007-6-13 08:09:00

不懂这个啊

地板
sarah063 发表于 2013-6-27 04:02:37
同求啊啊~~~

7
arlionn 在职认证  发表于 2013-6-27 11:14:01
Stata 暑期培训(北京, 7.6-13 日,http://t.cn/zOxFGe4

findit eventstudy   // 李春涛老师编写了一个程序可以实现 Event Study

亦可参考:
http://dss.princeton.edu/online_ ... ata/eventstudy.html

我课件中的例子:

*-重点参考:
  view browse "http://dss.wikidot.com/event-study"

*-有关本讲中数据的来源与初步处理方法,请参见该文档末尾的说明

*-----------------------------------
*-> 2.1 定义事件日
*-----------------------------------

  use eventda, clear
  drop comnam
  tsset company_id date

   sort company_id date
   by company_id: gen datenum=_n          //定义新的日期变量,取值为 1,2,3,...
   by company_id: gen target=datenum if date==event_date  // 标定事件日
   egen td = min(target), by(company_id)  // 扩充target的观察值
   gen dif = datenum-td                   // 以事件日0为基准定义日期

   list comp date event_date datenum target td dif in 1/20


   *For calendar days:
   * gen difc=date-event_date
   
   
*-----------------------------------
*-> 2.2 定义事件窗口和估计窗口      
*-----------------------------------

  *------
  *-2.2.1 定义事件窗口 [-2, 2],即时间前后各两天
    by company_id: gen event_window=1 if (dif>=-2 & dif<=2)
    egen count_event_obs=count(event_window), by(company_id)
  
  *------
  *-2.2.2 定义估计窗口 [-60, -30]
    by company_id: gen estimation_window = 1 if (dif<-30 & dif>=-60)
    egen count_est_obs = count(estimation_window), by(company_id)
    * 如果 count_est_obs<30,该公司将被删除,因为没有足够的样本来估计正常回报率
   
  *------
  *-2.2.3 用 0 和 1 区分事件窗口和非事件窗口
  
      list comp date target dif *window in 1/30, sep(0)
      list comp date target dif *window in 290/360, sep(0)
      replace event_window = 0      if event_window==.
      replace estimation_window = 0 if estimation_window==.   
      list comp date target dif *window in 1/30, sep(0)
      list comp date target dif *window in 290/360, sep(0)

  *------
  *-2.2.4 删除样本数不足的公司
  
    *-事件窗口观察值不足5天的公司
      tab company_id if count_event_obs<5
      xtdes if count_event_obs<5, p(0)  // 计算此类公司数目
      drop if count_event_obs<5
         
    *-估计窗口观察值不足30的公司
      tab company_id if count_est_obs<30
      xtdes if count_est_obs<30, p(0)   // 计算此类公司数目
      drop if count_est_obs<30
         
    *-剩余公司数目统计
      xtdes, p(0)


*-----------------------------------
*-> 2.3 估计正常回报率              
*-----------------------------------
   
   cap drop predicted_return
   gen predicted_return=.    // 用于存放正常回报率的变量
   cap drop id
   egen id=group(company_id) // 重新定义公司代码为 1,2,3...,便于执行循环程序
   qui tab id
   local N = r(r)            // 记录公司数目

   forvalues i=1(1)`N' {
     *-在估计窗口内估计市场模型
       qui reg ret market_return if (id==`i' & estimation_window==1)
     *-得到全样本范围内的正常回报率,即 market_return 的全样本拟合值
       predict p if id==`i'   
     *-在事件窗口内计算正常回报率
       replace predicted_return = p if (id==`i' & event_window==1)
       drop p  // 把相关结果记录到了predicted_return变量中,变量p已经无用
   }


   
*-------------------------------------
*-> 2.4 估计超额回报率和累积超额回报率
*-------------------------------------
   
*-计算超额回报率  Abnormal Returns  
   gen abnormal_return = ret - predicted_return if event_window==1
   
*-计算累积超额回报率 CAR_id: sum of each firm (简单加总)
   sort id date
   by id: egen CAR_id = sum(abnormal_return)   // egen
   list id date dif abnormal_return CAR_id  if (event_window==1 & id==1)
  
*-计算累积超额回报率 CAR_date: sum according distance from event day(按时间累积加总)  
   cap drop CAR_date                           // gen
   bysort comp: gen CAR_date = sum(abnormal_return) if event_window==1
   list id date dif abnormal_return CAR_date  if (event_window==1 & id ==1)


   
Stata 暑期培训(北京, 7.6-13 日,
http://t.cn/zOxFGe4




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

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2025-12-5 17:48