AR & CAR Test Statistics
AR and CAR test statistics evaluate whether a single firm's abnormal return is statistically significant. The AR t-test assesses daily impact, the CAR t-test measures cumulative event-window impact, the BHAR t-test handles long horizons, and the permutation test provides exact p-values.
Part of the methodology guide
Part of the Event Study Methodology Guide.
Single-event test statistics assess whether the abnormal return for one specific firm is significantly different from zero. These tests use the firm's own estimation-window residuals to form the standard error.
What Are the Single-Event Test Statistics?
Single-event test statistics are hypothesis tests designed to assess whether the abnormal return observed for one individual firm around a specific event is statistically distinguishable from zero. These tests use the standard deviation of residuals from the estimation window, typically 120 to 250 trading days, to form the benchmark for normal return variation. According to Campbell, Lo, and MacKinlay (1997), single-event tests have approximately 50% power to detect a 1% abnormal return with a standard estimation window of 100 days.
- AR t-test
- A parametric test that divides the daily abnormal return by the estimation-window standard deviation. Under the null hypothesis of no event effect, the test statistic follows a t-distribution with M - K degrees of freedom.
- CAR t-test
- A parametric test for the cumulative abnormal return over the event window, scaled by the square root of the window length times the estimation-window standard deviation. Captures the total event impact rather than a single day.
- Permutation Test
- A non-parametric, distribution-free test that generates exact p-values by randomly reassigning abnormal returns between the estimation and event windows across 10,000 or more iterations.
| Test | R Class | Null Hypothesis | Distribution | Best For |
|---|---|---|---|---|
| AR t-test | ARTTest | H₀: ARᵢ,ₜ = 0 | tₘ₋ₖ | Daily impact at each event time |
| CAR t-test | CARTTest | H₀: CARᵢ = 0 | tₘ₋ₖ | Total impact over event window |
| BHAR t-test | BHARTTest | H₀: BHARᵢ = 0 | tₘ₋ₖ | Long-horizon compounded returns |
All tests share the same estimation-window standard deviation:
where is the estimation window length and is the model degrees of freedom (e.g., for the Market Model).
AR t-test
Tests whether the abnormal return on a single day is significantly different from zero.
A significant t-statistic at event time indicates the event had an immediate price impact on firm . With a typical estimation window of 120 trading days and 2 model parameters (Market Model), the test has 118 degrees of freedom, yielding critical values of approximately 1.98 for a two-sided test at the 5% significance level.
# AR with t-statistics for each event
task$get_ar(event_id = 1)| Pros | Cons |
|---|---|
| Tests each day individually | Ignores cumulative effects |
| Identifies exact timing of impact | Multiple testing problem across days |
| Simple interpretation | Sensitive to model choice |
CAR t-test
Tests whether the cumulative abnormal return over the entire event window is significantly different from zero.
The denominator scales by (event window length) because the variance of the sum grows linearly with the number of independent observations.
# CAR with t-statistics
task$get_car(event_id = 1)| Pros | Cons |
|---|---|
| Captures total event impact | Sensitive to window length choice |
| More powerful than single-day AR test | Assumes AR independence over time |
| Standard in the literature | May include confounding events in wide windows |
BHAR t-test
For long-horizon studies (months to years). Uses compounded (buy-and-hold) returns instead of summed abnormal returns.
The key difference from CAR: compounding captures the actual investor experience over long horizons, while summing AR underestimates cumulative returns due to the missing cross-product terms. As demonstrated by Barber and Lyon (1997), CAR-based tests produce biased results for horizons exceeding 12 months, with specification errors of 4% to 8% in 3-year studies, while BHAR tests maintain more accurate size.
# Use BHAR t-test for long-horizon studies
ps <- ParameterSet$new(
single_event_statistics = SingleEventStatisticsSet$new(
tests = list(BHARTTest$new())
)
)| Pros | Cons |
|---|---|
| Captures compounding over long horizons | Not appropriate for short windows |
| Reflects actual investor experience | Standard errors grow with horizon |
| Better for IPO / M&A long-run studies | Sensitive to rebalancing assumptions |
Permutation Test
When residuals violate normality, permutation tests provide exact p-values without distributional assumptions. The idea: if the event has no effect, then the event-window AR should look no different from estimation-window AR.
Algorithm
- Pool all abnormal returns from the estimation window ( observations) and event window ( observations):
- Compute the test statistic (e.g., AR t-test or CAR t-test) on the original data
- Randomly permute without replacement. Recompute on the permuted data
- Repeat times (e.g., )
- The p-value is the fraction of permutations where exceeds :
When to use permutation tests
Use when the Shapiro-Wilk test rejects normality (see Diagnostics), or when the estimation window is short (< 60 days) and asymptotic approximations are unreliable.
References
- Bugni, F. et al. (2023). Permutation-based tests for discontinuities in event studies. Quantitative Economics.
- Nguyen, H. & Wolf, M. A Note on Testing AR and CAR for Event Studies.
How Do I Configure Single-Event Tests?
# Default: AR t-test + CAR t-test
ps <- ParameterSet$new()
# Add BHAR t-test
ps <- ParameterSet$new(
single_event_statistics = SingleEventStatisticsSet$new(
tests = list(ARTTest$new(), CARTTest$new(), BHARTTest$new())
)
)
# One-sided test (positive abnormal returns only)
ps <- ParameterSet$new(
single_event_statistics = SingleEventStatisticsSet$new(
tests = list(
ARTTest$new(confidence_type = "one-sided"),
CARTTest$new(confidence_type = "one-sided")
)
)
)
# Custom confidence level
ps <- ParameterSet$new(
single_event_statistics = SingleEventStatisticsSet$new(
tests = list(ARTTest$new(confidence_level = 0.99))
)
)Literature
- Campbell, J.Y., Lo, A.W. & MacKinlay, A.C. (1997). The Econometrics of Financial Markets. Chapter 4.
- Kolari, J.W. & Pynnonen, S. (2010). Event Studies for Financial Research.
Run this in R
The EventStudy R package lets you run these calculations programmatically with full control over parameters.
What Should I Read Next?
- AAR & CAAR Test Statistics — multi-event significance tests
- Test Statistics Overview — which test to choose
- Diagnostics & Export — validate model fit