Test Statistics
Event study test statistics assess whether abnormal returns are significantly different from zero. The four measures — AR, CAR, AAR, and CAAR — operate at different levels: single-firm daily, single-firm cumulative, cross-sectional average, and cross-sectional cumulative. The EventStudy package provides 12 tests.
Part of the Methodology Guide
This page is part of the Event Study Methodology Guide.
Event studies produce four levels of abnormal return measures. Each answers a different question about event impact. This page explains what they are, how they relate, and which test statistics to apply.
What Are the Four Measures of Abnormal Returns?
Event study test statistics are inferential tools that determine whether observed abnormal returns are statistically distinguishable from zero. They transform raw abnormal return estimates into standardized test values with known distributions under the null hypothesis of no event effect. The EventStudy R package implements 12 distinct tests spanning parametric, non-parametric, and variance-robust approaches, covering the full range of methods recommended in the literature since Brown and Warner (1985).
- Parametric Test
- A significance test that assumes the distribution of abnormal returns (typically normal). Examples include the t-test, Patell Z, and BMP test. These tests have higher statistical power when distributional assumptions hold.
- Non-Parametric Test
- A distribution-free significance test that makes no assumption about the shape of the return distribution. Examples include the Sign test, Rank test, and Generalized Sign test. These are robust to outliers and non-normality.
- Event-Induced Variance
- The increase in return volatility that often accompanies corporate events such as earnings announcements or mergers. Standard tests that ignore this effect can over-reject the null hypothesis by 2 to 5 times the nominal significance level.
| Measure | Formula | Level | Question Answered |
|---|---|---|---|
| AR | AR_{i,t} = R_{i,t} - E[R_{i,t}] | Single firm, single day | Did the event affect firm i on day t? |
| CAR | CAR_i(t1, t2) = Sum of AR_{i,t} | Single firm, event window | What is the total effect on firm i? |
| AAR | AAR_t = (1/N) * Sum of AR_{i,t} | All firms, single day | What is the average effect on day t? |
| CAAR | CAAR(t1, t2) = Sum of AAR_t | All firms, event window | What is the total average effect? |
The formal definitions are:
The hierarchy is simple: AR → sum over time → CAR; AR → average across firms → AAR; AAR → sum over time → CAAR. In a typical multi-event study with 50 to 200 firms and a [-1, +1] event window of 3 trading days, CAAR is the primary measure of interest, while AAR reveals the daily pattern of information incorporation.
How Do I Compute Test Statistics in R?
The EventStudy package computes all four measures automatically when you run an event study:
# AR: abnormal returns for each firm
task$get_ar(event_id = 1)
# CAR: cumulative abnormal returns for each firm
task$get_car(event_id = 1)
# AAR and CAAR: cross-sectional aggregates (with test statistics)
task$get_aar()
# Plot CAAR with confidence intervals
plot_event_study(task, type = "caar")Which Test Statistics Are Available?
The package provides 12 test statistics across two levels. Each tests the null hypothesis that abnormal returns equal zero. As shown by Kolari and Pynnonen (2010), the choice of test statistic can materially affect rejection rates: the Patell Z test over-rejects by up to 200% when events cluster in calendar time, while the Kolari-Pynnonen adjustment maintains correct size near the nominal 5% level.
Single-Event Tests (AR & CAR)
Test whether a specific firm's abnormal returns are significant.
| Test | R Class | Type | Null Hypothesis |
|---|---|---|---|
| AR t-test | ARTTest | Parametric | H0: AR_{i,t} = 0 |
| CAR t-test | CARTTest | Parametric | H0: CAR_i(t1, t2) = 0 |
| BHAR t-test | BHARTTest | Parametric | H0: BHAR_i = 0 |
| Permutation test | PermutationTest | Non-parametric | H0: AR_{i,t} = 0 (exact) |
Details and formulas: AR & CAR Test Statistics
Multi-Event Tests (AAR & CAAR)
Test whether the average effect across all firms is significant.
| Test | R Class | Type | Key Feature |
|---|---|---|---|
| Cross-Sectional t-test | CSectTTest | Parametric | Simple, intuitive (default) |
| Patell Z | PatellZTest | Parametric | Standardizes by firm-specific variance |
| BMP test | BMPTest | Parametric | Robust to event-induced variance |
| Kolari-Pynnonen | KolariPynnonenTest | Parametric | Robust to variance change + clustering |
| Sign test | SignTest | Non-parametric | Tests proportion of positive AR |
| Generalized Sign test | GeneralizedSignTest | Non-parametric | Adjusts for asymmetric returns |
| Rank test | RankTest | Non-parametric | Robust to non-normality and outliers |
| Calendar-Time Portfolio | CalendarTimePortfolioTest | Parametric | Handles temporal clustering |
Details and formulas: AAR & CAAR Test Statistics
Which Test Should I Use?
Use the following decision tree:
- Single firm, short horizon (days)? → AR t-test + CAR t-test
- Single firm, long horizon (months)? → BHAR t-test
- Single firm, non-normal residuals? → Permutation test
- Multiple firms, normal residuals, no event-induced variance? → Cross-Sectional t-test + Patell Z
- Multiple firms, event-induced variance, no clustering? → BMP test
- Multiple firms, event-induced variance + clustering? → Kolari-Pynnonen
- Multiple firms, non-normal residuals? → Sign test + Rank test
- Clustered event dates? → Calendar-Time Portfolio + Kolari-Pynnonen
Default recommendation
Start with the Cross-Sectional t-test (default) and Patell Z for multi-event studies. Add a non-parametric test (Sign or Rank) as a robustness check. If you suspect event-induced variance changes, include the BMP test. For clustered event dates, use Kolari-Pynnonen.
How Do I Configure Tests in R?
Tests are configured via ParameterSet:
# Default: ARTTest + CARTTest (single), CSectTTest (multi)
ps <- ParameterSet$new()# Custom single-event tests
ps <- ParameterSet$new(
single_event_statistics = SingleEventStatisticsSet$new(
tests = list(ARTTest$new(), CARTTest$new(), BHARTTest$new())
)
)# Custom multi-event tests (parametric + non-parametric)
ps <- ParameterSet$new(
multi_event_statistics = MultiEventStatisticsSet$new(
tests = list(
CSectTTest$new(),
PatellZTest$new(),
BMPTest$new(),
SignTest$new(),
RankTest$new()
)
)
)# One-sided test (e.g., testing for positive abnormal returns)
ps <- ParameterSet$new(
single_event_statistics = SingleEventStatisticsSet$new(
tests = list(ARTTest$new(confidence_type = "one-sided"))
)
)Literature
- Campbell, J.Y., Lo, A.W. & MacKinlay, A.C. (1997). The Econometrics of Financial Markets.
- Kolari, J.W. & Pynnonen, S. (2010). Event Studies for Financial Research.
- Wooldridge, J.M. (2019). Econometrics.
Try it in the Event Study App
Apply these concepts to your own data with our free browser-based tool — no installation required.
What Should I Read Next?
- AR & CAR Test Statistics — single-event test formulas and code
- AAR & CAAR Test Statistics — multi-event test formulas and code
- Expected Return Models — choose the right model
- Diagnostics & Export — validate model fit