eventstudy: Perform event study analysis

Description Usage Arguments Details Value Model arguments Author(s) See Also Examples

View source: R/eventstudy.R

Description

‘eventstudy’ provides an easy interface that integrates all functionalities of package eventstudies to undertake event study analysis. It allows the user to specify the type of data adjustment to be done (using market model functionalities of the package) and then an inference strategy of choice.

Usage

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
eventstudy(firm.returns,
           event.list,
           event.window = 10,
           is.levels =  FALSE,
           type = "marketModel",
           to.remap = TRUE,
           remap = "cumsum",
           inference = TRUE,
           inference.strategy = "bootstrap",
           model.args = NULL)

Arguments

firm.returns

a zoo matrix of ‘outcome’ or ‘response’ series.

event.list

a data.frame of two columns with event dates (colname: “when”) and column names of the ‘response’ series from ‘firm.returns’ (colname “name”).

event.window

an ‘integer’ of length 1 that specifies a symmetric event window around the event time as specified in the index of “firm.returns”.

type

a scalar of type ‘character’ specifying the type of data adjustment required before conducting an event study analysis. See ‘Details’.

to.remap

‘logical’, indicating whether or not to remap the data in ‘firm.returns’.

remap

‘character’, indicating the type of remap required, “cumsum”, “cumprod”, or “reindex”. Used when ‘to.remap’ is ‘TRUE’.

is.levels

‘logical’, indicating whether data in ‘firm.returns’ needs to be converted into percentage returns. If ‘TRUE’, ‘firm.returns’ will be converted into percentage returns.

inference

‘logical’, specifying whether to undertake statistical inference and compute confidence intervals. The default setting is ‘TRUE’.

inference.strategy

a ‘character’ scalar specifying the inference strategy to be used for estimating the confidence interval. Presently, two methods are available: “bootstrap” and “wilcox”.

model.args

All other arguments to be passed depends on whether ‘type’ is “marketModel”, “excessReturn”, or “lmAMM”. When “None”, no additional arguments will be needed. See ‘Details’.

Details

This function is used to conduct event study analysis acting as a wrapper over the functionality provided in the eventstudies package. It provides an interface to select and control the process of event study analysis. It includes choice of the statistical model for doing in-sample estimation and computing coefficients, choice of cumulative returns, and selection of inference procedure. Process used to conduct a study is detailed below:

  1. event.period: is defined as (-event.window, event.window].

  2. estimation.period: If “type” is specified, then estimation.period is calculated for each firm-event in “event.list”, starting from the start of the data span till the start of event period (inclusive).

  3. For each firm-event, firm returns and other returns (as applicable) are converted to event time using ‘phys2eventtime’. Data is merged using ‘merge.zoo’ to make sure the indexes are consistent before conversion to event time.

  4. The selected model “type” is run on the series indexed by event time and abnormal returns are computed.

  5. NULL values because of estimation data missing are removed from the output and “outcomes” object is updated with “edatamissing”.

  6. Remapping is done if “to.remap” is ‘TRUE’ using the function specified in “remap” argument.

  7. Means of returns are computed across various events.

  8. Inference is done if “inference” is ‘TRUE’ using the technique specified in “inference.strategy”.

“firm.returns” can contain a single series also. To study a single series, use ‘[’ with drop = FALSE to subset the data set. See phys2eventtime for more details.

‘NA’ values in the returns data are converted to 0.

“type” currently supports:

Arguments to a model type can be sent inside ‘model.args’. See ‘Model arguments’ section for details on accepted fields.

“remap” can take three values:

For computing confidence intervals, the function can either use bootstrap or Wilcoxon signed-rank test. See inference.bootstrap and inference.wilcox for more details.

‘model.args’ is directly supplied to the model mentioned in the “type” argument. See section on ‘Model arguments’ for more details.

Note: phys2eventtime is called with ‘width’ set to 0 when called from this function.

Value

A list with class attribute “es” holding the following elements, or ‘NULL’ if output from a model function is ‘NULL’:

The returned object contains input information in other attributes:

Function ‘print.es’ is provided to print the coefficients and exposures of the analysis. ‘plot.es’ is used to plot the model residuals and firm returns.

Model arguments

Each model can take extra arguments (supplied as ‘model.args’) apart from mandatory ones for finer control over the analysis. Check the respective function documentation for definitions. The arguments from the relevant functions are listed here:

Author(s)

Ajay Shah, Chirag Anand, Vikram Bahure, Vimal Balasubramaniam

See Also

lmAMM, marketModel, excessReturn, phys2eventtime, inference.bootstrap, inference.wilcox, remap.cumsum, remap.cumprod, remap.event.reindex,

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
 
data("StockPriceReturns")
data("SplitDates")
data("OtherReturns")

                # Event study without adjustment
es <- eventstudy(firm.returns = StockPriceReturns,
                 event.list = SplitDates,
                 event.window = 7,
                 type = "None",
                 to.remap = TRUE,
                 remap = "cumsum",
                 inference = TRUE,
                 inference.strategy = "bootstrap")
str(es)
plot(es)

                # Event study using Market Model
es <- eventstudy(firm.returns = StockPriceReturns,
                 event.list = SplitDates,
                 event.window = 7,
                 type = "marketModel",
                 to.remap = TRUE,
                 remap = "cumsum",
                 inference = TRUE,
                 inference.strategy = "bootstrap",
                 model.args = list(
                        market.returns = OtherReturns[, "NiftyIndex"]
                        )
                 )
str(es)
plot(es)

                # Event study using Augmented Market Model
es <- eventstudy(firm.returns = StockPriceReturns,
                 event.list = SplitDates,
                 event.window = 7,
                 type = "lmAMM",
                 to.remap = TRUE,
                 remap = "cumsum",
                 inference = TRUE,
                 inference.strategy = "bootstrap",
                                                 # model arguments
                 model.args = list(
                        market.returns = OtherReturns[, "NiftyIndex"],
                        others = OtherReturns[, "USDINR"],
                        market.returns.purge = TRUE,
                        nlag.makeX = 5,
                        nlag.lmAMM = 5
                        )
                 )
str(es)
plot(es)

eventstudies documentation built on July 1, 2020, 10:26 p.m.