Event Study Methodology Guide
An event study is a statistical method that measures the impact of a specific event — such as a merger, earnings announcement, or regulation — on a company's stock price by comparing actual returns to expected returns. It is the standard approach for quantifying market reactions in finance and economics research.
Event studies remain one of the most frequently used empirical tools in financial economics. Since the methodology was formalized in 1969, over 500 event studies are published annually in leading finance and economics journals. The approach provides a direct, market-based measure of how investors assess the economic significance of corporate and regulatory events.
What Does This Guide Cover?
An event study is a quantitative research method used in financial economics to measure the effect of a specific corporate or economic event on the market value of a firm. By comparing observed stock returns to a model-predicted benchmark over a defined event window, researchers isolate abnormal returns attributable to the event. First formalized by Fama, Fisher, Jensen, and Roll in 1969, the methodology remains the standard tool for causal inference in capital markets research.
This guide covers the complete event study methodology: from theoretical foundations to practical implementation in R. According to Kothari and Warner (2007), event studies are among the most widely applied empirical methods in finance, with over 500 published studies per year across leading journals. Use the sections below to navigate to the topic you need.
- Abnormal Return (AR)
- The difference between a stock's actual return and its expected return predicted by a benchmark model. A positive AR indicates the event increased firm value; a negative AR indicates value destruction.
- Event Window
- The time period around the event date (e.g., [-1, +1] for 3 trading days) during which abnormal returns are measured. Typical short-window studies use 3 to 11 days.
- Estimation Window
- The pre-event period (commonly 120 to 250 trading days) used to estimate the parameters of the expected return model, such as the Market Model's alpha and beta coefficients.
- Applications of Event Studies — M&A, earnings, regulation, ESG, and macro events
- Assumptions — the six conditions required for valid inference
- Return Calculation — simple vs. log returns
- Expected Return Models — all 15 models from Market Model to DCC-GARCH
- Test Statistics Overview — AR, CAR, AAR, CAAR and when to use each
- AR & CAR Tests — single-event significance testing
- AAR & CAAR Tests — multi-event significance testing
- Variance-Based Tests — handling event-induced volatility
- Panel Event Studies — Difference-in-Differences with staggered treatment
- Synthetic Control — counterfactual estimation for single treated units
- Intraday Event Studies — minute-level analysis for fast-moving events
- Inference & Robustness — wild bootstrap and multiple testing corrections
- Power Analysis — Monte Carlo simulation for study design
- Diagnostics & Export — validation, plotting, and publication-ready output
- Cross-Sectional Regression — determinants of abnormal returns
- Customization — adapting the methodology for specialized questions
How Do I Run an Event Study in R?
The EventStudy R package supports all 15 expected return models and 12 test statistics. With an estimation window of 120 trading days and event windows from 3 to 21 days, the package handles over 90% of typical event study configurations out of the box. Install the package from GitHub:
# install.packages("devtools")
devtools::install_github("sipemu/eventstudy")1. Prepare Your Data
You need three data frames: firm stock prices, a market index, and an event request table.
library(EventStudy)
# Firm stock prices (columns: symbol, date, adjusted)
firm_data <- tibble(
symbol = rep(c("AAPL", "MSFT"), each = 5),
date = rep(c("01.01.2020", "02.01.2020", "03.01.2020",
"06.01.2020", "07.01.2020"), 2),
adjusted = c(100, 101.2, 99.8, 102.5, 103.1,
50, 50.5, 49.9, 51.2, 51.8)
)The date format is DD.MM.YYYY. Each row has a stock symbol, date, and adjusted closing price.
# Market index (same structure)
index_data <- tibble(
symbol = "SP500",
date = c("01.01.2020", "02.01.2020", "03.01.2020",
"06.01.2020", "07.01.2020"),
adjusted = c(3200, 3215, 3198, 3240, 3255)
)
# Event request table
request <- tibble(
event_id = 1:2,
firm_symbol = c("AAPL", "MSFT"),
index_symbol = "SP500",
event_date = "03.01.2020",
group = "Tech",
event_window_start = -1,
event_window_end = 1,
shift_estimation_window = -2,
estimation_window_length = 2
)The request table specifies each event: which firm, which index, the event date, and the window parameters.
2. Run the Event Study
Create a task and run the full pipeline in three lines:
task <- EventStudyTask$new(firm_data, index_data, request)
ps <- ParameterSet$new() # default: Market Model + standard tests
task <- run_event_study(task, ps)run_event_study() handles everything: return calculation, model fitting, abnormal returns, and test statistics.
3. View Results
# Abnormal returns for event 1
task$get_ar(event_id = 1)
# Average abnormal returns across all events
task$get_aar()4. Plot
# Cumulative average abnormal returns with confidence intervals
plot_event_study(task, type = "caar")5. Export
Export results for your paper or further analysis:
# Excel workbook
export_results(task, file = "results.xlsx", which = "ar")
# LaTeX table
export_results(task, file = "results.tex", which = "aar")
# Tidy data frame
tidy.EventStudyTask(task, type = "aar")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 Do Next?
- Application of Event Studies — when and why to use event studies
- Expected Return Models — choose between 15 models
- Diagnostics & Export — validate your results