An event study parametric test described in Patell 1976.

patell(list_of_returns, event_start, event_end)

Arguments

list_of_returns

a list of objects of S3 class returns, each element of which is treated as a security.

event_start

an object of Date class giving the first date of the event period.

event_end

an object of Date class giving the last date of the event period.

Value

A data frame of the following columns:

  • date: a calendar date

  • weekday: a day of the week

  • percentage: a share of non-missing observations for a given day

  • mean: an average abnormal return

  • pt_stat: a Patell's test statistic

  • pt_signif: a significance of the statistic

Details

Performs a parametric test for event study, which is described in Patell 1976, which is called standardized-residuals method in Boehmer 1991. Test's assumptions are a cross-sectional independence and an insignificance of an event-induced variance. The standardization smooths the effect of the event-induced variance comparing to Brown and Warner tests. Also standardization incorporates the situation, when a highly volatile security dominates the test. The test examines the hypothesis whether the theoretical cross-sectional expected value for a given day is equal to zero. It calculates statistics even if event window and estimation period are overlapped (intersect). The critical values are standard normal. The significance levels of \(\alpha\) are 0.1, 0.05, and 0.01 (marked respectively by *, **, and ***).

References

  • Patell J.M. Corporate forecasts of earnings per share and stock price behavior: empirical tests. Journal of Accounting Research, 14(2):246- 276, 1976.

  • Boehmer E., Musumeci J., Poulsen A.B. Event-study methodology under conditions of event-induced variance. Journal of Financial Economics, 30(2):253-272, 1991.

See also

Examples

if (FALSE) { library("magrittr") rates_indx <- get_prices_from_tickers("^GSPC", start = as.Date("2019-04-01"), end = as.Date("2020-04-01"), quote = "Close", retclass = "zoo") %>% get_rates_from_prices(quote = "Close", multi_day = TRUE, compounding = "continuous") tickers <- c("AMZN", "ZM", "UBER", "NFLX", "SHOP", "FB", "UPWK") get_prices_from_tickers(tickers, start = as.Date("2019-04-01"), end = as.Date("2020-04-01"), quote = "Close", retclass = "zoo") %>% get_rates_from_prices(quote = "Close", multi_day = TRUE, compounding = "continuous") %>% apply_market_model(regressor = rates_indx, same_regressor_for_all = TRUE, market_model = "sim", estimation_method = "ols", estimation_start = as.Date("2019-04-01"), estimation_end = as.Date("2020-03-13")) %>% patell(event_start = as.Date("2020-03-16"), event_end = as.Date("2020-03-20")) } ## The result of the code above is equivalent to: data(securities_returns) patell(list_of_returns = securities_returns, event_start = as.Date("2020-03-16"), event_end = as.Date("2020-03-20"))
#> date weekday percentage mean pt_stat pt_signif #> 1 2020-03-16 Monday 100 0.02329740 2.5507399 ** #> 2 2020-03-17 Tuesday 100 -0.03157867 -2.9495613 *** #> 3 2020-03-18 Wednesday 100 -0.01617850 0.3283654 #> 4 2020-03-19 Thursday 100 0.07672027 8.4216222 *** #> 5 2020-03-20 Friday 100 0.05840545 6.3196352 ***