Power Analysis & Simulation

Before running an event study, a natural question arises: will my test detect the effect if it exists? Power analysis via Monte Carlo simulation answers this by generating synthetic data with a known effect, running the event study many times, and counting how often the test correctly rejects the null.

Power analysis prevents wasted research effort by quantifying the likelihood of detecting a true effect before data collection begins. Research by Kothari and Warner (2007) demonstrates that with daily data and a cross-sectional t-test, a sample of 20 firms achieves roughly 50% power to detect a 1% abnormal return, while increasing the sample to 50 firms raises power above 80% at the 5% significance level.

Why Is Power Analysis Important?

Power analysis in event studies is a simulation-based procedure that determines the probability of detecting a true abnormal return of a given magnitude, conditional on sample size, test statistic, and event window design. As demonstrated by Brown and Warner (1985) in their seminal Monte Carlo study, a sample of 20 firms with daily data achieves roughly 50% power to detect a 1% abnormal return using a cross-sectional t-test, while 50 firms raise power above 80%. Power analysis is essential for avoiding underpowered studies that waste resources by being unlikely to detect economically meaningful effects.

QuestionPower Analysis Answers
Is my sample size sufficient?Rejection rate for given N, effect size, and test
Which test is most powerful?Compare rejection rates across test statistics
How large must the effect be?Minimum detectable effect at 80% power
Does window length matter?Power as a function of event window width

Rule of thumb

A study should have at least 80% power (detect the effect 80% of the time when it exists). If power is below 50%, the study is more likely to miss the effect than find it.

How Does Monte Carlo Simulation Work?

Algorithm

  1. Specify a data-generating process (DGP): Define how stock returns are generated, including the abnormal return you want to detect.
  2. Simulate many datasets: Generate SS synthetic datasets from the DGP.
  3. Run the event study on each: Apply your chosen model and test statistic.
  4. Count rejections: The fraction of simulations where the test rejects H0H_0 is the estimated power.

Running in R

Monte Carlo power analysis
# Power analysis: can we detect a 1% abnormal return with 20 firms?
sim_result <- simulate_event_study(
  n_events = 20,
  n_simulations = 500,
  abnormal_return = 0.01,
  estimation_window_length = 120,
  event_window = c(-2, 2),
  alpha = 0.05
)
sim_result

Parameters

Simulation Parameters

ParameterDescriptionDefault
n_eventsNumber of events (firms) in each simulation20
n_simulationsNumber of Monte Carlo replications1000
abnormal_returnTrue abnormal return injected at event date0
estimation_window_lengthLength of estimation window (trading days)120
event_windowEvent window as c(start, end)c(-5, 5)
alphaSignificance level0.05
return_modelModel to use (e.g., MarketModel$new())Market Model
test_statisticTest to evaluate (e.g., "CSectT")"CSectT"
dgp_paramsData-generating process parameters (list)list()

How Do I Interpret Power Curves?

Power curves plot rejection rates against a varying design parameter. Typical event studies achieve 80% power with 30–50 firms for a 1% abnormal return, but require 100+ firms to detect a 0.5% effect. Vary one parameter at a time to see how power changes:

Power by sample size
# Power as a function of sample size
sizes <- c(10, 20, 30, 50, 100)
power_by_n <- sapply(sizes, function(n) {
  sim <- simulate_event_study(
    n_events = n,
    n_simulations = 500,
    abnormal_return = 0.01
  )
  sim$power
})

data.frame(n_events = sizes, power = round(power_by_n, 3))
Power by effect size
# Power as a function of effect size
effects <- c(0.005, 0.01, 0.015, 0.02, 0.03)
power_by_effect <- sapply(effects, function(ar) {
  sim <- simulate_event_study(
    n_events = 30,
    n_simulations = 500,
    abnormal_return = ar
  )
  sim$power
})

data.frame(abnormal_return = effects, power = round(power_by_effect, 3))

What Is Size Analysis?

Under the null (AR=0AR = 0), the rejection rate should equal α\alpha. If it exceeds α\alpha, the test over-rejects (inflated Type I error). According to Brown and Warner (1985), well-specified tests should produce rejection rates between 4% and 6% at the 5% nominal level across 1,000 simulations, while poorly specified tests can over-reject at rates of 10–25%.

Size check under H0
# Size check: rejection rate under H0
size_result <- simulate_event_study(
  n_events = 30,
  n_simulations = 1000,
  abnormal_return = 0,  # No effect
  alpha = 0.05
)
# Should be close to 0.05
size_result$rejection_rate

Interpreting Size Analysis

OutcomeInterpretationAction
Rejection rate ≈ 0.05Test is correctly sizedSafe to use
Rejection rate >> 0.05Test over-rejectsUse a robust alternative (e.g., BMP, Rank)
Rejection rate << 0.05Test is conservativeLower power, but valid
Statistical Power
The probability that a test correctly rejects the null hypothesis when the alternative is true (i.e., when a real abnormal return exists). A study with 80% power has a 20% chance of a Type II error (missing a true effect).
Minimum Detectable Effect (MDE)
The smallest abnormal return that can be detected at 80% power given the sample size, volatility, and event window. For typical daily stock returns with 3% annualized volatility, the MDE with 30 firms is approximately 0.8%.
Data-Generating Process (DGP)
The statistical model used to simulate synthetic returns in Monte Carlo experiments, specifying the distribution of normal returns, the abnormal return magnitude, and the variance structure.

Design Recommendations

Design ChoiceImpact on PowerRecommendation
More firmsHigher powerAim for N ≥ 30
Longer estimation windowBetter variance estimateUse 120+ days
Narrower event windowLess noiseUse [-1, +1] unless theory suggests wider
Lower σ (less volatile stocks)Higher powerNo control, but be aware of differences
BMP or Rank testHigher power under non-normalityUse when residuals are non-normal

Literature

  • Brown, S.J. & Warner, J.B. (1985). Using daily stock returns: The case of event studies. Journal of Financial Economics, 14(1), 3–31.
  • Kolari, J.W. & Pynnönen, S. (2010). Event Studies for Financial Research.
  • Campbell, J.Y., Lo, A.W. & MacKinlay, A.C. (1997). The Econometrics of Financial Markets. Chapter 4.

Implement this with the R package

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

What Should I Read Next?

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