Statalist


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

st: Event Study Methodology using a GARCH Model


From   "Ronan Gallagher" <[email protected]>
To   <[email protected]>
Subject   st: Event Study Methodology using a GARCH Model
Date   Tue, 20 Oct 2009 09:27:05 +0100

Hi Statalist members,

I am currently undertaking an financial market event study using Stata.  My
data file has variables for company id, date, eventdate, return and market
return.  I am using the guide posted at the link below for some background:

http://dss.princeton.edu/usingdata/stata/analysis/eventstudy.html

In this formulation, normal returns are calculated using the standard market
model (5 day event window and 30 day estimation window). I wish to implement
a similar event study however using a GARCH(1,1) process to generate
'normal' returns.  In order to facilitate this approach, is it just a matter
of swapping the line:

reg ret market_return if id==`i' & estimation_window==1

with

arch ret market_return if id==`i' & estimation_window==1, arch(1) garch(1)

Will the 'predict' function make an appropriate prediction of the stock
return conditional on returns exhibiting GARCH(1,1) attributes?  For your
information the code I am basing my event study on is displayed below.

Thank-you very much for any help you may be able to offer.

Regards,
Ronan

sort company_id date
by company_id: gen datenum=_n
by company_id: gen target=datenum if date==event_date
egen td=min(target), by(company_id)
drop target
gen dif=datenum-td
by company_id: gen event_window=1 if dif>=-2 & dif<=2
egen count_event_obs=count(event_window), by(company_id)
by company_id: gen estimation_window=1 if dif<-30 & dif>=-60
egen count_est_obs=count(estimation_window), by(company_id)
replace event_window=0 if event_window==.
replace estimation_window=0 if estimation_window==.
set more off 
gen predicted_return=.
egen id=group(company_id) 
 forvalues i=1(1)N { /*note: N is replaced by the number of events, in my
case 127 */ 
        l id company_id if id==`i' & dif==0
        reg ret market_return if id==`i' & estimation_window==1 
        predict p if id==`i'
        replace predicted_return = p if id==`i' & event_window==1 
        drop p
}  
sort id date
gen abnormal_return=ret-predicted_return if event_window==1
by id: egen cumulative_abnormal_return = sum(abnormal_return) 
sort id date
by id: egen ar_sd = sd(abnormal_return) 
gen test =(1/sqrt(5)) * ( cumulative_abnormal_return /ar_sd) 
list company_id cumulative_abnormal_return test if dif==0


*
*   For searches and help try:
*   http://www.stata.com/help.cgi?search
*   http://www.stata.com/support/statalist/faq
*   http://www.ats.ucla.edu/stat/stata/



© Copyright 1996–2024 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   What's new   |   Site index