Choosing the Right Test Statistic

The choice of test statistic determines whether your event study produces valid inference. Different tests make different assumptions about the distribution of abnormal returns, the behavior of variance around the event, and the independence of events across firms. Using the wrong test can lead to over-rejection (finding effects that are not there) or under-rejection (missing real effects). This page provides a systematic decision framework for selecting the right test.

Part of the Methodology Guide

This page is part of the Event Study Methodology Guide. For formulas and implementation details of individual tests, see AR & CAR Tests and AAR & CAAR Tests.

Decision Framework

Selecting a test statistic involves answering four questions about your study design. Each question narrows the set of appropriate tests.

QuestionIf YesIf No
1. Single event or multiple events?Use AR/CAR tests (single-event)Use AAR/CAAR tests (multi-event)
2. Can you assume normally distributed returns?Parametric tests are validUse non-parametric tests (Sign, Rank)
3. Does the event change return variance?Use variance-robust tests (BMP, Kolari-Pynnonen)Standard tests (Patell Z, Cross-Sectional t) are adequate
4. Are event dates clustered across firms?Use clustering-robust tests (Kolari-Pynnonen, Calendar-Time)Cross-sectional independence assumption holds

Parametric vs. Non-Parametric Tests

The first major distinction is between parametric and non-parametric tests. Each class has strengths and weaknesses.

Parametric Tests

Parametric tests assume that abnormal returns follow a known distribution (typically normal). They use the estimated variance of abnormal returns to construct test statistics. When the distributional assumptions hold, parametric tests are more powerful than non-parametric alternatives.

TestKey AssumptionRobust ToNot Robust To
Cross-Sectional t-testAR ~ Normal, equal varianceHeterogeneous event effectsEvent-induced variance; non-normality
Patell ZStandardized AR ~ NormalHeterogeneous firm-specific varianceEvent-induced variance; clustering
BMP testStandardized AR ~ NormalEvent-induced variance changesClustering; severe non-normality
Kolari-PynnonenStandardized AR ~ NormalEvent-induced variance + clusteringSevere non-normality

Non-Parametric Tests

Non-parametric tests make minimal distributional assumptions. They are particularly useful when returns are skewed, heavy-tailed, or contain outliers — conditions that are common in practice, especially for small-cap stocks and emerging markets.

TestHow It WorksStrengthsWeaknesses
Sign testTests whether the proportion of positive ARs exceeds 50%Robust to outliers and non-normalityLow power; ignores AR magnitude
Generalized Sign testAdjusts the expected proportion using estimation window dataAccounts for asymmetric return distributionsStill ignores magnitude; requires estimation window data
Rank testRanks ARs against estimation window residualsRobust to non-normality; uses magnitude informationAssumes symmetric distribution under H0

Use both

Best practice is to report both parametric and non-parametric test results. If they agree, your conclusions are robust. If they disagree, investigate why — it often reveals data quality issues or distributional violations.

Handling Event-Induced Variance

Many events cause return variance to increase on the event date. For example, earnings announcements typically double or triple daily return variance. M&A announcements can increase variance even more. This phenomenon is called event-induced variance.

Standard tests like the Patell Z assume that the variance of abnormal returns in the event window equals the estimation-window variance. When event-induced variance is present, this assumption is violated, and the Patell Z test over-rejects the null hypothesis — it reports significant effects even when there are none.

TestHandles Event-Induced Variance?How
Cross-Sectional t-testPartiallyUses cross-sectional variance, which captures some variance increase
Patell ZNoUses estimation-window variance only
BMP testYesStandardizes by estimation-window variance, then uses cross-sectional variance of standardized ARs
Kolari-PynnonenYesExtends BMP with clustering adjustment
Sign testYesDoes not use variance estimates
Rank testPartiallyRank transformation reduces the effect of variance changes

The BMP test (Boehmer, Musumeci, and Poulsen, 1991) is the most widely recommended solution. It first standardizes each firm's abnormal return by its estimation-window standard deviation, then computes the cross-sectional standard deviation of these standardized abnormal returns. This two-step approach captures event-induced variance in the cross-sectional step.

Use the BMP test for event-induced variance
# Configure with BMP test
ps <- ParameterSet$new(
  multi_event_statistics = MultiEventStatisticsSet$new(
    tests = list(
      BMPTest$new(),           # Robust to event-induced variance
      CSectTTest$new(),        # Comparison (not robust)
      PatellZTest$new(),       # Comparison (not robust)
      GeneralizedSignTest$new()  # Non-parametric robustness check
    )
  )
)

task <- run_event_study(task, ps)

Handling Cross-Correlation (Event Clustering)

When multiple firms experience the event on the same date (or within overlapping event windows), their abnormal returns are cross-sectionally correlated. This violates the independence assumption of most tests and causes over-rejection.

Common scenarios with clustered events include:

  • Regulatory changes: A new law affects all firms in an industry on the same date.
  • Macroeconomic announcements: Interest rate decisions, GDP releases, or employment reports affect all stocks simultaneously.
  • Industry-wide events: A product recall or safety incident that affects all competitors.
