Title: | A Robust and Powerful Test of Abnormal Stock Returns in Long-Horizon Event Studies |
---|---|
Description: | Based on Dutta et al. (2018) <doi:10.1016/j.jempfin.2018.02.004>, this package provides their standardized test for abnormal returns in long-horizon event studies. The methods used improve the major weaknesses of size, power, and robustness of long-run statistical tests described in Kothari/Warner (2007) <doi:10.1016/B978-0-444-53265-7.50015-9>. Abnormal returns are weighted by their statistical precision (i.e., standard deviation), resulting in abnormal standardized returns. This procedure efficiently captures the heteroskedasticity problem. Clustering techniques following Cameron et al. (2011) <doi:10.1198/jbes.2010.07136> are adopted for computing cross-sectional correlation robust standard errors. The statistical tests in this package therefore accounts for potential biases arising from returns' cross-sectional correlation, autocorrelation, and volatility clustering without power loss. |
Authors: | Siegfried Köstlmeier [aut, cre] , Seppo Pynnonen [aut] |
Maintainer: | Siegfried Köstlmeier <[email protected]> |
License: | BSD_3_clause + file LICENSE |
Version: | 1.2.2 |
Built: | 2024-10-23 05:30:11 UTC |
Source: | https://github.com/skoestlmeier/crseeventstudy |
asr
implements the calculation of abnormal standardized returns.
Abnormal standardized returns are defined as the excess standardized returns relative to the standardized return of a matching control firm or relative to the average of standardized returns of a matching control portfolio. Standardized returns are defined as where
is a standard deviation estimator of log returns
.
asr(event, control, logret = FALSE)
asr(event, control, logret = FALSE)
event |
a vector or time series of returns. |
control |
a vector or time series of returns. |
logret |
An object of class |
asr
returns a vector of class "numeric"
:
ASR |
Vector containing abnormal standardized returns. |
Dutta, A., Knif, J., Kolari, J.W., Pynnonen, S. (2018): A robust and powerful test of abnormal stock returns in long-horizon event studies. Journal of Empirical Finance, 47, p. 1-24. doi:10.1016/j.jempfin.2018.02.004.
## load demo_returns ## calculate mean of daily abnormal standardized returns from 2015-01-01 to 2017-12-31 ## with E.ON AG as event firm and RWE AG as control firm. data(demo_returns) ASR <- asr(event=demo_returns$EON, control=demo_returns$RWE, logret=FALSE) mean(ASR)
## load demo_returns ## calculate mean of daily abnormal standardized returns from 2015-01-01 to 2017-12-31 ## with E.ON AG as event firm and RWE AG as control firm. data(demo_returns) ASR <- asr(event=demo_returns$EON, control=demo_returns$RWE, logret=FALSE) mean(ASR)
crseEvent
implements a robust statistical test developed by Dutta et al. (JempFin, 2018).
The test is based on abnormal standardized returns and offers three implementations. Standardized returns are defined as where
is a standard deviation estimator of log returns
:
Use of Abnormal standardized returns (ASR)
Abnormal standardized returns are defined as , where
is the standardized return of the matching control firm or the average of standardized returns of the matching control portfolio.
Use of Standardized abnormal returns (SAR)
Standardized abnormal returns are defined as . The matching control return should be derived from a single firm observation and not be the return-series of a portfolio.
Use of Continuously compounded abnormal returns (CCAR)
Continuously compounded abnormal returns are defined as , where
is the event month
continuously compounded return (i.e., log-return) of event stock
, and
is the continuously compounded return of the control firm.
crseEvent(data, abnr = "ars", cluster1 = "yyyymm", cluster2 = NULL, na.rm = TRUE, na.replace = 0)
crseEvent(data, abnr = "ars", cluster1 = "yyyymm", cluster2 = NULL, na.rm = TRUE, na.replace = 0)
data |
an object of class |
abnr |
Name of a column from |
cluster1 |
Name of a column from |
cluster2 |
Name of a column from |
na.rm |
An object of class |
na.replace |
A numeric scalar: If |
crseEvent
returns an object of class
crse
and list
.
The returning value of "crseEvent"
is a "list"
containing the
following components:
N |
Total number of observations. |
mean.abnormal.ret |
Mean abnormal return. |
t.val.nonclustered |
Non-clustered (common) t-value. |
p.val.nonclustered |
Non-clustered (common) p-value. |
t.val.one.clustered |
One-way clustered t-value. |
p.val.one.clustered |
One-way clustered p-value. |
tcl2 |
One-way clustering t-value with respect to second clustering variable ( |
pcl2 |
One-way clustering p-value with respect to second clustering variable ( |
tcl12 |
|
pcl12 |
|
cluster1 |
Name of the first cluster variable. |
cluster2 |
Name of the second cluster variable. |
reg.fit |
Regression results on which t-value compuations are based. |
var.cl1 |
Robust variance of abnormal return series with regard to one-way clustering on variable |
var.cl2 |
Robust variance of abnormal return series with regard to one-way clustering on variable |
var.cl12 |
Robust variance of abnormal return series with regard to two-way clustering on both variable |
unique.cl1 |
Total number of unique observations by clustering on variable |
unique.cl2 |
Total number of unique observations by clustering on variable |
Dutta, A., Knif, J., Kolari, J.W., Pynnonen, S. (2018): A robust and powerful test of abnormal stock returns in long-horizon event studies. Journal of Empirical Finance, 47, p. 1-24. doi:10.1016/j.jempfin.2018.02.004.
## load demo_share_repurchases ## one-way clustering on column "date" and print summary statistics data(demo_share_repurchases) crse <- crseEvent(demo_share_repurchases, abnr="ars", cluster1 = "date") summary(crse) ## print mean of abnormal return series crse$mean.abnormal.ret
## load demo_share_repurchases ## one-way clustering on column "date" and print summary statistics data(demo_share_repurchases) crse <- crseEvent(demo_share_repurchases, abnr="ars", cluster1 = "date") summary(crse) ## print mean of abnormal return series crse$mean.abnormal.ret
demo_returns
is a sample of daily total returns, i.e. including dividends, for the german electric utility companies E.ON AG (ISIN: DE000ENAG999) and RWE AG (ISIN: DE0007037129). The return series for the Frankfurt stock exchange starts at 2015-01-01 with end at 2017-12-31 and has 760 daily return observations which are denoted in Euro. date
is the trading-day, for which return observations are available ind the format "yyyy-mm-dd". EON
denotes the return series for E.ON AG and RWE
denotes the return series for RWE AG.
data(demo_returns)
data(demo_returns)
## load demo_returns data(demo_returns) ## calculate the mean total return E.ON AG in the year 2016. ## get the appropriate rows for the whole year 2016 dates <- which("2016-01-01" <= demo_returns$date & demo_returns$date <= "2016-12-31") ## calculate mean return mean(demo_returns$EON[dates])
## load demo_returns data(demo_returns) ## calculate the mean total return E.ON AG in the year 2016. ## get the appropriate rows for the whole year 2016 dates <- which("2016-01-01" <= demo_returns$date & demo_returns$date <= "2016-12-31") ## calculate mean return mean(demo_returns$EON[dates])
sar
implements the calculation of standardized abnormal returns.
Standardized abnormal returns are defined as the excess event-return relative to a specific return of a matching control firm, and the remaining result subsequently divided by the standard variation of this excess return series: , with log-returns
and
. The matching control-return should be a single firm return-series and not portfolio-returns.
sar(event, control, logret="FALSE")
sar(event, control, logret="FALSE")
event |
a vector or time series of returns. |
control |
a vector or time series of returns. |
logret |
An object of class |
sar
returns a vector of class "numeric"
:
SAR |
Vector containing standardized abnormal returns. |
Dutta, A., Knif, J., Kolari, J.W., Pynnonen, S. (2018): A robust and powerful test of abnormal stock returns in long-horizon event studies. Journal of Empirical Finance, 47, p. 1-24. doi:10.1016/j.jempfin.2018.02.004.
## load demo_returns ## calculate mean of daily standardized abnormal returns from 2015-01-01 to 2017-12-31 ## with E.ON AG as event firm and RWE AG as control firm. data(demo_returns) SAR <- sar(event=demo_returns$EON, control=demo_returns$RWE, logret=FALSE) mean(SAR)
## load demo_returns ## calculate mean of daily standardized abnormal returns from 2015-01-01 to 2017-12-31 ## with E.ON AG as event firm and RWE AG as control firm. data(demo_returns) SAR <- sar(event=demo_returns$EON, control=demo_returns$RWE, logret=FALSE) mean(SAR)