AbnormalReturns implements the event study methodology and abnormal returns in particular. The event study methodology is a common way to study the effects of certain events on stock prices. It thus calculates a so-called abnormal return that measures the impact without confounding influences. As part of this method, one first has to predict a normal return in the absence of the event under study. Afterwards, one calculates the difference between the actual return and the previously predicted normal return, i.e. the abnormal return.

Event Study Methodologies and Abnormal Returns

Event studies use data from financial markets to inspect changes in financial values due to a specific event and measures its impact. A recent literature review (Konchitchki and O'Leary 2011) reveals how Information Systems research has introduced and exploited event study methodology – turning event study into both an effective and widespread approach. Its general procedure (MacKinlay 1997) involves the following steps: (1) identifying the events of interest; (2) defining the so-called event window; (3) predicting a normal return during the event window in the absence of the event; (4) estimating the difference between actual and normal return defined as the abnormal return.

The initial task is to define the event of interest. In our research, the event consists of the daily commodity- related announcements from the news corpus. In a second step, we identify the time interval during which the commodity price involved in this event is examined. This period of interest is defined as the event window. Our event window, as we are provided with daily financial market data, includes the single day of the announcement stream. To extract the impact of daily events, event study defines the abnormal return. The abnormal return equals the actual return (during the event window) minus the expected return based on the pre-event time. This resulting value, i.e. the abnormal return, gives credit to the extracted effect of the events and measures its impact. In contrast to that, the normal return is defined as the expected return without conditioning on the event $X_\tau$ at time $\tau$ taking place. Then, the abnormal return of an arbitrary commodity is given by

\begin{equation} AR_c(\tau) = R_c(\tau) - E[R_c(\tau) \,|\, \neg X_\tau] \end{equation}

where $AR_c(\tau)$, $R_c(\tau)$ and $E(R_c(\tau)|\neg X_\tau)$ are the abnormal, actual and normal returns. The normal return is estimated during a time interval named estimation window.

Variable | Description ------------- | ---------------------------- $AR_c(\tau)$ | abnormal return $R_c(\tau)$ | actual return $E(R_c(\tau)|\neg X_\tau)$ | normal return, estimated during a time interval named estimation window.

There exist several models to compute the normal return. This package supports the so-called market model and constant mean model, hereafter explained.

Market Model

According to MacKinlay (1997), we calculate the normal return by the so-called market model. This model relies on the assumptions that asset returns are jointly multivariate normal and independently and identically distributed through time. This assumption might seem strong, but is, in practice, empirically reasonable (MacKinlay 1997). The market model assumes a stable linear relation between the market return $R_m(t)$ and the normal return, i.e. the return of the market portfolio. More precisely, the market model is for any commodity $c$

\begin{equation} R_c(t) = \alpha_c + \beta_cR_m(t) + \epsilon_{c,t},\enspace E(\epsilon_{c,t})=0,\enspace Var(\epsilon_{c,t})=\sigma^2_{e_c} \end{equation}

where $R_c(t)$ and $R_m(t)$ are returns in period $t$ of commodity $c$ and on the market portfolio $m$, respectively, and $\epsilon_{c,t}$ is the zero mean disturbance term. $\alpha_c$, $\beta_c$ and $\sigma^2_{e_c}$ are the parameters of the market model, determined from a regression such as ordinary least squares (OLS) based on the values from the estimation window.

Ultimately, the abnormal return in period $\tau$ is computed by \begin{equation} AR_c(\tau) := R_c(\tau) - \alpha_c - \beta_cR_m(\tau) \end{equation}

Constant Mean Model

An alternative to the market model is the so-called constant mean model. This model simply estimates the normal return as the mean return within the estimation window. \begin{equation} R_c(t) = \mu_{c} + \epsilon_{c,t},\enspace E(\epsilon_{c,t})=0,\enspace Var(\epsilon_{c,t})=\sigma^2_{e_c} \end{equation} where the parameter $\mu$ is estimated by the arithmetic mean of estimation-window returns.

\begin{equation} \mu_{c} = \dfrac{1}{M_i} \sum\limits_{t\in T} R_c(t) \end{equation}

where $M_i$ is the number of non-missing returns over the estimation window and T is the estimation window.

Ultimately, the abnormal return in period $\tau$ is computed by \begin{equation} AR_c(\tau) := R_c(\tau) - \mu_{c} \end{equation}

Example

This example reads data from two stock data sets (Adidas and its corresponding market index DAX), downloaded from the Yahoo Finance platform^[https://de.finance.yahoo.com/q/hp?s=%5EGDAXI accessed 24-July-2016] ^[https://de.finance.yahoo.com/q/hp?s=ADS.DE accessed 24-July-2016]. The specified csv-files contain data of the year 2015 (from=2015-01-01, to=2015-12-31) and as such contains 253 workdays.

d.DAX <- read.csv("../data-raw/DAX_2015.csv", stringsAsFactors = FALSE)
d.DAX$Date <- as.POSIXct(d.DAX$Date)
d.DAX <- d.DAX[order(d.DAX$Date),]
comment(d.DAX) <- 'DAX'
head(d.DAX)

d.Adidas <- read.csv("../data-raw/DAX_2015_Adidas.csv", stringsAsFactors = FALSE)
d.Adidas <- d.Adidas[d.Adidas$Volume != 0, ]
d.Adidas$Date <- as.POSIXct(d.Adidas$Date)
d.Adidas <- d.Adidas[order(d.Adidas$Date),]
comment(d.Adidas) <- 'Adidas'
head(d.Adidas)

In a next step abnormalReturns() computes the abnormal returns for commodity Adidas and market portfolio DAX for the year 2015, based on an estimationWindowLength of 10. The cumulative abnormal returns represent the sum over the last c=3 abnormal returns.

The result is a data-frame with one row per event and four columns describing Date, abnormalReturn, cumulativeAbnormalReturn and stockReturn.

library(AbnormalReturns)
abnormal <- abnormalReturn(prices_stock = d.Adidas, prices_market = d.DAX,
                           estimationWindowLength=10, c=3, model='marketmodel')
head(abnormal)
summary(abnormal$abnormalReturn)

Example 2

The prices arguments prices_stock and prices_market might also be character objects representing stock symbols. The following function call will produce the same result as the previous example, but additionally takes care about retrieving the data from the Yahoo Finance Platform.

abnormal2 <- abnormalReturn(prices_stock="ADS.DE", prices_market="%5EGDAXI",
                            from='2015-01-01', to='2015-12-31',
                            estimationWindowLength=10, c=3, model='marketmodel')

head(abnormal)
summary(abnormal$abnormalReturn)

Figures

An optional parameter showPlot defines wether or not the commodity performance together with the computed abnormal return shall be visualized. In the following two plots are shown.

x <- abnormalReturn(prices_stock = d.Adidas, prices_market = d.DAX, showPlot = TRUE)
y <- abnormalReturn(prices_stock="VOW3.DE", prices_market="%5EGDAXI",
                    estimationWindowLength=20, from="2015-01-01", to="2015-12-31",
                    showPlot = TRUE)
x <- abnormalReturn(prices_stock = d.Adidas, prices_market = d.DAX, showPlot = TRUE)
y <- abnormalReturn(prices_stock="VOW3.DE", prices_market="%5EGDAXI",
                    estimationWindowLength=20, from="2015-01-01", to="2015-12-31",
                    showPlot = TRUE)


axelperschmann/AbnormalReturns documentation built on May 11, 2019, 4:12 p.m.