ApproachTest / MethodWhen to Use
Clustering-adjusted testKolari-PynnonenModerate clustering; want to keep standard event study framework
Calendar-Time PortfolioCalendarTimePortfolioTestSevere clustering; events concentrated on few dates
Crude Dependence AdjustmentManual adjustment to Patell ZQuick adjustment; moderate clustering
Portfolio approachAggregate firms into one portfolio per event dateAll firms share the same event date
Handle clustered events
# Kolari-Pynnonen: robust to both variance change and clustering
ps <- ParameterSet$new(
  multi_event_statistics = MultiEventStatisticsSet$new(
    tests = list(
      KolariPynnonenTest$new(),   # Robust to variance + clustering
      CalendarTimePortfolioTest$new(), # Portfolio approach
      BMPTest$new(),              # Robust to variance only (comparison)
      RankTest$new()              # Non-parametric check
    )
  )
)

task <- run_event_study(task, ps)

Do not ignore clustering

Ignoring cross-correlation when events are clustered leads to severely inflated test statistics. Kolari and Pynnonen (2010) show that the actual rejection rate of the Patell Z test can exceed 70% at a nominal 5% significance level when events are clustered. Always check whether your event dates overlap.

The table below provides concrete recommendations for common event study scenarios. Each recommendation includes a primary test and a robustness check.

ScenarioPrimary TestRobustness CheckRationale
M&A announcements (target firms)BMP testRank testLarge abnormal returns cause variance increase; target CARs are well-behaved
Earnings announcementsBMP testGeneralized Sign testStrong event-induced variance; large samples available
Regulatory changes (industry-wide)Kolari-PynnonenCalendar-Time PortfolioSame event date for all firms; cross-correlation is severe
ESG events (heterogeneous dates)BMP testSign testDates vary across firms; event-induced variance moderate
Small sample (N < 20)Cross-Sectional t-testSign testBMP and Patell Z require larger samples for asymptotic properties
Non-normal returns (small caps)Rank testGeneralized Sign testParametric tests unreliable with heavy tails and skewness
Long-run studies (BHAR)Skewness-adjusted t-testBootstrapBHAR returns are severely right-skewed; standard t-tests invalid
Single-firm case studyAR t-test + CAR t-testPermutation testNo cross-sectional aggregation; use exact tests if possible

Decision Tree

Follow this decision tree to select your test statistics. Start at the top and follow the path that matches your study.

StepConditionAction
1Single firm?Use AR t-test + CAR t-test. Add Permutation test for robustness. Stop.
2Multiple firms. Events on same date?Go to Step 2a.
2aYes, clustered dates.Use Kolari-Pynnonen + Calendar-Time Portfolio + Rank test. Stop.
2bNo, non-clustered.Go to Step 3.
3Event likely changes variance?Go to Step 3a.
3aYes, event-induced variance.Use BMP test + Generalized Sign test. Stop.
3bNo, stable variance.Go to Step 4.
4Returns approximately normal?Go to Step 4a.
4aYes, normal returns.Use Cross-Sectional t-test + Patell Z + Sign test. Stop.
4bNo, non-normal returns.Use Rank test + Generalized Sign test. Stop.

How Do I Configure Multiple Tests in R?

The EventStudy package allows you to run multiple tests simultaneously. This makes it easy to compare results and assess robustness.

Comprehensive test configuration
# Recommended setup: parametric + non-parametric + variance-robust
ps <- ParameterSet$new(
  # Single-event tests
  single_event_statistics = SingleEventStatisticsSet$new(
    tests = list(
      ARTTest$new(),
      CARTTest$new()
    )
  ),
  # Multi-event tests
  multi_event_statistics = MultiEventStatisticsSet$new(
    tests = list(
      # Parametric
      CSectTTest$new(),       # Baseline
      PatellZTest$new(),      # Standardized
      BMPTest$new(),          # Variance-robust
      KolariPynnonenTest$new(), # Variance + clustering robust

      # Non-parametric
      SignTest$new(),
      GeneralizedSignTest$new(),
      RankTest$new()
    )
  )
)

task <- run_event_study(task, ps)

# View all test results
task$get_aar()
One-sided tests
# One-sided tests (e.g., testing for positive abnormal returns only)
ps <- ParameterSet$new(
  multi_event_statistics = MultiEventStatisticsSet$new(
    tests = list(
      CSectTTest$new(confidence_type = "one-sided"),
      BMPTest$new(confidence_type = "one-sided")
    )
  )
)

Common Mistakes

  • Using only the Patell Z test: The Patell Z is popular because it is well-known, but it is not robust to event-induced variance. Always include the BMP test.
  • Ignoring clustering: If your events share event dates (even partially overlapping windows), standard tests will produce spuriously significant results.
  • Relying on a single test: No single test is best in all scenarios. Report at least two tests (one parametric, one non-parametric) to demonstrate robustness.
  • Using parametric tests with small samples: With fewer than 20 events, asymptotic properties of Patell Z and BMP may not hold. Prefer the Cross-Sectional t-test and non-parametric tests.
  • Not checking normality: Run a Shapiro-Wilk test on the estimation-window residuals or inspect a QQ-plot before relying on parametric tests.

Literature

  • Boehmer, E., Masumeci, J. & Poulsen, A.B. (1991). Event-study methodology under conditions of event-induced variance. Journal of Financial Economics, 30(2), 253-272.
  • Kolari, J.W. & Pynnonen, S. (2010). Event study testing with cross-sectional correlation of abnormal returns. Review of Financial Studies, 23(11), 3996-4025.
  • Corrado, C.J. (1989). A nonparametric test for abnormal security-price performance in event studies. Journal of Financial Economics, 23(2), 385-395.
  • Patell, J.M. (1976). Corporate forecasts of earnings per share and stock price behavior. Journal of Accounting Research, 14(2), 246-276.

Implement this with the R package

Access advanced features and full customization through the EventStudy R package.

What Should I Do Next?

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