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.
MeasureFormulaLevelQuestion Answered
ARAR_{i,t} = R_{i,t} - E[R_{i,t}]Single firm, single dayDid the event affect firm i on day t?
CARCAR_i(t1, t2) = Sum of AR_{i,t}Single firm, event windowWhat is the total effect on firm i?
AARAAR_t = (1/N) * Sum of AR_{i,t}All firms, single dayWhat is the average effect on day t?
CAARCAAR(t1, t2) = Sum of AAR_tAll firms, event windowWhat is the total average effect?

The formal definitions are:

ARi,t=Ri,tE[Ri,t]AR_{i,t} = R_{i,t} - E[R_{i,t}]
CARi(t1,t2)=t=t1t2ARi,tCAR_i(t_1, t_2) = \sum_{t=t_1}^{t_2} AR_{i,t}
AARt=1Ni=1NARi,tAAR_t = \frac{1}{N} \sum_{i=1}^{N} AR_{i,t}
CAAR(t1,t2)=t=t1t2AARtCAAR(t_1, t_2) = \sum_{t=t_1}^{t_2} AAR_t

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:

Retrieve abnormal return measures
# 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.

TestR ClassTypeNull Hypothesis
AR t-testARTTestParametricH0: AR_{i,t} = 0
CAR t-testCARTTestParametricH0: CAR_i(t1, t2) = 0
BHAR t-testBHARTTestParametricH0: BHAR_i = 0
Permutation testPermutationTestNon-parametricH0: 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.

TestR ClassTypeKey Feature
Cross-Sectional t-testCSectTTestParametricSimple, intuitive (default)
Patell ZPatellZTestParametricStandardizes by firm-specific variance
BMP testBMPTestParametricRobust to event-induced variance
Kolari-PynnonenKolariPynnonenTestParametricRobust to variance change + clustering
Sign testSignTestNon-parametricTests proportion of positive AR
Generalized Sign testGeneralizedSignTestNon-parametricAdjusts for asymmetric returns
Rank testRankTestNon-parametricRobust to non-normality and outliers
Calendar-Time PortfolioCalendarTimePortfolioTestParametricHandles 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 test configuration
# Default: ARTTest + CARTTest (single), CSectTTest (multi)
ps <- ParameterSet$new()
Custom single-event tests
# 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)
# 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
# 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?

We use cookies for analytics to improve this site. See our Privacy Policy.